CVE-2025-11143
Low · 3.7CVSS
3.7
EPSS
0.2%
Published
Mar 5, 2026
CISA due date
—
Cloudanix analysis
Some web applications using Jetty may let specially malformed web addresses slip past access rules if different parts of the system interpret the address differently.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw is caused by inconsistent handling of invalid, unusual, or ambiguous URIs by Eclipse Jetty compared with other URI parsers that may sit in front of or behind it, such as reverse proxies, web application firewalls, API gateways, authentication middleware, routing layers, or application frameworks. If one component normalizes or interprets a request path differently than Jetty or the application using Jetty, security controls that rely on path, route, extension, or blacklist matching may make an incorrect decision. The most likely impact is limited integrity impact through access-control, routing, filter, or blacklist bypass in configurations where multiple components parse the same malformed URI differently. In lower-impact cases, responses or error behavior may reveal implementation details about the server-side parsing stack.
Why it matters to the business
Organizations using Eclipse Jetty may have application security controls that appear to block sensitive routes or disallowed URL patterns but can be bypassed with specially crafted malformed URLs in certain deployments. The CVSS score and EPSS probability are low, there is no CISA KEV listing, and no public exploit maturity is reported, so this is not currently a broad emergency; however, internet-facing applications, APIs, management consoles, and services relying on URL-based allowlists, denylists, authentication exclusions, or proxy-layer enforcement should treat it as a configuration-sensitive risk because a successful bypass can expose restricted functionality or allow unintended requests to reach backend handlers.
How an attack unfolds
An attacker first identifies a Jetty-backed application, often by observing headers, error pages, behavior, or framework fingerprints. They then map which paths are protected or filtered by an upstream component, such as a proxy, WAF, gateway, servlet filter, or custom middleware. The attacker submits deliberately unusual request targets containing ambiguous encodings, malformed percent-encoding, path parameters, dot segments, encoded separators, repeated slashes, backslashes, or other parser edge cases. If the upstream control interprets the URI one way and Jetty or the application interprets it another way, the upstream layer may allow the request while the backend routes it to a restricted resource or handler. Exploitation is highly deployment-dependent and generally requires trial and error because the attacker must find a parser mismatch that aligns with the target application’s routing and security rules.
How to fix it
Upgrade Eclipse Jetty to a vendor-fixed release when available for the affected major/minor line and track Eclipse Jetty security advisories for the exact patched versions, since no fixed versions were provided in the input. Where immediate upgrade is not possible, reduce exposure by enforcing URI normalization and rejection at a single trusted ingress point before requests reach Jetty. Configure reverse proxies, gateways, WAFs, and applications to reject malformed request targets, invalid percent-encoding, encoded path separators where not required, backslashes in paths, path traversal sequences, duplicate or ambiguous slashes, and semicolon path parameters if the application does not need them. Avoid security decisions based only on blacklist matching of raw URLs; prefer positive route allowlists, centralized authentication/authorization in the application, and canonicalized path comparison. Ensure upstream components and Jetty use consistent URI normalization behavior, and add regression tests for protected routes using ambiguous URI variants.
How to confirm the fix worked
Confirm exposure by inventorying services that embed or depend on Eclipse Jetty and identifying any use of proxy, gateway, WAF, servlet filter, or application logic that makes access-control decisions from request paths. Verify the deployed Jetty version against Eclipse’s patched advisory once available. In a non-production test environment, send ambiguous URI variants to protected routes and confirm they are consistently rejected by every layer. Test encoded slashes, encoded dot segments, backslashes, semicolon path parameters, duplicate slashes, absolute-form request targets, and malformed percent-encoding. A successful fix or mitigation should produce uniform 400, 403, or equivalent denial responses before the request reaches protected backend handlers, with no difference between raw and normalized path handling.
Typical attack path
- Identify an application or API endpoint likely served by Eclipse Jetty or a Jetty-based framework.
- Determine which routes, file paths, extensions, or API operations are blocked, authenticated, or filtered by upstream controls.
- Send baseline requests to compare proxy, gateway, WAF, Jetty, and application response behavior.
- Craft malformed or ambiguous URIs using encoded separators, dot segments, backslashes, semicolon path parameters, duplicate slashes, double encoding, or invalid percent-encoding.
- Observe status codes, redirects, error pages, response bodies, timing, or backend-specific errors that indicate different components parsed the URI differently.
- Refine the request until an upstream security decision allows the request while Jetty or the application routes it to a sensitive handler.
- Use the bypass to access restricted functionality, evade URL blacklist rules, or disclose implementation details.
How to detect it
There are no known public exploit indicators or named threat actors associated with this issue from the provided data, so detection should focus on evidence of URI parser probing and successful access to protected resources through malformed request targets. Review reverse proxy, load balancer, WAF, API gateway, Jetty request logs, application access logs, and authentication/authorization logs. Look for requests containing encoded path separators, double-encoded characters, dot-segment traversal, semicolon path parameters, backslashes, invalid percent-encoding, duplicate slashes, or absolute-form URLs, especially when followed by 200, 204, 302, or other successful responses for endpoints that normally require authentication or are blocked. Correlate upstream logs with Jetty/application logs to identify mismatched paths, status codes, or route names for the same request. Investigate sequences where a single source repeatedly varies URL encoding against administrative, API, static file, upload, download, or protected application paths. Also review WAF allow/block decisions where the WAF logged a benign path but the backend application logged a different normalized route.
- %2f
- %2F
- %5c
- %5C
- %2e
- %2E
- %252f
- %252F
- %255c
- %255C
- %252e
- %252E
- ..%2f
- ..%2F
- %2e%2e
- %2E%2E
- %2e%2e%2f
- %2E%2E%2F
- %2e%2e/
- ..;
- ;/
- %3b
- %3B
- //
- \\
- %00
- %u002f
- %u005c
- %c0%af
- %c1%9c
- GET http://
- POST http://
- Invalid URI
- BadMessageException
- Illegal character in path
- Ambiguous URI
- ambiguous path
- Bad Request: invalid URI
What your security team should do
- Inventory all internet-facing and internal applications using Eclipse Jetty, including embedded Jetty in Java services and third-party products.
- Monitor Eclipse Jetty advisories and update to the patched version for the deployed branch as soon as the vendor publishes or confirms fixed releases.
- Prioritize review for services where URL path matching controls authentication, authorization, routing, file access, API allowlists, denylists, or WAF exceptions.
- Add ingress-layer rules to reject malformed or ambiguous URIs that the application does not explicitly require.
- Review proxy, gateway, WAF, and application normalization behavior to ensure security decisions are made on a canonical URI representation.
- Create regression tests for sensitive endpoints using encoded separators, double encoding, dot segments, path parameters, backslashes, and duplicate slashes.
- Search historical access logs for URI normalization probes and unexplained successful responses to malformed requests against protected paths.
- Because EPSS is very low and there is no KEV listing or known public exploit maturity, schedule remediation based on exposure and reliance on URL-based controls rather than treating it as an active mass-exploitation event.
The record
The Jetty URI parser has some key differences to other common parsers when evaluating invalid or unusual URIs. Differential parsing of URIs in systems using multiple components may result in security by-pass. For example a component that enforces a black list may interpret the URIs differently from one that generates a response. At the very least, differential parsing may divulge implementation details.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.eclipse.jetty:jetty-http | 10.0.0 | No fix |
| Maven | org.eclipse.jetty:jetty-http | 11.0.0 | No fix |
| Maven | org.eclipse.jetty:jetty-http | 12.0.0 | 12.0.31 |
| Maven | org.eclipse.jetty:jetty-http | 12.1.0 | 12.1.5 |
| Maven | org.eclipse.jetty:jetty-http | 9.4.0 | No fix |
| Chainguard | akhq | 0 | 0.26.0-r10 |
| Chainguard | apache-hop | 0 | 2.17.0-r3 |
| Chainguard | apache-hop-fips | 0 | 2.17.0-r3 |
| Chainguard | confluent-kafka | 0 | 8.3.0.375-r0 |
| Chainguard | confluent-kafka-jre-bcfips | 0 | 8.3.0.411-r0 |
| Chainguard | dependency-track | 0 | 4.14.0-r0 |
| Chainguard | dependency-track-apiserver | 0 | 4.14.0-r0 |
| Chainguard | dependency-track-bundled | 0 | 4.14.0-r0 |
| Chainguard | kafka-4.0 | 0 | 4.0.2-r1 |
| Chainguard | kafka-4.1 | 0 | 4.1.2-r1 |
| Chainguard | kafka-fips-4.1 | 0 | 4.1.2-r1 |
| Chainguard | neo4j-5.26 | 0 | 5.26.21-r3 |
| Chainguard | solr | 0 | 10.0.0-r1 |
| Chainguard | spark-kubernetes-operator-fips | 0 | 0.7.0-r1 |
| Chainguard | strimzi-kafka-operator-cluster-operator | 0 | 0.51.0-r0 |
| Chainguard | strimzi-kafka-operator-kafka-agent | 0 | 0.51.0-r0 |
| Chainguard | strimzi-kafka-operator-kafka-init | 0 | 0.51.0-r0 |
| Chainguard | strimzi-kafka-operator-topic-operator | 0 | 0.51.0-r0 |
| Chainguard | strimzi-kafka-operator-tracing-agent | 0 | 0.51.0-r0 |
| Chainguard | strimzi-kafka-operator-user-operator | 0 | 0.51.0-r0 |
| Chainguard | zookeeper-3.8 | 0 | 3.8.6-r1 |
| Chainguard | zookeeper-3.9 | 0 | 3.9.5-r0 |
| Chainguard | zookeeper-fips-3.8 | 0 | 3.8.6-r2 |
| Chainguard | zookeeper-fips-3.9 | 0 | 3.9.5-r0 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP7 | jetty-minimal | 0 | 9.4.58-150200.3.37.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | jetty-minimal | 0 | 9.4.58-150200.3.37.1 |
| Wolfi | akhq | 0 | 0.26.0-r10 |
| Wolfi | confluent-kafka | 0 | 8.3.0.375-r0 |
| Wolfi | dependency-track | 0 | 4.14.0-r0 |
| Wolfi | dependency-track-bundled | 0 | 4.14.0-r0 |
| Wolfi | kafka-4.0 | 0 | 4.0.2-r1 |
| Wolfi | kafka-4.1 | 0 | 4.1.2-r1 |
| Wolfi | neo4j-5.26 | 0 | 5.26.21-r3 |
| Wolfi | solr | 0 | 10.0.0-r1 |
| Wolfi | strimzi-kafka-operator-cluster-operator | 0 | 0.51.0-r0 |
| Wolfi | strimzi-kafka-operator-kafka-agent | 0 | 0.51.0-r0 |
| Wolfi | strimzi-kafka-operator-kafka-init | 0 | 0.51.0-r0 |
| Wolfi | strimzi-kafka-operator-topic-operator | 0 | 0.51.0-r0 |
| Wolfi | strimzi-kafka-operator-tracing-agent | 0 | 0.51.0-r0 |
| Wolfi | strimzi-kafka-operator-user-operator | 0 | 0.51.0-r0 |
| Wolfi | zookeeper-3.8 | 0 | 3.8.6-r1 |
| Wolfi | zookeeper-3.9 | 0 | 3.9.5-r0 |
| openSUSE:Leap 15.6 | jetty-minimal | 0 | 9.4.58-150200.3.37.1 |
| openSUSE:Leap 15.6 | jetty-websocket | 0 | 9.4.58-150200.3.37.1 |
| openSUSE:Tumbleweed | jetty-minimal | 0 | 9.4.58-3.1 |
Related vulnerabilities
- CVE-2024-6763 Eclipse Jetty URI parsing of invalid authority Also affects org.eclipse.jetty:jetty-http
- CVE-2026-33871 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-33870 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-24281 Hostname verification in Apache ZooKeeper ZKTrustManager falls back to reverse DNS (PTR)… Also affects akhq
- CVE-2026-24308 Improper handling of configuration values in ZKConfig in Apache ZooKeeper 3.8.5 and 3.9.4… Also affects akhq
- CVE-2025-33042 Improper Control of Generation of Code ('Code Injection') vulnerability in Apache Avro… Also affects akhq
- CVE-2026-1225 ACE vulnerability in configuration file processing by QOS.CH logback-core up to and… Also affects akhq
- CVE-2025-67735 Netty has a CRLF Injection vulnerability in io.netty.handler.codec.http.HttpRequestEncoder Also affects akhq