CVE-2025-31650
NoneApache Tomcat Denial of Service via invalid HTTP priority header
CVSS
—
EPSS
61.3%
Published
Apr 28, 2025
CISA due date
—
Cloudanix analysis
Attackers can send specially malformed web requests that gradually consume server memory and make affected Tomcat-hosted applications crash or stop responding.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Web Framework
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Apache Tomcat improperly handles certain malformed HTTP priority headers. When Tomcat rejects these invalid requests, error handling may fail to fully clean up request-related objects, causing memory to be retained. Repeated malformed requests can steadily exhaust JVM heap memory and trigger an OutOfMemoryError/OutOfMemoryException, making the Tomcat process unstable or unavailable. The issue affects Apache Tomcat 9.0.76 through 9.0.102, 10.1.10 through 10.1.39, and 11.0.0-M2 through 11.0.5.
Why it matters to the business
Successful exploitation can take public-facing Java web applications offline without requiring authentication, causing service outages, failed transactions, degraded customer experience, and operational response costs. The EPSS score is high and exploit availability is reported, so internet-exposed Tomcat services should be treated as priority remediation targets even though the issue is not currently listed in CISA KEV and is not known to be used in ransomware campaigns.
How an attack unfolds
An attacker identifies an exposed Apache Tomcat service running a vulnerable version, then sends a large volume of HTTP requests containing specially malformed priority headers. Each invalid request is rejected, but due to incomplete cleanup in the vulnerable error path, memory associated with the failed request can remain allocated. By sustaining or repeating this traffic, the attacker forces JVM heap usage to grow until garbage collection cannot recover enough memory. The Tomcat process may then throw OutOfMemoryError/OutOfMemoryException, stop responding, restart if supervised, or become unstable, resulting in denial of service for hosted applications.
How to fix it
Upgrade Apache Tomcat to a fixed release: 9.0.104 or later for the 9.0.x branch, 10.1.40 or later for the 10.1.x branch, or 11.0.6 or later for the 11.0.x branch. For source-based deployments, ensure the Apache Tomcat code includes commit 872451298e20bb77ea95c499e6866b1e32b337e0 or a later fixed revision. If Tomcat is bundled by an application, container image, Linux distribution, appliance, or platform service, update the vendor package or base image that contains Tomcat. As interim mitigation, restrict access to Tomcat from untrusted networks where possible, place services behind a reverse proxy or WAF capable of rejecting malformed Priority headers, enforce rate limits, tune request limits, and ensure JVM/process supervisors restart failed services; these mitigations reduce availability impact but do not replace upgrading.
How to confirm the fix worked
Confirm the running Tomcat version is not in the affected ranges: 9.0.76-9.0.102, 10.1.10-10.1.39, or 11.0.0-M2-11.0.5. Validate through startup logs, package manager metadata, container image contents, server info tooling, or the deployed Tomcat libraries rather than relying only on application banners. After upgrading, confirm Tomcat reports 9.0.104+, 10.1.40+, or 11.0.6+. Review dependency and container scans for embedded Tomcat components. In a controlled test environment only, send malformed Priority-header requests at low volume and verify they are rejected without sustained heap growth; do not perform high-volume testing against production services.
Typical attack path
- Scan for internet-accessible Apache Tomcat endpoints or Java web applications that expose Tomcat response characteristics.
- Fingerprint the target to determine whether it is likely running an affected Tomcat release.
- Send repeated HTTP requests containing invalid or malformed priority headers.
- Cause Tomcat to enter the vulnerable request error-handling path repeatedly.
- Accumulate unreleased request-related memory in the JVM heap.
- Trigger excessive garbage collection, OutOfMemoryError/OutOfMemoryException, application instability, or process termination.
- Repeat traffic to keep the service unavailable or unstable after restart.
How to detect it
Look for signs of repeated malformed HTTP requests containing Priority headers followed by JVM memory pressure or Tomcat instability. Useful sources include reverse proxy logs, WAF logs, load balancer logs, Tomcat access logs, Tomcat catalina logs, application logs, JVM garbage-collection logs, container runtime logs, systemd/service manager logs, Kubernetes pod events, and APM metrics. Hunt for spikes in HTTP 400 responses, unusual request bursts from a small set of IPs, repeated requests with a Priority header, abnormal heap growth, excessive full garbage collection, OutOfMemoryError/OutOfMemoryException messages, pod restarts, JVM exits, or service-manager restart events. Correlate timestamps of malformed Priority-header traffic with memory exhaustion, GC pauses, and Tomcat restarts. Because this is a denial-of-service vulnerability rather than a code-execution issue, durable host artifacts may be limited; network and application telemetry are the most valuable evidence.
- Priority:
- priority:
- java.lang.OutOfMemoryError
- OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: Java heap space
- OutOfMemoryException
- GC overhead limit exceeded
- java.lang.OutOfMemoryError: GC overhead limit exceeded
- Exception in thread
- org.apache.catalina.startup.Catalina
- Server startup in
- Stopping service [Catalina]
- org.apache.catalina.core.StandardService.stopInternal
- catalina.out
- localhost_access_log
- HTTP/1.1" 400
- HTTP/2" 400
- Malformed
- Invalid
- Priority header
- CrashLoopBackOff
- OOMKilled
- Killed process
- systemd[1]: tomcat
- systemd[1]: tomcat.service: Main process exited
What your security team should do
- Prioritize patching internet-facing and business-critical Tomcat deployments because exploit availability and high EPSS indicate meaningful exploitation likelihood.
- Inventory all direct, embedded, containerized, and vendor-bundled Tomcat instances, including applications that ship their own Tomcat runtime.
- Upgrade to Tomcat 9.0.104+, 10.1.40+, or 11.0.6+ depending on the deployed branch.
- Apply temporary perimeter controls to block or normalize malformed Priority headers and rate-limit suspicious request bursts until upgrades are complete.
- Monitor JVM heap, garbage collection behavior, Tomcat restarts, HTTP 400-rate spikes, and OutOfMemoryError events for signs of exploitation attempts.
- Ensure process supervision, autoscaling, and alerting are configured so Tomcat crashes or memory exhaustion are detected quickly.
- Review historical logs around unexplained outages, high garbage collection, or repeated bad-request bursts to determine whether exploitation may already have occurred.
The record
Improper Input Validation vulnerability in Apache Tomcat. Incorrect error handling for some invalid HTTP priority headers resulted in incomplete clean-up of the failed request which created a memory leak. A large number of such requests could trigger an OutOfMemoryException resulting in a denial of service. This issue affects Apache Tomcat: from 9.0.76 through 9.0.102, from 10.1.10 through 10.1.39, from 11.0.0-M2 through 11.0.5. Users are recommended to upgrade to version 9.0.104, 10.1.40 or 11.0.6 which fix the issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 10.1.10 | 10.1.40 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 11.0.0-M2 | 11.0.6 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 8.5.0 | No fix |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 9.0.76 | 9.0.104 |
| Maven | org.apache.tomcat:tomcat-coyote | 10.1.10 | 10.1.40 |
| Maven | org.apache.tomcat:tomcat-coyote | 11.0.0-M2 | 11.0.6 |
| Maven | org.apache.tomcat:tomcat-coyote | 8.5.0 | No fix |
| Maven | org.apache.tomcat:tomcat-coyote | 9.0.76 | 9.0.104 |
| AlmaLinux:10 | tomcat9 | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-admin-webapps | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-docs-webapp | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-el-3.0-api | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-jsp-2.3-api | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-lib | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-servlet-4.0-api | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:10 | tomcat9-webapps | 0 | 1:9.0.87-5.el10_0.1 |
| AlmaLinux:8 | tomcat | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-admin-webapps | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-docs-webapp | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-el-3.0-api | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-jsp-2.3-api | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-lib | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-servlet-4.0-api | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:8 | tomcat-webapps | 0 | 1:9.0.87-1.el8_10.4 |
| AlmaLinux:9 | tomcat | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-admin-webapps | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-docs-webapp | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-el-3.0-api | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-jsp-2.3-api | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-lib | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-servlet-4.0-api | 0 | 1:9.0.87-3.el9_6.1 |
| AlmaLinux:9 | tomcat-webapps | 0 | 1:9.0.87-3.el9_6.1 |
| Bitnami | tomcat | 9.0.76 | 9.0.104 |
| Chainguard | camunda-zeebe-8.6 | 0 | 8.6.15-r1 |
| Chainguard | camunda-zeebe-8.6-compat | 0 | 8.6.15-r1 |
| Chainguard | thingsboard | 0 | 4.0.1-r1 |
| Chainguard | thingsboard-tb-js-executor | 0 | 4.0.1-r1 |
| Chainguard | thingsboard-tb-mqtt-transport | 0 | 4.0.1-r1 |
| Chainguard | thingsboard-tb-node | 0 | 4.0.1-r1 |
| Chainguard | thingsboard-tb-web-ui | 0 | 4.0.1-r1 |
| Chainguard | tomcat-8.5.87-jamf-compat | 0 | 8.5.87-r3 |
| Debian:11 | tomcat9 | 0 | No fix |
| Debian:12 | tomcat10 | 0 | No fix |
| Debian:12 | tomcat9 | 0 | 9.0.70-2 |
| Debian:13 | tomcat10 | 0 | 10.1.40-1 |
| Debian:13 | tomcat11 | 0 | 11.0.6-1 |
| Debian:13 | tomcat9 | 0 | 9.0.70-2 |
| Mageia:9 | tomcat | 0 | 9.0.104-1.mga9 |
| SUSE:Enterprise Storage 7.1 | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat10 | 0 | 10.1.40-150200.5.40.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat10 | 0 | 10.1.40-150200.5.40.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat10 | 0 | 10.1.40-150200.5.40.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat10 | 0 | 10.1.40-150200.5.40.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat | 0 | 9.0.104-150200.81.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat10 | 0 | 10.1.40-150200.5.40.1 |
| SUSE:Manager Server 4.3 | tomcat | 0 | 9.0.104-150200.81.1 |
| Wolfi | thingsboard | 0 | 4.0.1-r1 |
| Wolfi | thingsboard-tb-js-executor | 0 | 4.0.1-r1 |
| Wolfi | thingsboard-tb-mqtt-transport | 0 | 4.0.1-r1 |
| Wolfi | thingsboard-tb-node | 0 | 4.0.1-r1 |
| Wolfi | thingsboard-tb-web-ui | 0 | 4.0.1-r1 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 10.1.10 | 10.1.40 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 11.0.0-M2 | 11.0.6 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 8.5.0 | No fix |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 9.0.76 | 9.0.104 |
| maven | org.apache.tomcat/tomcat-coyote | 10.1.10 | 10.1.40 |
| maven | org.apache.tomcat/tomcat-coyote | 11.0.0-M2 | 11.0.6 |
| maven | org.apache.tomcat/tomcat-coyote | 8.5.0 | No fix |
| maven | org.apache.tomcat/tomcat-coyote | 9.0.76 | 9.0.104 |
| openSUSE:Leap 15.6 | tomcat | 0 | 9.0.104-150200.81.1 |
| openSUSE:Leap 15.6 | tomcat10 | 0 | 10.1.40-150200.5.40.1 |
| openSUSE:Tumbleweed | tomcat | 0 | 9.0.104-1.1 |
| openSUSE:Tumbleweed | tomcat10 | 0 | 10.1.40-1.1 |
Related vulnerabilities
- CVE-2026-24733 Improper Input Validation vulnerability in Apache Tomcat. Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-66614 Improper Input Validation vulnerability. Also affects org.apache.tomcat.embed:tomcat-embed-core
- GHSA-wmwf-9ccg-fff5 Apache Tomcat Vulnerable to Relative Path Traversal Also affects org.apache.tomcat.embed:tomcat-embed-core
- GHSA-vfww-5hm6-hx2j Apache Tomcat Vulnerable to Improper Neutralization of Escape, Meta, or Control Sequences Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-61795 Improper Resource Shutdown or Release vulnerability in Apache Tomcat. Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-55752 Relative Path Traversal vulnerability in Apache Tomcat. Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-55754 Improper Neutralization of Escape, Meta, or Control Sequences vulnerability in Apache… Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-48989 Improper Resource Shutdown or Release vulnerability in Apache Tomcat made Tomcat… Also affects org.apache.tomcat.embed:tomcat-embed-core