CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-2332

CVE-2026-2332: HTTP Request Smuggling in Eclipse Jetty via Chunked Extension Quoted-String Parsing

Alon Barad
Alon Barad
Software Engineer

Apr 15, 2026·5 min read·392 visits

Executive Summary (TL;DR)

Jetty incorrectly terminates HTTP/1.1 chunk extension parsing when encountering a newline inside a quoted string, allowing attackers to desynchronize proxies and back-ends to smuggle malicious requests.

Eclipse Jetty's HTTP/1.1 parser contains a state-machine flaw when handling chunked transfer encoding extensions, leading to critical HTTP Request Smuggling via "Funky Chunks" techniques.

Vulnerability Overview

Eclipse Jetty is susceptible to HTTP Request Smuggling (CWE-444) within its HTTP/1.1 parser. The vulnerability targets the parsing logic for chunked transfer encoding, specifically how the parser handles chunk extensions containing quoted strings. This flaw permits an attacker to desynchronize the request stream between a front-end proxy and the Jetty back-end.

The vulnerability is classified as a variant of the "Funky Chunks" exploitation methodology. It exploits ambiguous handling of line terminators within HTTP message bodies. By manipulating the chunk size parameters, an attacker can manipulate how different servers in the request chain interpret the start and end of HTTP requests.

Successful desynchronization occurs because the front-end proxy and the Jetty back-end disagree on the boundaries of the HTTP message. This disagreement allows the injection of a smuggled, secondary request that bypasses edge security controls and is executed directly by the internal application logic.

Root Cause Analysis

According to RFC 9112 and RFC 9110, HTTP/1.1 chunk extensions can encapsulate values within quoted strings. These quoted strings are strictly prohibited from containing raw Carriage Return Line Feed (CRLF) sequences. The vulnerability exists within the state machine of Jetty's HttpParser.java during the CHUNK_PARAMS parsing phase.

When the parser encounters a double quote character, it fails to securely bound the quoted-string state. Instead of rejecting a CRLF sequence encountered within the quotes, or treating it as a literal malformed character, Jetty prioritizes the global search for \r\n. The parser incorrectly interprets the embedded CRLF as the termination of the chunk header.

This premature termination creates a fundamental synchronization discrepancy. An RFC-compliant front-end proxy parses the chunk extension correctly, treating the embedded CRLF as part of a malformed extension and forwarding the payload as a single continuous request. The Jetty back-end stops parsing the chunk header at the first CRLF, interpreting the subsequent bytes as the chunk body and eventually as an entirely new HTTP request.

Code Analysis

The core vulnerability resides in the state-machine execution within HttpParser.java. During the processing of the CHUNK_PARAMS state, Jetty fails to suppress the detection of end-of-line markers when processing a quoted string.

The logic incorrectly prioritizes the structural markers of the HTTP protocol over the encapsulation rules of the quoted string parameter.

// Conceptual representation of the flawed parsing logic in Jetty
while (parsingChunkParams) {
    byte ch = buffer.get();
    if (ch == '"') {
        inQuotedString = !inQuotedString;
    }
    // VULNERABILITY: CRLF check executes regardless of inQuotedString state
    if (ch == '\n') {
        transitionTo(State.CHUNK_BODY);
    }
}

The patched implementations (e.g., in commit 91435debf6bb5b2701e96f2202962ea262d38236) modify this logic to properly track quoted string boundaries. The parser now implements strict validation to reject control characters like CR or LF within a quoted string, aligning the parser with RFC compliance and preventing premature header termination.

Exploitation Methodology

The "Funky Chunks" exploitation technique requires sending a specifically crafted HTTP POST request using chunked transfer encoding. The attacker injects a chunk extension containing an unclosed double quote followed by a raw newline.

POST / HTTP/1.1
Host: vulnerable-app.com
Transfer-Encoding: chunked
 
1;ext="val
X
0
 
GET /smuggled-endpoint HTTP/1.1
Host: internal-service

