CVE-2026-61554
emp3r0r has an unauthenticated HTTP Polling DoS
emp3r0r is a C2 designed by Linux users for Linux environments. Prior to version 4.2.5, the http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing. Version 4.2.5 patches the issue.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
emp3r0r has an unauthenticated HTTP Polling DoS
emp3r0r is a C2 designed by Linux users for Linux environments. Prior to version 4.2.5, the http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing. Version 4.2.5 patches the issue.
- Record
CVE-2026-61554- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2026-79996
7.5
emp3r0r is a C2 designed by Linux users for Linux environments. Prior to version 4.2.5, the http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing. Version 4.2.5 patches the issue.
- Record
EUVD-2026-79996- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-4595-rvpx-4q34
7.5
emp3r0r has an unauthenticated HTTP Polling DoS
Summary
The http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing.
Details
The plain HTTP C2 server starts the HTTP polling listener and forwards requests into HandleHTTPServerSession:
// core/internal/cc/server/c2_http_server.go
mux.HandleFunc(c2Path, func(w http.ResponseWriter, req *http.Request) {
stream, err := transport.HandleHTTPServerSession(w, req, &live.RuntimeConfig.MalleableC2)
...
if stream != nil {
go cborStreamAccept(transport.NewStreamTransport(stream, req.RemoteAddr))
}
})
The HTTP polling handler accepts an attacker-supplied sessionID and init=1 cookie, then creates and stores a server-side stream before authentication:
// core/internal/transport/c2channel_http.go
if isInit {
stream = newHTTPServerStream(sessionID)
w.WriteHeader(http.StatusOK)
return stream, nil
}
POST bodies for that unauthenticated session are read and queued before CBOR authentication rejects them:
// core/internal/transport/c2channel_http.go
case http.MethodPost:
data, err := io.ReadAll(req.Body)
if err == nil && len(data) > 0 {
select {
case stream.readCh <- data:
w.WriteHeader(http.StatusOK)
...
}
}
Authentication only happens later in the C2 dispatch layer:
// core/internal/cc/server/dispatcher.go
secureConn := transport.NewSecureConn(t)
...
n, err := secureConn.Read(authFrame)
PoC
- Start the C2 server in a lab environment with the HTTP polling transport exposed, for example with
--http-port 12345. - Send an unauthenticated HTTP POST to the default polling path
/api/v1/telemetrywith a randomsessionIDcookie and theinit=1cookie value. - Send a second unauthenticated HTTP POST to
/api/v1/telemetryusing the samesessionID, with a request body containing repeatedAbytes. - Observe that both unauthenticated requests return HTTP
200. - Observe the C2 server log showing attacker-controlled bytes reaching the encrypted C2 frame parser, for example:
read: invalid encrypted chunk length: 1094795585. 1094795585is0x41414141, which corresponds toAAAA, confirming unauthenticated request body data reachedcborProtocolDispatchbefore CBORMsgAuthauthentication.- Repeat the request sequence concurrently to increase server resource usage and log volume.
Impact
- Remote unauthenticated attackers can create arbitrary HTTP polling sessions.
- Attacker-controlled request bodies reach pre-auth C2 dispatch handling.
- Repeated requests can consume server memory, goroutines, request handling capacity, and log volume.
- C2 service availability and operator reliability may be degraded under sustained traffic.
Remediation
- Require authentication before creating long-lived HTTP polling sessions.
- Do not forward request bodies into the C2 stream before validation.
- Add strict request body limits.
- Record
GHSA-4595-rvpx-4q34- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
NVD
7.5
emp3r0r is a C2 designed by Linux users for Linux environments. Prior to version 4.2.5, the http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing. Version 4.2.5 patches the issue.
- Record
CVE-2026-61554- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSV
7.5
emp3r0r has an unauthenticated HTTP Polling DoS
emp3r0r is a C2 designed by Linux users for Linux environments. Prior to version 4.2.5, the http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing. Version 4.2.5 patches the issue.
- Record
CVE-2026-61554- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVGHSA-4595-rvpx-4q34
7.5
emp3r0r has an unauthenticated HTTP Polling DoS
Summary
The http_poll C2 transport accepts attacker-controlled HTTP polling sessions before CBOR MsgAuth authentication is completed. A remote unauthenticated attacker can create arbitrary polling sessions and send request bodies that are forwarded into the C2 dispatch path. This can consume server resources and trigger pre-auth C2 processing.
Details
The plain HTTP C2 server starts the HTTP polling listener and forwards requests into HandleHTTPServerSession:
// core/internal/cc/server/c2_http_server.go
mux.HandleFunc(c2Path, func(w http.ResponseWriter, req *http.Request) {
stream, err := transport.HandleHTTPServerSession(w, req, &live.RuntimeConfig.MalleableC2)
...
if stream != nil {
go cborStreamAccept(transport.NewStreamTransport(stream, req.RemoteAddr))
}
})
The HTTP polling handler accepts an attacker-supplied sessionID and init=1 cookie, then creates and stores a server-side stream before authentication:
// core/internal/transport/c2channel_http.go
if isInit {
stream = newHTTPServerStream(sessionID)
w.WriteHeader(http.StatusOK)
return stream, nil
}
POST bodies for that unauthenticated session are read and queued before CBOR authentication rejects them:
// core/internal/transport/c2channel_http.go
case http.MethodPost:
data, err := io.ReadAll(req.Body)
if err == nil && len(data) > 0 {
select {
case stream.readCh <- data:
w.WriteHeader(http.StatusOK)
...
}
}
Authentication only happens later in the C2 dispatch layer:
// core/internal/cc/server/dispatcher.go
secureConn := transport.NewSecureConn(t)
...
n, err := secureConn.Read(authFrame)
PoC
- Start the C2 server in a lab environment with the HTTP polling transport exposed, for example with
--http-port 12345. - Send an unauthenticated HTTP POST to the default polling path
/api/v1/telemetrywith a randomsessionIDcookie and theinit=1cookie value. - Send a second unauthenticated HTTP POST to
/api/v1/telemetryusing the samesessionID, with a request body containing repeatedAbytes. - Observe that both unauthenticated requests return HTTP
200. - Observe the C2 server log showing attacker-controlled bytes reaching the encrypted C2 frame parser, for example:
read: invalid encrypted chunk length: 1094795585. 1094795585is0x41414141, which corresponds toAAAA, confirming unauthenticated request body data reachedcborProtocolDispatchbefore CBORMsgAuthauthentication.- Repeat the request sequence concurrently to increase server resource usage and log volume.
Impact
- Remote unauthenticated attackers can create arbitrary HTTP polling sessions.
- Attacker-controlled request bodies reach pre-auth C2 dispatch handling.
- Repeated requests can consume server memory, goroutines, request handling capacity, and log volume.
- C2 service availability and operator reliability may be degraded under sustained traffic.
Remediation
- Require authentication before creating long-lived HTTP polling sessions.
- Do not forward request bodies into the C2 stream before validation.
- Add strict request body limits.
- Record
GHSA-4595-rvpx-4q34- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVGO-2026-6487 No score
emp3r0r has an unauthenticated HTTP Polling DoS in github.com/jm33-m0/emp3r0r/core
emp3r0r has an unauthenticated HTTP Polling DoS in github.com/jm33-m0/emp3r0r/core
- Record
GO-2026-6487- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/jm33-m0/emp3r0r/coreGo |
before 0.0.0-20260531142011-aed3d81641ab | 0.0.0-20260531142011-aed3d81641ab |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-61554 is a high vulnerability (CVSS 7.5) in Jm33-m0 Emp3r0r, published September 15, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.71%, the 53rd percentile. Fixed in github.com/jm33-m0/emp3r0r/core 0.0.0-20260531142011-aed3d81641ab.