CVE-2024-38828
Medium · 5.3CVSS
5.3
EPSS
0.7%
Published
Nov 18, 2024
CISA due date
—
Cloudanix analysis
Someone can slow down or knock a web service offline by sending it a huge upload, and installing the vendor update plus strict upload size limits stops that.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Trivial
- Impact
- Denial Of Service
- Component
- Web Framework
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Spring MVC controller methods that bind the HTTP request body to a parameter of type byte[] annotated with @RequestBody do not enforce an effective maximum body size while the message converter materializes the payload. An unauthenticated network attacker can therefore force unbounded heap allocation of a single byte array, driving garbage-collection stalls, OutOfMemoryError, or JVM/process termination. Confidentiality and integrity are unaffected; impact is availability-only (CVSS 5.3, C:N/I:N/A:L).
Why it matters to the business
Internet-facing or internal APIs built on Spring MVC can slow, error, or go offline, interrupting customer transactions and dependent services. The issue is not in CISA KEV, is not tied to ransomware, has exploit maturity None, and a low, unchanged EPSS of about 0.007 over 30 days, so it is not an emergency-class event—but it has been public for roughly 690 days, so remaining unpatched exposure is an avoidable availability and SLA risk rather than a novel threat.
How an attack unfolds
An attacker finds a Spring MVC endpoint whose handler accepts @RequestBody byte[] (binary ingest, webhooks, or similar). No credentials or user interaction are required. The attacker sends HTTP POST or PUT requests with an excessively large body so the framework copies the entire payload into a heap byte array. Concurrent or repeated oversized requests exhaust memory and CPU (GC), causing errors, timeouts, or a crash for legitimate clients. No named APT groups or campaigns are associated with this CVE, and there is no known public exploit maturity.
How to fix it
Upgrade Spring Framework to a patched line that applies body-size limits for @RequestBody byte[] (6.1.14 or later, 6.0.23 or later, or 5.3.41 or later, matching the major version in use). Replace raw byte[] body parameters with size-bounded streaming, multipart handling with explicit max-file and max-request sizes, or structured DTOs. Set application, servlet/container, and reverse-proxy maximum request-body sizes (for example Spring multipart/max-request-size properties, Tomcat/Jetty/Undertow post-size limits, and proxy client_max_body_size). For the vendor-listed SUSE Linux Enterprise Live Patching 15 SP5 artifact kernel-livepatch-SLE15-SP5-RT_Update_10, apply version 2-150500.11.8.1 or later. Restart application runtimes after upgrades.
How to confirm the fix worked
Inventory source and compiled Spring MVC controllers for @RequestBody byte[] parameters and confirm spring-web / spring-webmvc versions are at or above the patched releases. Verify max body size is configured at app, container, and proxy layers. After patching, confirm oversized requests are rejected with a client error (typically 400 or 413) and that heap does not grow without bound. Check lockfiles, SBOM, and images for leftover vulnerable Spring artifacts; for SUSE live-patching hosts, confirm kernel-livepatch-SLE15-SP5-RT_Update_10 is 2-150500.11.8.1 or newer.
Typical attack path
- Discover HTTP endpoints served by Spring MVC (framework fingerprints, API docs, or error pages).
- Identify handlers that consume a raw request body as byte[].
- Send unauthenticated HTTP requests with an oversized body to those endpoints.
- Repeat or parallelize requests to exhaust JVM heap and trigger GC/OOM.
- Service becomes slow, returns 5xx, restarts, or stops responding.
How to detect it
This is resource exhaustion, not an implant: hunt availability artifacts, not persistence. Around latency spikes, 5xx bursts, pod/process restarts, or OOM kills, review HTTP access logs for POST/PUT with unusually large Content-Length or body bytes to Spring MVC routes. Inspect JVM and container metrics for sudden heap growth, GC storms, and OutOfMemoryError in application logs. No named threat actors are reported; treat hits as opportunistic denial-of-service or capacity abuse. Confirm whether the orchestrator or OS OOM killer terminated the Java process.
- java.lang.OutOfMemoryError
- Java heap space
- GC overhead limit exceeded
- ByteArrayHttpMessageConverter
- org.springframework.http.converter.HttpMessageNotReadableException
- org.springframework.web.servlet.DispatcherServlet
- Failed to read HTTP message
What your security team should do
- Treat this as overdue standard patching, not a KEV emergency: upgrade Spring Framework to 6.1.14+/6.0.23+/5.3.41+ and, where the listed SUSE package is present, to kernel-livepatch-SLE15-SP5-RT_Update_10 2-150500.11.8.1.
- Prioritize internet-exposed Spring MVC apps; EPSS is low and no ransomware/KEV use is reported.
- Ban or wrap @RequestBody byte[] and enforce request-body limits at every HTTP boundary (app, container, proxy/WAF).
- Alert on JVM heap/GC/OOM and on access-log requests with abnormal Content-Length against Spring endpoints.
The record
Spring MVC controller methods with an @RequestBody byte[] method parameter are vulnerable to a DoS attack.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.springframework:spring-webmvc | 5.3.0 | 5.3.42 |
| Chainguard | geoserver-2.26-community | 0 | 2.26.4-r0 |
| Chainguard | geoserver-2.26-docker | 0 | 2.26.4-r0 |
| Chainguard | geoserver-2.27-community | 0 | 2.27.3-r0 |
| Chainguard | geoserver-2.27-docker | 0 | 2.27.3-r0 |
| Chainguard | geoserver-2.28-community | 0 | 2.28.1-r1 |
| Chainguard | geoserver-2.28-docker | 0 | 2.28.1-r1 |
| Chainguard | seata | 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 |
| Debian:11 | libspring-java | 0 | No fix |
| Debian:12 | libspring-java | 0 | No fix |
| Debian:13 | libspring-java | 0 | No fix |
| Ubuntu:20.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:22.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:24.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:24.10 | libspring-java | 0 | No fix |
| Ubuntu:25.04 | libspring-java | 0 | No fix |
| Ubuntu:25.10 | libspring-java | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | libspring-java | 0 | No fix |
| Ubuntu:Pro:24.04:LTS | libspring-java | 0 | No fix |
| maven | org.springframework/spring-webmvc | 5.3.0 | No fix |
| maven | org.springframework/spring-webmvc | 5.3.0 | 5.3.42 |
Related vulnerabilities
- CVE-2025-41242 Spring Framework MVC applications can be vulnerable to a “Path Traversal Vulnerability”… Also affects org.springframework:spring-webmvc
- CVE-2024-38819 Applications serving static resources through the functional web frameworks WebMvc.fn or… Also affects org.springframework:spring-webmvc
- CVE-2024-38816 Applications serving static resources through the functional web frameworks WebMvc.fn or… Also affects org.springframework:spring-webmvc
- CVE-2023-34053 In Spring Framework versions 6.0.0 - 6.0.13, it is possible for a user to provide… Also affects org.springframework:spring-webmvc
- CVE-2014-0225 When processing user provided XML documents, the Spring Framework 4.0.0 to 4.0.4, 3.0.0… Also affects org.springframework:spring-webmvc
- CVE-2014-0054 The Jaxb2RootElementHttpMessageConverter in Spring MVC in Spring Framework before 3.2.8… Also affects org.springframework:spring-webmvc
- CVE-2025-48924 Apache Commons Lang is vulnerable to Uncontrolled Recursion when processing long inputs Also affects geoserver-2.26-community
- CVE-2025-48976 Apache Commons FileUpload, Apache Commons FileUpload: FileUpload DoS via part headers Also affects geoserver-2.26-community