The proxy forwards this payload as a single request because the chunk extension does not appear properly terminated according to its internal logic. Jetty parses 1;ext="val and terminates the header at the newline.

Jetty reads X as the 1-byte chunk body declared by the hexadecimal 1. The subsequent 0 terminates the chunked stream for the first request, causing Jetty to process the GET /smuggled-endpoint payload as a secondary, smuggled request.

Desynchronization Mechanism

The exploit relies entirely on the behavioral difference between the proxy and the back-end server. The following sequence illustrates the stream interpretation.

The front-end proxy perceives the entire payload as a single, in-flight POST request. The Jetty back-end splits the stream, effectively executing the GET /smuggled-endpoint request in the context of the back-end connection pool.

Impact Assessment

Successful exploitation grants the attacker the ability to bypass front-end security controls, such as Web Application Firewalls (WAF) or access control lists (ACL). The smuggled request is processed directly by the back-end application, evading all edge validation.

Depending on the application routing, this flaw facilitates cache poisoning, cross-user session hijacking, and unauthorized access to restricted endpoints. An attacker can manipulate backend routing to extract sensitive data belonging to other users sharing the same connection pool.

The CVSS 3.1 base score is 7.4 (High), reflecting the significant impact on confidentiality and integrity. The attack complexity is rated High because successful exploitation explicitly requires a specific behavioral differential between the upstream proxy and the Jetty server.

Remediation and Mitigation

Administrators must upgrade Eclipse Jetty to versions 9.4.60, 10.0.28, 11.0.28, 12.0.33, or 12.1.7. These releases contain the corrected state machine logic for parsing HTTP/1.1 chunk extensions, neutralizing the vulnerability at the source.

If immediate patching is unfeasible, administrators can deploy interim mitigations at the proxy layer. Front-end load balancers or WAFs should be configured to strictly normalize HTTP/1.1 chunked requests. Stripping chunk extensions entirely before forwarding the request to the back-end neutralizes this specific exploitation vector.

As a defense-in-depth measure, disabling HTTP/1.1 keep-alive connections between the proxy and the back-end prevents request smuggling entirely. This approach ensures each request utilizes a distinct TCP connection, eliminating the shared stream required for desynchronization, though this incurs a notable performance penalty.

Official Patches

Eclipse FoundationOfficial Jetty Security Advisory GHSA-355h-qmc2-wpwf

Fix Analysis (1)

Technical Appendix

CVSS Score
7.4/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
EPSS Probability
0.03%
Top 91% most exploited

Affected Systems

Eclipse Jetty 9.4.0 - 9.4.59Eclipse Jetty 10.0.0 - 10.0.27Eclipse Jetty 11.0.0 - 11.0.27Eclipse Jetty 12.0.0 - 12.0.32Eclipse Jetty 12.1.0 - 12.1.6Web applications utilizing vulnerable Jetty versions behind a reverse proxy

Affected Versions Detail

Product
Affected Versions
Fixed Version
Eclipse Jetty
Eclipse Foundation
9.4.0 <= version <= 9.4.599.4.60
Eclipse Jetty
Eclipse Foundation
10.0.0 <= version <= 10.0.2710.0.28
Eclipse Jetty
Eclipse Foundation
11.0.0 <= version <= 11.0.2711.0.28
Eclipse Jetty
Eclipse Foundation
12.0.0 <= version <= 12.0.3212.0.33
Eclipse Jetty
Eclipse Foundation
12.1.0 <= version <= 12.1.612.1.7
AttributeDetail
CWE IDCWE-444
Attack VectorNetwork
CVSS v3.1 Score7.4 (High)
EPSS Score0.00031
ImpactHigh Confidentiality, High Integrity
Exploit StatusProof-of-Concept (PoC)
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1139Adversary-in-the-Middle: HTTP Request Smuggling
Initial Access
CWE-444
Inconsistent Interpretation of HTTP Requests

Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')

Known Exploits & Detection

smugchunksScanner and testing toolkit for identifying Funky Chunks vulnerabilities

Vulnerability Timeline

