CVE-2025-61795
Medium · 5.3CVSS
5.3
EPSS
1.2%
Published
Oct 27, 2025
CISA due date
—
Cloudanix analysis
A flaw in some web servers can let someone repeatedly send bad file uploads until the server runs out of disk space and stops working.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Denial Of Service
- Component
- Web Framework
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Apache Tomcat fails to immediately clean up temporary files created while processing multipart/form-data uploads when multipart parsing exits through an error path, such as exceeded upload limits or malformed input. The orphaned temporary upload parts remain on disk until JVM garbage collection later releases them. Under sustained or parallel upload error conditions, disk space in the servlet multipart temporary directory, CATALINA_BASE/temp, or the configured java.io.tmpdir can be consumed faster than garbage collection removes the files, causing application errors or service unavailability. The flaw impacts availability only; it does not provide code execution, privilege escalation, or direct data disclosure.
Why it matters to the business
An attacker with the ability to submit multipart uploads to an affected Tomcat-hosted application can cause disk exhaustion and interrupt business services, especially applications that expose file upload, form submission, API import, attachment, or media upload features. The issue is not listed in CISA KEV, is not known to be used in ransomware campaigns, and has low EPSS probability, but it has been public for 286 days and remains operationally relevant for internet-facing or high-volume upload services. Outages may affect customer portals, internal workflows, API availability, and incident response capacity due to disk cleanup and service recovery work.
How an attack unfolds
An attacker identifies a Tomcat-hosted application endpoint that accepts multipart/form-data uploads. Using a valid low-privilege account or any reachable upload workflow, the attacker sends requests that cause multipart parsing to fail after Tomcat has already written temporary upload parts to disk. Common triggers include oversized parts, excessive request sizes, malformed multipart boundaries, or other inputs that exceed configured limits. In affected versions, those temporary files are not immediately removed on the error path and are left for JVM garbage collection. By repeating the requests or running them concurrently, the attacker can accumulate temporary files faster than garbage collection clears them. Once the relevant temporary filesystem fills, Tomcat and hosted applications may fail to create temporary files, write logs, process requests, or continue normal operation, resulting in denial of service.
How to fix it
Upgrade Apache Tomcat to a fixed release: 11.0.12 or later for the 11.x line, 10.1.47 or later for the 10.1.x line, or 9.0.110 or later for the 9.0.x line. Apache Tomcat 8.5.x is end-of-life and affected through 8.5.100; migrate to a supported fixed branch rather than relying on continued 8.5.x maintenance. For source-based deployments, include the upstream fix identified by Apache Tomcat commit dbccb8cba2bf667a0e1b5da02187bda3e1a74120 or a later release containing it. As interim risk reduction, enforce strict upload size limits at the reverse proxy and application layers, restrict upload endpoints to authenticated and authorized users, rate-limit multipart POST requests, place temporary upload directories on monitored filesystems with sufficient headroom, and configure alerting for rapid growth in Tomcat temporary directories. These mitigations reduce exploitability but should not replace upgrading.
How to confirm the fix worked
Confirm the running Tomcat version is 11.0.12 or later, 10.1.47 or later, or 9.0.110 or later using version.sh/version.bat, package manager metadata, container image manifests, catalina.jar manifest Implementation-Version, or runtime startup logs. Verify no unsupported Tomcat 8.5.x or older branch remains in use. Check application configuration for multipart upload locations and confirm temporary files are cleaned promptly after rejected uploads in a controlled non-production test. Review reverse proxy, WAF, and application limits for maximum request body size, multipart part count, and upload rate. Validate monitoring alerts trigger on low free space and abnormal growth under CATALINA_BASE/temp, java.io.tmpdir, or explicitly configured multipart locations.
Typical attack path
- Discover a Tomcat-hosted application endpoint that accepts multipart/form-data uploads.
- Authenticate with a low-privilege account if the upload workflow requires login.
- Submit malformed, oversized, or limit-exceeding multipart upload requests that trigger multipart parsing errors.
- Repeat the failed upload requests at sufficient volume or concurrency to accumulate temporary files on disk.
- Exhaust the filesystem used for multipart temporary storage, CATALINA_BASE/temp, or java.io.tmpdir.
- Cause application errors, failed uploads, failed request processing, degraded performance, or Tomcat service outage.
How to detect it
To determine whether this was already exploited, review web server, reverse proxy, WAF, Tomcat access, and application logs for bursts of multipart/form-data POST requests that returned 400, 413, 500, or other upload-related errors. Correlate these requests with filesystem telemetry showing rapid growth or exhaustion of CATALINA_BASE/temp, java.io.tmpdir, or configured multipart upload directories. Look for repeated multipart parser exceptions, upload size limit exceptions, malformed boundary errors, and disk-full messages in catalina.out, localhost logs, application logs, container stdout/stderr, system journal logs, and JVM logs. Check endpoint metrics for spikes in failed uploads, long request times, thread exhaustion, or sudden availability drops. On hosts or containers, inspect temporary directories for large numbers of upload-related .tmp files with creation times matching suspicious request bursts. Because exploitation does not require malware or persistent artifacts, absence of files after garbage collection or manual cleanup does not rule out prior abuse; rely on time-correlated access logs, error logs, disk metrics, and incident timestamps.
- Content-Type: multipart/form-data
- java.io.IOException: No space left on device
- No space left on device
- SizeLimitExceededException
- FileSizeLimitExceededException
- MalformedStreamException
- Stream ended unexpectedly
- org.apache.tomcat.util.http.fileupload
- org.apache.tomcat.util.http.fileupload.impl
- org.apache.tomcat.util.http.fileupload.FileUploadBase
- DiskFileItem
- jakarta.servlet.MultipartConfigElement
- javax.servlet.MultipartConfigElement
- CATALINA_BASE/temp
- java.io.tmpdir
- upload_
- Request body is larger than the configured limit
- HTTP/1.1" 413
- POST
What your security team should do
- Inventory all Apache Tomcat instances, including embedded Tomcat in Java applications and container images, and prioritize internet-facing systems with file upload or multipart API endpoints.
- Upgrade affected Tomcat deployments to 11.0.12+, 10.1.47+, or 9.0.110+; migrate any 8.5.x deployments to a supported branch.
- Apply compensating controls until upgrades complete: request body size limits, upload endpoint rate limits, authentication requirements, and WAF/proxy controls for abnormal multipart traffic.
- Monitor disk utilization and temporary upload directories for rapid growth, especially around upload-heavy endpoints and repeated multipart parsing errors.
- Review access logs for repeated failed multipart POST requests from the same source, credential, session, or autonomous system.
- Ensure temporary upload directories are isolated from critical OS, log, and application data filesystems where practical to reduce blast radius of disk exhaustion.
- Add incident runbooks for safely clearing orphaned Tomcat upload temporary files and restarting services after confirming active requests are not using those files.
The record
Improper Resource Shutdown or Release vulnerability in Apache Tomcat. If an error occurred (including exceeding limits) during the processing of a multipart upload, temporary copies of the uploaded parts written to disc were not cleaned up immediately but left for the garbage collection process to delete. Depending on JVM settings, application memory usage and application load, it was possible that space for the temporary copies of uploaded parts would be filled faster than GC cleared it, leading to a DoS. This issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.11, from 10.1.0-M1 through 10.1.46, from 9.0.0.M1 through 9.0.109. The following versions were EOL at the time the CVE was created but are known to be affected: 8.5.0 though 8.5.100. Other, older, EOL versions may also be affected. Users are recommended to upgrade to version 11.0.12 or later, 10.1.47 or later or 9.0.110 or later which fixes the issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 10.1.0-M1 | 10.1.47 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 11.0.0-M1 | 11.0.12 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 8.5.0 | No fix |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 8.5.60 | No fix |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 9.0.0.40 | 9.0.110 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 9.0.0.M1 | 9.0.110 |
| Maven | org.apache.tomcat:tomcat | 10.1.0-M1 | 10.1.47 |
| Maven | org.apache.tomcat:tomcat | 11.0.0-M1 | 11.0.12 |
| Maven | org.apache.tomcat:tomcat | 8.5.0 | No fix |
| Maven | org.apache.tomcat:tomcat | 8.5.60 | No fix |
| Maven | org.apache.tomcat:tomcat | 9.0.0.40 | 9.0.110 |
| Maven | org.apache.tomcat:tomcat | 9.0.0.M1 | 9.0.110 |
| Maven | org.apache.tomcat:tomcat-catalina | 10.1.0-M1 | 10.1.47 |
| Maven | org.apache.tomcat:tomcat-catalina | 11.0.0-M1 | 11.0.12 |
| Maven | org.apache.tomcat:tomcat-catalina | 8.5.0 | No fix |
| Maven | org.apache.tomcat:tomcat-catalina | 8.5.60 | No fix |
| Maven | org.apache.tomcat:tomcat-catalina | 9.0.0.40 | 9.0.110 |
| Maven | org.apache.tomcat:tomcat-catalina | 9.0.0.M1 | 9.0.110 |
| AlmaLinux:10 | tomcat | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-admin-webapps | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-docs-webapp | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-el-5.0-api | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-jsp-3.1-api | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-lib | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-servlet-6.0-api | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-webapps | 0 | 1:10.1.36-3.el10_1.1 |
| Bitnami | tomcat | 0 | 9.0.110 |
| Chainguard | camunda-zeebe-8.6 | 0 | 8.6.29-r3 |
| Chainguard | camunda-zeebe-8.6-compat | 0 | 8.6.29-r3 |
| Chainguard | camunda-zeebe-8.7 | 0 | 8.7.16-r2 |
| Chainguard | camunda-zeebe-8.7-compat | 0 | 8.7.16-r2 |
| Chainguard | kayenta-2025.0 | 0 | 2025.0.8-r3 |
| Chainguard | kayenta-2025.1 | 0 | 2025.1.5-r3 |
| Chainguard | kayenta-2025.2 | 0 | 2025.2.2-r3 |
| Chainguard | kayenta-fips-2025.0 | 0 | 2025.0.8-r3 |
| Chainguard | kayenta-fips-2025.1 | 0 | 2025.1.6-r0 |
| Chainguard | kayenta-fips-2025.2 | 0 | 2025.2.2-r3 |
| Chainguard | nacos | 0 | 3.1.0-r2 |
| Chainguard | nacos-compat | 0 | 3.1.0-r2 |
| Chainguard | nacos-docker | 0 | 3.1.0-r2 |
| Chainguard | seata | 0 | 2.5.0-r3 |
| Chainguard | seata-namingserver | 0 | 2.5.0-r3 |
| Chainguard | seata-namingserver-oci-entrypoint | 0 | 2.5.0-r3 |
| Chainguard | seata-openjdk-17-compat | 0 | 2.5.0-r3 |
| Chainguard | seata-openjdk-21-compat | 0 | 2.5.0-r3 |
| Chainguard | seata-openjdk-8-compat | 0 | 2.5.0-r3 |
| Chainguard | seata-server | 0 | 2.5.0-r3 |
| Chainguard | seata-server-oci-entrypoint | 0 | 2.5.0-r3 |
| Chainguard | thingsboard | 0 | 4.2.1-r7 |
| Chainguard | thingsboard-tb-js-executor | 0 | 4.2.1-r7 |
| Chainguard | thingsboard-tb-mqtt-transport | 0 | 4.2.1-r7 |
| Chainguard | thingsboard-tb-node | 0 | 4.2.1-r7 |
| Chainguard | thingsboard-tb-web-ui | 0 | 4.2.1-r7 |
| Mageia:9 | tomcat | 0 | 9.0.111-1.mga9 |
| SUSE:Enterprise Storage 7.1 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat11 | 0 | 11.0.13-150600.13.12.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat11 | 0 | 11.0.13-150600.13.12.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | tomcat | 0 | 9.0.36-3.153.2 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | tomcat | 0 | 9.0.36-3.153.2 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Manager Server LTS 4.3 | tomcat | 0 | 9.0.111-150200.96.1 |
| Wolfi | thingsboard | 0 | 4.2.1-r7 |
| Wolfi | thingsboard-tb-js-executor | 0 | 4.2.1-r7 |
| Wolfi | thingsboard-tb-mqtt-transport | 0 | 4.2.1-r7 |
| Wolfi | thingsboard-tb-node | 0 | 4.2.1-r7 |
| Wolfi | thingsboard-tb-web-ui | 0 | 4.2.1-r7 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 10.1.0-M1 | 10.1.47 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 11.0.0-M1 | 11.0.12 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 8.5.0 | No fix |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 8.5.60 | No fix |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 9.0.0.40 | 9.0.110 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 9.0.0.M1 | 9.0.110 |
| maven | org.apache.tomcat/tomcat | 10.1.0-M1 | 10.1.47 |
| maven | org.apache.tomcat/tomcat | 11.0.0-M1 | 11.0.12 |
| maven | org.apache.tomcat/tomcat | 8.5.0 | No fix |
| maven | org.apache.tomcat/tomcat | 8.5.60 | No fix |
| maven | org.apache.tomcat/tomcat | 9.0.0.40 | 9.0.110 |
| maven | org.apache.tomcat/tomcat | 9.0.0.M1 | 9.0.110 |
| maven | org.apache.tomcat/tomcat-catalina | 10.1.0-M1 | 10.1.47 |
| maven | org.apache.tomcat/tomcat-catalina | 11.0.0-M1 | 11.0.12 |
| maven | org.apache.tomcat/tomcat-catalina | 8.5.0 | No fix |
| maven | org.apache.tomcat/tomcat-catalina | 8.5.60 | No fix |
| maven | org.apache.tomcat/tomcat-catalina | 9.0.0.40 | 9.0.110 |
| maven | org.apache.tomcat/tomcat-catalina | 9.0.0.M1 | 9.0.110 |
| openSUSE:Leap 15.6 | tomcat | 0 | 9.0.111-150200.96.1 |
| openSUSE:Leap 15.6 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| openSUSE:Leap 15.6 | tomcat11 | 0 | 11.0.13-150600.13.12.1 |
| openSUSE:Leap 16.0 | tomcat | 0 | 9.0.111-160000.1.1 |
| openSUSE:Leap 16.0 | tomcat10 | 0 | 10.1.52-160000.1.1 |
| openSUSE:Leap 16.0 | tomcat11 | 0 | 11.0.13-160000.1.1 |
| openSUSE:Tumbleweed | tomcat | 0 | 9.0.111-1.1 |
| openSUSE:Tumbleweed | tomcat10 | 0 | 10.1.48-1.1 |
| openSUSE:Tumbleweed | tomcat11 | 0 | 11.0.13-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-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
- CVE-2025-49124 Untrusted Search Path vulnerability in Apache Tomcat installer for Windows. Also affects org.apache.tomcat.embed:tomcat-embed-core