Cloudanix VulnDB

CVE-2024-8184

Medium · 5.9

Eclipse Jetty's ThreadLimitHandler.getRemote() vulnerable to remote DoS attacks

CVSS

5.9

EPSS

1.0%

Published

Oct 14, 2024

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

Attackers can overload affected Jetty-based web services with repeated malicious requests until the service runs out of memory and becomes unavailable.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This vulnerability affects Eclipse Jetty's ThreadLimitHandler.getRemote() logic. An unauthenticated remote client can send repeated crafted HTTP requests that cause Jetty to retain or allocate excessive memory while resolving or tracking remote request information for thread limiting. Sustained exploitation can trigger Java OutOfMemoryError conditions, destabilize the JVM, and make the Jetty-based service stop processing legitimate requests. The impact is availability loss rather than code execution or data disclosure.

Why it matters to the business

Successful exploitation can make Jetty-hosted applications unavailable, causing service outages, failed transactions, degraded customer experience, and operational incident response costs. The CVSS score is moderate and EPSS is currently low, with no CISA KEV listing or known ransomware association, but internet-facing Jetty services remain exposed to low-cost denial-of-service attempts because exploitation does not require authentication. Because Jetty is commonly embedded inside Java products and custom applications, exposure may exist indirectly through packaged software, not only where Jetty is explicitly deployed.

How an attack unfolds

An attacker first identifies an HTTP or HTTPS service backed by a vulnerable Jetty version or by software embedding vulnerable Jetty components. The attacker then repeatedly sends crafted requests designed to exercise the vulnerable ThreadLimitHandler.getRemote() path. Each request contributes to abnormal memory consumption or retention inside the Jetty process. As the request volume continues, heap usage rises, garbage collection becomes increasingly frequent and ineffective, request latency increases, and the JVM may eventually throw OutOfMemoryError. Once memory is exhausted, the service may reject new connections, return 5xx errors, restart repeatedly under a supervisor, or crash until the process is manually recovered or traffic is blocked.

How to fix it

Upgrade Eclipse Jetty to a fixed build that includes commit efe8023327e67287f9bfd006700e6a71d45b5dd6, or to the vendor-released Jetty version containing that fix for the affected release line. For applications that embed Jetty, update the Jetty dependency through the build system and redeploy the application; for third-party products that bundle Jetty, apply the vendor's patched product release. If immediate upgrade is not possible, reduce exposure by restricting access to Jetty services, placing services behind a reverse proxy or WAF with request-rate limits, enforcing per-client connection and request limits, tuning JVM heap and restart behavior to reduce outage duration, and monitoring for abnormal heap growth. Mitigations should be treated as temporary because they do not correct the vulnerable code path.

How to confirm the fix worked

Confirm the deployed Jetty artifact or embedded dependency includes the fixed code from commit efe8023327e67287f9bfd006700e6a71d45b5dd6 or a vendor release that documents this fix. Review dependency manifests such as Maven/Gradle lockfiles, SBOMs, container image package inventories, and application startup logs to identify Jetty versions. Validate that patched artifacts are present in the runtime image, not only in source control. After patching, perform controlled load testing with representative request patterns while monitoring JVM heap, garbage collection, Jetty request handling, and process stability. Exposure can also be checked by inventorying internet-facing HTTP services and correlating them with Jetty fingerprints or application dependency data.

Typical attack path

  1. Discover an exposed HTTP/HTTPS service running Eclipse Jetty or an application embedding Jetty.
  2. Confirm the target uses a vulnerable build or infer vulnerability from banners, behavior, dependency metadata, or product version information.
  3. Generate repeated crafted HTTP requests that reach Jetty's ThreadLimitHandler.getRemote() code path.
  4. Sustain or parallelize the request stream to increase heap pressure and garbage collection activity.
  5. Cause the Jetty JVM to throw OutOfMemoryError or become unresponsive due to memory exhaustion.
  6. Maintain pressure to keep the service unavailable or repeatedly crash it after automatic restart.

How to detect it

