GHSA-f5p9-j34q-pwcc

Suggest an improvement
Source
https://github.com/advisories/GHSA-f5p9-j34q-pwcc
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-f5p9-j34q-pwcc/GHSA-f5p9-j34q-pwcc.json
JSON Data
https://api.test.osv.dev/v1/vulns/GHSA-f5p9-j34q-pwcc
Aliases
Published
2026-02-17T21:27:58Z
Modified
2026-02-23T21:26:27Z
Severity
  • 7.0 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H CVSS Calculator
Summary
emp3r0r Affected by Concurrent Map Access DoS (panic/crash)
Details

Summary

Multiple shared maps are accessed without consistent synchronization across goroutines. Under concurrent activity, Go runtime can trigger fatal error: concurrent map read and map write, causing C2 process crash (availability loss).

Vulnerable Component(with code examples)

Operator relay map had mixed access patterns (iteration and mutation without a single lock policy):

// vulnerable pattern (operator session map)
for sessionID, op := range OPERATORS { // iteration path
    ...
}

// concurrent mutation path elsewhere
OPERATORS[operatorSession] = &operator_t{...}
delete(OPERATORS, operatorSession)

Port-forwarding session map had read/write paths guarded inconsistently:

// vulnerable pattern (port forward map)
if sess, ok := PortFwds[id]; ok { // read path
    ...
}

PortFwds[id] = newSession // write path
delete(PortFwds, id)      // delete path

FTP stream map similarly mixed concurrent iteration with mutation:

// vulnerable pattern (FTP stream map)
for token, stream := range FTPStreams { // iteration path
    ...
}

FTPStreams[token] = stream // write path
delete(FTPStreams, token)  // delete path

Attack Vector

  1. Attacker (or stress traffic in authenticated flows) triggers high concurrency in normal control paths.
  2. Operator sessions connect/disconnect while message forwarding and file-transfer workflows are active.
  3. Concurrent read/write hits shared maps.
  4. Go runtime panics with concurrent map read/write error.
  5. C2 component exits, producing denial of service.

Proof of Concept

  1. Start C2 server with active operator session(s) in a lab environment.
  2. Generate rapid operator session churn (connect/disconnect loops).
  3. Simultaneously drive agent message tunnel traffic and/or file transfer activity.
  4. Observe crash signature in logs: fatal error: concurrent map read and map write.
  5. Optional: run with race detector in dev build to confirm race locations.

Impact

  • C2 service interruption due to process panic/crash.
  • Operational instability under load or deliberate churn.
  • Repeated crash-restart cycles can degrade command reliability and incident response workflows.
Database specific
{
    "cwe_ids": [
        "CWE-362",
        "CWE-663"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-02-17T21:27:58Z",
    "nvd_published_at": "2026-02-19T20:25:42Z",
    "severity": "HIGH"
}
References

Affected packages

Go / github.com/jm33-m0/emp3r0r/core

Package

Name
github.com/jm33-m0/emp3r0r/core
View open source insights on deps.dev
Purl
pkg:golang/github.com/jm33-m0/emp3r0r/core

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
0.0.0-20260212232424-ea4d074f081d

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-f5p9-j34q-pwcc/GHSA-f5p9-j34q-pwcc.json"