Cloudanix VulnDB

CVE-2025-61795

Medium · 5.3

CVSS

5.3

EPSS

1.2%

Published

Oct 27, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

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

  1. Discover a Tomcat-hosted application endpoint that accepts multipart/form-data uploads.
  2. Authenticate with a low-privilege account if the upload workflow requires login.
  3. Submit malformed, oversized, or limit-exceeding multipart upload requests that trigger multipart parsing errors.
  4. Repeat the failed upload requests at sufficient volume or concurrency to accumulate temporary files on disk.
  5. Exhaust the filesystem used for multipart temporary storage, CATALINA_BASE/temp, or java.io.tmpdir.
  6. 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