Initial 'Funky Chunks' research published by Jeppe Bonde Weikop
2025-06-18
Addendum to 'Funky Chunks' research published detailing further techniques
2025-10-29
Fixes begin appearing in Jetty SNAPSHOT versions (v12.1.7-SNAPSHOT)
2026-01-27
CVE-2026-2332 officially published and advisories released
2026-04-14

References & Sources

  • [1]Jetty Security Advisory
  • [2]Eclipse CVE Assignment
  • [3]Funky Chunks Research Part 1
  • [4]Funky Chunks Research Part 2
  • [5]CVE Record CVE-2026-2332
  • [6]Jetty Project Commit 91435debf6bb5b2701e96f2202962ea262d38236

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 6 hours ago•CVE-2026-54720
5.4

CVE-2026-54720: Stored Cross-Site Scripting (XSS) via Sandbox Bypass in Silverstripe Framework

CVE-2026-54720 is a stored Cross-Site Scripting (XSS) vulnerability inside the Silverstripe Framework's media shortcode processor. Due to a flawed performance optimization, HTML inputs containing two or fewer opening angle brackets bypassed security sandboxing. This flaw allows authenticated or lower-privileged users to inject administrative panel payloads that execute arbitrary client-side JavaScript when viewed by system administrators.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 7 hours ago•CVE-2026-54713
3.7

CVE-2026-54713: Idempotency Key Collision and Silent Job Dropping in cakephp/queue

An incomplete array comparison vulnerability in cakephp/queue version 0.1.11 through 2.3.0 allows unauthenticated attackers to cause key collisions in unique job deduplication. This is caused by standard array value sorting that discards associative keys, normalizing different payload keys to identical arrays and leading to a denial of service (DoS) by dropping legitimate jobs.

Alon Barad
Alon Barad
2 views•7 min read
•about 8 hours ago•CVE-2026-55558
5.9

CVE-2026-55558: STARTTLS Response Injection in aiosmtplib

An input buffering vulnerability exists in the aiosmtplib asynchronous SMTP client library before version 5.1.2. When upgrading a plaintext connection to TLS via STARTTLS, the library processes buffered plaintext responses after transport negotiation has completed. This behavior allows a network-positioned attacker to inject spoofed server responses prior to negotiation, leading to command/response desynchronization, arbitrary capability injection, and potential credential theft.

Alon Barad
Alon Barad
2 views•6 min read
•about 9 hours ago•CVE-2026-54770
6.1

CVE-2026-54770: Open Redirect via Parser Differential in WebOb

An open redirect vulnerability exists in WebOb before version 1.8.11 due to a parser differential between WebOb's validation logic and Python's standard urllib.parse.urljoin() function. Under Python 3.10+, the urljoin function strips leading and trailing space characters and C0 control characters, which allowed specially crafted inputs to bypass WebOb's prefix checks while still resolving as off-host redirects.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 10 hours ago•CVE-2026-54687
6.1

CVE-2026-54687: Path Traversal via User-Controlled Database File Path in n8n-nodes-sqlite3

Prior to version 1.0.0, the n8n-nodes-sqlite3 integration exposed the db_path parameter as an unrestricted node parameter. By default, n8n node parameters allow the evaluation of dynamic data expressions, meaning untrusted external input could be mapped to the database path. This vulnerability allows an external attacker to control which SQLite database file the n8n backend process attempts to open, leading to directory traversal outside of the intended directory context.

Amit Schendel
Amit Schendel
5 views•5 min read
•about 11 hours ago•CVE-2026-42350
5.1

CVE-2026-42350: Client-Side Open Redirect in Kargo UI OIDC Authentication Flow

A client-side open redirect vulnerability has been identified in the Kargo user interface. The flaw resides in the handling of OpenID Connect (OIDC) login and token renewal flows, where the application extracts an unvalidated destination path from the redirectTo query parameter. Attackers can exploit this to redirect authenticated users to arbitrary external domains.

Alon Barad
Alon Barad
4 views•6 min read