CVE-2026-102479(eclipse / vert.x)

LOWCVSS 5.9 · MEDIUM

Signal is active with 2 mentions in latest observed window

Immediate actions

  • Track advisory updates for patch or workaround availability

Recommended action window: Monitor and triage in normal cycle

NVD description

In Eclipse Vert.x versions [5.0.0,5.0.12] or [5.1.0,5.1.9] or [5.2.0, 5.2.0], the Vert.x HTTP/1.x decoder uses a canonicalization for well known HTTP headers, the canonicalization process interprets well crafted headers as headers of this list, allowing for instance Content-Xength to be interpeted as Content-Length. This can be exploited for request smuggling purpose. The impacted component is io.vertx:vertx-core.

0.0/ 10 priority

Sources & remediation

Weakness type (CWE)
CWE-444

Priority

LOW

Exploitation

NONE

PoC

NONE

Patch

NONE

Momentum

NONE

Are you affected?

If you run products in this scope, you should treat this CVE as relevant to your environment.

  • vert.x

Threat summary

  • 2 mentions across 1 observed day

What's happening

  • 2 total mentions across 1 day

Affected systems

Vendors
Products
vert.x

1 version affected across 1 product

Deep dive

Activity timeline2 mentions / 1d
01122Mentions · 2026-10-28: 210-28
Full discourse2 posts
  • JFrog Security@JFrogSecurity

    One skipped byte -> account takeover. 🚨 Vert.x skips validating the letter 'L', treating `Content-Xength` as a valid `Content-Length` (CVE-2026-102479). JFrog Research weaponized this "byte debt" with a dangling-byte primitive to bypass reverse proxy socket validation, demonstrating end-to-end response poisoning and session fixation behind real reverse proxies. Full exploit mechanics and affected open-source projects in our writeup 👇

    26221143.0K
    6.3K followersView on X
  • DFIR Radar@DFIR_Radar

    CVE-2026-102479 in Eclipse Vert.x HTTP/1.x decoder lets a single misspelled header desync request boundaries, enabling silent request erasure, DoS, and cross-user session fixation against shared reverse proxy connections. Key findings: - The root cause lives in VertxHttpRequestDecoder's length-based header optimization. For 14-byte headers, the decoder checks prefix and suffix only, never byte offset 8. This means Content-Xength is silently treated as a valid Content-Length, while every tested front-end proxy (Nginx, HAProxy, Envoy, Traefik, Caddy, Apache httpd, nghttpx) ignores it as an unknown custom header. No conflicting Transfer-Encoding needed, just one misspelled header is enough to split request framing between the two layers. - The attack chain progresses in three stages. First, a Content-Xength header with no body causes Vert.x to wait for bytes the proxy never sends, hanging threads for DoS. Second, the "double-desync" technique borrows from published HTTP/1.1 desync research: request A opens the byte debt, request B carries hidden spliced requests C and D inside its body, and the backend serves C's response to the attacker while D sits orphaned in the socket. Third, the dangling byte technique is the breakthrough: D is left one byte short of its declared body, so no response fires immediately, the proxy's socket check sees a clean buffer, returns the connection to the pool, and the next real visitor's first byte satisfies D's debt, causing the backend to fire D's response at them. - The practical impact demonstrated end to end is cross-user session fixation. Request D is crafted as a POST /login using attacker-controlled credentials. An unsuspecting visitor with no cookies receives the resulting 303 redirect setting a session cookie for the attacker's account, dropping them silently into that account's data. Against a 16-connection pool, roughly 25 to 35 percent of subsequent traffic is poisoned. The same primitive enables injecting reflected XSS payloads into innocent users browsing normally, and forced redirects to attacker-controlled phishing pages via any redirect parameter, all without requiring the victim to click anything. - Affected versions are vertx-core 5.0.0 through 5.0.12, 5.1.0 through 5.1.9, and 5.2.0 only. The fix lands in 5.1.10 and 5.2.1 via a canonicalization correction in the header parser. The JFrog report confirmed PoCs against strimzi/strimzi-kafka-bridge (0.33.0), apache/camel-quarkus, and TechEmpower/FrameworkBenchmarks when deployed behind a front-end proxy. vertx-core carries over 300 million cumulative Maven downloads, but the exposure window is limited to those three modern 5.x release bands. - Detection opportunity is narrow at the network layer because the malicious header looks like an ordinary custom header to any proxy log. The evidence to hunt is behavioral: look for backend connections that close without completing a response cycle, unexpected 303 redirects setting session cookies on requests that carried none, and any log entries where a login endpoint responds to a request that originated from a connection the proxy had marked idle. Application-layer logs showing session cookies assigned to accounts that did not authenticate in that same request cycle are the strongest indicator of exploitation in progress. Patch to io.vertx:vertx-core 5.1.10 or 5.2.1 immediately if you deployed any 5.x release before those versions behind a reverse proxy. If you cannot patch now, audit backend connection pool logs for hung connections and review session creation events for cookies issued without a corresponding authentication event in the same connection context. #DFIR_Radar

    10010151
    2.1K followersView on X
CPE platform detail2 entries

2 of 2 entries

PartVendorProductVersionTarget SWTarget HW
Appeclipsevert.x---
Appeclipsevert.x5.2.0--

Explore more