Sep 16, 2026·6 min read·6 visits
Unauthenticated pre-authentication resource allocation in the http_poll transport allows remote attackers to cause a Denial of Service (DoS) in the emp3r0r C2 server by sending floods of arbitrary HTTP requests.
CVE-2026-61554 is a high-severity uncontrolled resource consumption vulnerability in the http_poll transport component of the emp3r0r Command and Control (C2) framework. In affected versions prior to 4.2.5, the C2 server allocates session tracking resources, spawns execution routines, and routes incoming unauthenticated request bodies into the core dispatch engine before verifying the client's cryptographic authentication token. This logical ordering flaw allows unauthenticated remote attackers to exhaust critical host system resources and trigger a sustained denial of service.
The emp3r0r Command and Control (C2) framework is designed for post-exploitation management of compromised endpoints, with a primary focus on Linux environments. To evade egress detection and circumvent perimeter firewalls, the framework supports multiple modular transport layers. Among these, the HTTP polling transport (http_poll) operates as a stateless, unidirectional beaconing receiver that periodically handles inbound connections from deployed agents.
In a standard C2 lifecycle, security depends entirely on robust cryptography and cryptographic isolation. Agents must authenticate using a unique, signature-based identity scheme before the server performs operations or executes commands. However, the connection-handling sequence of the http_poll listener contains an architectural flow control vulnerability.
Prior to version 4.2.5, the server is designed to process and route raw HTTP request data before executing the gatekeeping authentication checks. This structure exposes a broad attack surface, enabling unauthenticated remote actors to interact directly with internal processing queues and exhaust central system resources.
The vulnerability stems from a logical ordering flaw during connection intake. When a remote client initiates an HTTP POST request to the server's polling route, the server is expected to validate the agent's identity. This validation uses a Concise Binary Object Representation (CBOR) payload containing a MsgAuth structure, which carries the agent's cryptographic signature.
Instead of verifying this cryptographic signature at the edge of the transport layer, the vulnerable server executes several resource-intensive operations first. The handler instantiates a session tracking context, allocates memory buffers, and spawns a dedicated Go goroutine to handle the incoming data stream. Following this allocation, the server extracts the raw request body and routes it directly into the core dispatch and routing queues.
Because resource allocation occurs before verifying the sender's cryptographic credentials, the server performs expensive data transport and parsing operations on untrusted data. A remote adversary can continuously send arbitrary payloads without a valid signature. This forces the server into an infinite processing state, resulting in a classic uncontrolled resource consumption condition.
The original code architecture routes incoming requests directly into the core dispatch engine prior to validating client identities. This sequence is illustrated in the diagram below:
Because step 5 occurs late in the pipeline, an attacker can trigger steps 1 through 4 repeatedly without possessing a valid cryptographic key. This creates massive overhead on the Go runtime. The remediation implemented in version 4.2.5 restructures this sequence to validate identity tokens before spawning handlers or allocating session data, blockading the resource exhaustion vector.
// Vulnerable logic flow (conceptual representation)
func handlePollRequest(w http.ResponseWriter, r *http.Request) {
// Allocates session tracking and spawns worker before validation
session := NewSessionContext(r.RemoteAddr)
go func() {
body, _ := io.ReadAll(r.Body)
// Raw routing happens first
coreEngine.Dispatch(session, body)
}()
}
// Patched logic flow in version 4.2.5
func handlePollRequestPatched(w http.ResponseWriter, r *http.Request) {
// Extract and validate token immediately at the boundary
authHeader := r.Header.Get("Authorization")
if !validateCryptographicToken(authHeader) {
w.WriteHeader(http.StatusUnauthorized)
return // Early return blocks resource exhaustion
}
session := NewSessionContext(r.RemoteAddr)
// Proceed to allocate and dispatch
}Exploiting this vulnerability does not require complex configurations, valid encryption keys, or active session handles. The attacker only needs network visibility to the port hosting the http_poll interface of the emp3r0r server. This simplicity of access heightens the operational risk to the C2 infrastructure.
To initiate the attack, an adversary sends a high-concurrency flood of HTTP POST requests targeting the polling handler. Because the server parses the body of every request pre-authentication, sending large, syntactically complex, or intentionally malformed binary data streams amplifies CPU and memory consumption. This puts the Go runtime garbage collector under extreme pressure.
Within a short duration, the server depletes its pool of available file descriptors and exceeds maximum thread limits. Legitimate agents attempting to check in or retrieve commands will experience connection timeouts. The overall command and control infrastructure becomes entirely unresponsive, severing the operator's control over the active agent mesh network.
The CVSS v3.1 score is evaluated at 7.5 (High), reflecting a high impact on availability. While the vulnerability does not lead to direct data exposure, privilege escalation, or arbitrary code execution on the C2 host, it presents a substantial operational risk to the resilience of the deployment.
In a typical operational scenario, a Denial of Service against the central C2 server disrupts communication across the entire implant network. The self-healing Gossip Mesh network utilized by emp3r0r relies on stable exit points to coordinate operations. By rendering the central server unresponsive, the entire coordination capability of the mesh is neutralized.
Additionally, recovery from this state may require manual administrator intervention to restart services or rotate host configurations. If the server is deployed in a dynamic environment without persistent state storage, a forced restart could result in the loss of operational metadata and historical agent session logs.
The definitive remediation for this vulnerability is upgrading the emp3r0r installation to version 4.2.5 or later. The update restructures the connection handler to parse and validate the CBOR MsgAuth payload synchronously at the absolute edge of the incoming request handling routine. This ensures that unauthorized requests are immediately dropped with a 401 Unauthorized status, saving processor cycles and memory.
In scenarios where immediate patching is unfeasible, administrators must deploy network-level compensating controls. Placing the C2 endpoint behind a reverse proxy, such as Nginx or HAProxy, allows for the configuration of strict rate-limiting rules. This setup restricts the number of concurrent connections and request rates acceptable from a single IP address.
Additionally, implementing firewall policies or a Virtual Private Network (VPN) to restrict access to the polling port exclusively to known, trusted egress IP addresses of target networks is highly recommended. Restricting the network footprint minimizes the exposure of the raw socket and mitigates the risk of external discovery and scanning.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
emp3r0r jm33-m0 | < 4.2.5 | 4.2.5 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-400 |
| Attack Vector | Network |
| CVSS v3.1 Score | 7.5 (High) |
| Impact | Denial of Service (DoS) |
| Exploit Status | None/Unproven |
| CISA KEV Status | Not Listed |
The software does not properly control the allocation and maintenance of a limited resource, enabling an actor to influence resource consumption and trigger exhaustion.
CVE-2026-61544 is a high-severity remote Denial of Service (DoS) vulnerability in libp2p-quic, the QUIC transport implementation of the official Rust networking stack for libp2p. It allows unauthenticated remote attackers to trigger an uncaught panic and crash listener applications.
An uncontrolled resource consumption vulnerability in the http4s Ember HTTP/2 server and client implementation leads to unauthenticated heap memory exhaustion and denial of service. The vulnerability stems from deferring frame size validation until the entire declared payload size is buffered.
A constellation of five distinct security flaws (F1 through F5) in `@zereight/mcp-gitlab` prior to version 2.1.30 allows unauthenticated remote access, read-only policy bypasses, DNS rebinding, and denial-of-service via session exhaustion.
A critical security vulnerability has been identified in the @zereight/mcp-gitlab implementation of the Model Context Protocol (MCP) server. Prior to version 2.1.30, the server lacks HTTP Host and Origin header validation on its Streamable HTTP transport interface (/mcp). This security omission permits remote attackers to bypass the Same-Origin Policy (SOP) via a DNS Rebinding attack. Under this vector, an attacker can route malicious API requests to the victim's local or internal MCP server, thereby gaining unauthorized control over the victim's GitLab account and resources.
A critical Server-Side Request Forgery (SSRF) vulnerability in @zereight/mcp-gitlab allows attackers to leak sensitive GitLab Private-Tokens by supplying an arbitrary external hostname via the X-GitLab-API-URL header when dynamic routing is enabled.
A critical memory leak vulnerability exists in the server-side DigestAuth middleware of the http4s library. Due to a logical inversion in the stale-nonce clean-up routine, the internal cache fails to evict stale nonces while prematurely purging fresh ones. Unauthenticated remote attackers can exploit this behavior by repeatedly prompting the server for authentication challenges, leading to unbounded memory consumption and application crashes via a java.lang.OutOfMemoryError.