To determine whether exploitation already occurred, review application logs, Jetty logs, JVM stderr/stdout, container logs, service manager logs, APM telemetry, reverse-proxy logs, and load balancer metrics for periods of rapid heap growth followed by OutOfMemoryError, long garbage collection pauses, elevated 5xx responses, connection resets, or process restarts. Correlate these events with spikes in repeated HTTP requests from one or more source IPs, unusual request rates, repeated requests to the same endpoints, or requests with abnormal remote-address-related headers if the deployment trusts proxy headers. Look for restart loops in systemd, Kubernetes, Docker, or process supervisors around the same time as memory exhaustion. Because this vulnerability is a denial-of-service condition, evidence is more likely to appear as resource-exhaustion telemetry and request floods than as persistent files, new processes, privilege changes, or malware artifacts.

  • java.lang.OutOfMemoryError
  • OutOfMemoryError: Java heap space
  • OutOfMemoryError
  • GC overhead limit exceeded
  • org.eclipse.jetty.server.handler.ThreadLimitHandler
  • ThreadLimitHandler.getRemote
  • Killed process java
  • OOMKilled
  • ExitCode 137
  • CrashLoopBackOff
  • HTTP 503
  • HTTP 502
  • HTTP 504
  • java.lang.OutOfMemoryError: Java heap space

What your security team should do

  • Prioritize patching internet-facing Jetty services and products that embed Jetty, especially where unauthenticated users can send arbitrary HTTP requests.
  • Update Jetty dependencies to a release containing commit efe8023327e67287f9bfd006700e6a71d45b5dd6 and rebuild/redeploy affected Java applications and containers.
  • Ask third-party vendors whether their products embed vulnerable Jetty versions and obtain patched releases where applicable.
  • Apply temporary rate limiting, connection limiting, and reverse-proxy filtering for exposed services until all affected Jetty runtimes are patched.
  • Enable JVM and Jetty health monitoring for heap usage, garbage collection pressure, request rates, 5xx responses, and process restarts.
  • Search historical logs and monitoring data for unexplained OutOfMemoryError events, heap exhaustion, restart loops, and request floods against Jetty-backed services.
  • Keep the vulnerability on a standard remediation timeline rather than emergency KEV handling unless local exposure is high or active exploitation is observed.

The record

There exists a security vulnerability in Jetty's `ThreadLimitHandler.getRemote()` which can be exploited by unauthorized users to cause remote denial-of-service (DoS) attack. By repeatedly sending crafted requests, attackers can trigger OutofMemory errors and exhaust the server's memory.

Affected packages

