CVE-2025-48988:
Apache Tomcat Multipart Upload Denial of Service Vulnerability
7.5
Basic Information
Technical Details
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
org.apache.tomcat:tomcat-catalina | maven | >= 11.0.0-M1, <= 11.0.7 | 11.0.8 |
org.apache.tomcat:tomcat-catalina | maven | >= 10.1.0-M1, <= 10.1.41 | 10.1.42 |
org.apache.tomcat:tomcat-catalina | maven | >= 9.0.0.M1, <= 9.0.105 | 9.0.106 |
org.apache.tomcat.embed:tomcat-embed-core | maven | >= 11.0.0-M1, <= 11.0.7 | 11.0.8 |
org.apache.tomcat.embed:tomcat-embed-core | maven | >= 10.1.0-M1, <= 10.1.41 | 10.1.42 |
org.apache.tomcat.embed:tomcat-embed-core | maven | >= 9.0.0.M1, <= 9.0.105 | 9.0.106 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability is an 'Allocation of Resources Without Limits or Throttling' issue in Apache Tomcat's multipart upload handling. The provided patches (e.g., 2b0ab14fb55d4edc896e5f1817f2ab76f714ae5e) show modifications primarily in org.apache.catalina.connector.Request.java
within the parseParts
method and in org.apache.catalina.connector.Connector.java
to add new configuration parameters (maxPartCount
and maxPartHeaderSize
).
The parseParts
method in org.apache.catalina.connector.Request
is where the actual parsing of multipart request data occurs. Before the patch, the limits on the number of parts were indirectly tied to maxParameterCount
, and there was no explicit limit on the size of individual part headers. This lack of fine-grained control allowed a malicious actor to send a multipart request designed to exhaust server resources, leading to a Denial of Service.
The patch modifies parseParts
to use two new limits fetched from the Connector
: getMaxPartCount()
and getMaxPartHeaderSize()
. These are used to configure the FileUpload
instance (upload.setFileCountMax()
and upload.setPartHeaderSizeMax()
).
Therefore, the org.apache.catalina.connector.Request.parseParts
function is the direct point where the vulnerable processing of multipart data happened due to insufficient resource limiting. During exploitation, this function would be in the call stack as it attempts to parse the excessively large or numerous parts of a malicious request.
Vulnerable functions
org.apache.catalina.connector.Request.parseParts
java/org/apache/catalina/connector/Request.java