Ecosystem Package Introduced Fixed
Maven org.eclipse.jetty:jetty-server 10.0.0 10.0.24
Maven org.eclipse.jetty:jetty-server 11.0.0 11.0.24
Maven org.eclipse.jetty:jetty-server 12.0.0 12.0.9
Maven org.eclipse.jetty:jetty-server 9.3.12 9.4.56
Chainguard apache-hop 0 2.16.0-r0
Chainguard apache-hop-fips 0 2.16.0-r0
Chainguard apache-nifi 0 2.3.0-r0
Chainguard apache-nifi-compat 0 2.3.0-r0
Chainguard apache-nifi-toolkit 0 2.3.0-r0
Chainguard apache-tika-2.9 0 2.9.2-r1
Chainguard apache-tika-2.9-compat 0 2.9.2-r1
Chainguard cassandra-reaper 0 4.0.1-r1
Chainguard cassandra-reaper-jre-bcfips 0 3.7.1-r1
Chainguard cloudwatch-exporter 0 0.16.0-r1
Chainguard confluent-kafka 0 8.0.0.29-r0
Chainguard confluent-kafka-jre-bcfips 0 8.0.0.41-r0
Chainguard druid 0 31.0.0-r1
Chainguard druid-compat 0 31.0.0-r1
Chainguard jenkins-2.452 0 2.452.4-r4
Chainguard jenkins-2.462 0 2.462.3-r0
Chainguard kafka-3.7 0 3.7.1-r2
Chainguard kafka-3.8 0 3.8.1-r46
Chainguard kafka-bitnami-compat-3.7 0 3.7.1-r2
Chainguard kafka-jre-bcfips 0 3.8.0-r3
Chainguard kafka-strimzi-compat 0 0.45.0-r1
Chainguard kafka_exporter-strimzi-compat 0 0.45.0-r1
Chainguard neo4j 0 5.25.1-r0
Chainguard neo4j-oci-entrypoint 0 5.25.1-r0
Chainguard prometheus-jmx-exporter-strimzi-compat 0 0.45.0-r1
Chainguard solr 0 9.7.0-r1
Chainguard solr-oci-compat 0 9.7.0-r1
Chainguard spark-3.4 0 3.4.4-r0
Chainguard spark-3.4-bitnami-compat 0 3.4.4-r0
Chainguard spark-3.4-compat 0 3.4.4-r0
Chainguard spark-3.4-minimal 0 3.4.4-r0
Chainguard spark-3.4-minimal-openjdk-11 0 3.4.4-r0
Chainguard spark-3.4-minimal-openjdk-17 0 3.4.4-r0
Chainguard spark-3.4-minimal-openjdk-8 0 3.4.4-r0
Chainguard spark-3.4-openjdk-11 0 3.4.4-r0
Chainguard spark-3.4-openjdk-17 0 3.4.4-r0
Chainguard spark-3.4-openjdk-8 0 3.4.4-r0
Chainguard spark-3.5 0 3.5.3-r4
Chainguard spark-3.5 0 3.5.7-r2
Chainguard spark-3.5-bitnami-compat 0 3.5.3-r4
Chainguard spark-3.5-compat 0 3.5.3-r4
Chainguard spark-3.5-minimal-openjdk-11 0 3.5.3-r4
Chainguard spark-3.5-minimal-openjdk-17 0 3.5.3-r4
Chainguard spark-3.5-minimal-openjdk-8 0 3.5.3-r4
Chainguard spark-3.5-openjdk-11 0 3.5.3-r4
Chainguard spark-3.5-openjdk-17 0 3.5.3-r4
Chainguard spark-3.5-openjdk-8 0 3.5.3-r4
Chainguard spark-3.5-scala-2.12 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13-compat 0 3.5.7-r2
Chainguard strimzi-kafka-operator 0 0.45.0-r1
Chainguard strimzi-kafka-operator-cluster-operator 0 0.45.0-r1
Chainguard strimzi-kafka-operator-kafka-agent 0 0.45.0-r1
Chainguard strimzi-kafka-operator-kafka-agent-3 0 0.45.0-r1
Chainguard strimzi-kafka-operator-kafka-base 0 0.45.0-r1
Chainguard strimzi-kafka-operator-kafka-init 0 0.45.0-r1
Chainguard strimzi-kafka-operator-kafka-thirdparty-libs 0 0.45.0-r1
Chainguard strimzi-kafka-operator-kafka-thirdparty-libs-cc 0 0.45.0-r1
Chainguard strimzi-kafka-operator-mirror-maker-agent 0 0.45.0-r1
Chainguard strimzi-kafka-operator-topic-operator 0 0.45.0-r1
Chainguard strimzi-kafka-operator-tracing-agent 0 0.45.0-r1
Chainguard strimzi-kafka-operator-user-operator 0 0.45.0-r1
Chainguard webswing 0 24.2.2-r1
Chainguard zookeeper-3.8 0 3.8.4.0-r6
Chainguard zookeeper-3.8-compat 0 3.8.4-r0
Chainguard zookeeper-3.8-iamguarded-compat 0 3.8.4.0-r6
Chainguard zookeeper-3.9 0 3.9.3.2-r0
Chainguard zookeeper-3.9 0 3.9.3-r0
Chainguard zookeeper-3.9-iamguarded-compat 0 3.9.3-r0
Chainguard zookeeper-bitnami-3.8-compat 0 3.8.4.0-r6
Chainguard zookeeper-bitnami-3.9-compat 0 3.9.3.2-r0
Chainguard zookeeper-bitnami-3.9-compat 0 3.9.3-r0
Chainguard zookeeper-fips-3.9 0 3.9.3.1-r1
Chainguard zookeeper-fips-3.9-policy-140-2 0 3.9.3.1-r1
Chainguard zookeeper-fips-3.9-policy-140-3 0 3.9.3.1-r1
Debian:11 jetty9 0 No fix
Debian:11 jetty9 0 9.4.57-0+deb11u1
Debian:12 jetty9 0 No fix
Debian:12 jetty9 0 9.4.57-0+deb12u1
Debian:13 jetty9 0 9.4.56-1
SUSE:Linux Enterprise Module for Development Tools 15 SP5 jetty-minimal 0 9.4.56-150200.3.28.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 jetty-minimal 0 9.4.56-150200.3.28.1
SUSE:Linux Enterprise Module for Package Hub 15 SP6 jetty-minimal 0 9.4.56-150200.3.28.1
Ubuntu:14.04:LTS jetty 0 No fix
Ubuntu:16.04:LTS jetty 0 No fix
Ubuntu:Pro:14.04:LTS jetty 0 No fix
Ubuntu:Pro:16.04:LTS jetty 0 No fix
Wolfi apache-nifi 0 2.3.0-r0
Wolfi apache-nifi-compat 0 2.3.0-r0
Wolfi apache-nifi-toolkit 0 2.3.0-r0
Wolfi cassandra-reaper 0 4.0.1-r1
Wolfi cloudwatch-exporter 0 0.16.0-r1
Wolfi confluent-kafka 0 8.0.0.29-r0
Wolfi druid 0 31.0.0-r1
Wolfi druid-compat 0 31.0.0-r1
Wolfi kafka-3.8 0 3.8.1-r46
Wolfi kafka-strimzi-compat 0 0.45.0-r1
Wolfi kafka_exporter-strimzi-compat 0 0.45.0-r1
Wolfi neo4j 0 5.25.1-r0
Wolfi neo4j-oci-entrypoint 0 5.25.1-r0
Wolfi prometheus-jmx-exporter-strimzi-compat 0 0.45.0-r1
Wolfi solr 0 9.7.0-r1
Wolfi solr-oci-compat 0 9.7.0-r1
Wolfi spark-3.5 0 3.5.3-r4
Wolfi spark-3.5 0 3.5.7-r2
Wolfi spark-3.5-bitnami-compat 0 3.5.3-r4
Wolfi spark-3.5-compat 0 3.5.3-r4
Wolfi spark-3.5-minimal-openjdk-11 0 3.5.3-r4
Wolfi spark-3.5-minimal-openjdk-17 0 3.5.3-r4
Wolfi spark-3.5-minimal-openjdk-8 0 3.5.3-r4
Wolfi spark-3.5-openjdk-11 0 3.5.3-r4
Wolfi spark-3.5-openjdk-17 0 3.5.3-r4
Wolfi spark-3.5-openjdk-8 0 3.5.3-r4
Wolfi spark-3.5-scala-2.12 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13-compat 0 3.5.7-r2
Wolfi strimzi-kafka-operator 0 0.45.0-r1
Wolfi strimzi-kafka-operator-cluster-operator 0 0.45.0-r1
Wolfi strimzi-kafka-operator-kafka-agent 0 0.45.0-r1
Wolfi strimzi-kafka-operator-kafka-agent-3 0 0.45.0-r1
Wolfi strimzi-kafka-operator-kafka-base 0 0.45.0-r1
Wolfi strimzi-kafka-operator-kafka-init 0 0.45.0-r1
Wolfi strimzi-kafka-operator-kafka-thirdparty-libs 0 0.45.0-r1
Wolfi strimzi-kafka-operator-kafka-thirdparty-libs-cc 0 0.45.0-r1
Wolfi strimzi-kafka-operator-mirror-maker-agent 0 0.45.0-r1
Wolfi strimzi-kafka-operator-topic-operator 0 0.45.0-r1
Wolfi strimzi-kafka-operator-tracing-agent 0 0.45.0-r1
Wolfi strimzi-kafka-operator-user-operator 0 0.45.0-r1
Wolfi zookeeper-3.8 0 3.8.4.0-r6
Wolfi zookeeper-3.9 0 3.9.3.2-r0
Wolfi zookeeper-3.9 0 3.9.3-r0
Wolfi zookeeper-3.9-iamguarded-compat 0 3.9.3-r0
Wolfi zookeeper-bitnami-3.8-compat 0 3.8.4.0-r6
Wolfi zookeeper-bitnami-3.9-compat 0 3.9.3.2-r0
Wolfi zookeeper-bitnami-3.9-compat 0 3.9.3-r0
maven org.eclipse.jetty/jetty-server 10.0.0 10.0.24
maven org.eclipse.jetty/jetty-server 11.0.0 11.0.24
maven org.eclipse.jetty/jetty-server 12.0.0 12.0.9
maven org.eclipse.jetty/jetty-server 9.3.12 9.4.56
openSUSE:Leap 15.5 jetty-minimal 0 9.4.56-150200.3.28.1
openSUSE:Leap 15.6 jetty-minimal 0 9.4.56-150200.3.28.1
openSUSE:Tumbleweed jetty-minimal 0 9.4.56-2.1

Related vulnerabilities