CVE-2024-38808
Medium · 4.3CVSS
4.3
EPSS
0.6%
Published
Aug 20, 2024
CISA due date
—
Cloudanix analysis
Some applications may let a user submit specially crafted input that can make the service slow down or stop responding.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- Web Framework
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw is an availability issue in Spring Framework 5.3.0 through 5.3.38 and older unsupported releases when an application evaluates Spring Expression Language expressions supplied by an untrusted user. A specially crafted SpEL expression can trigger excessive processing or resource consumption during parsing or evaluation, causing slow responses, thread exhaustion, elevated CPU usage, or partial service degradation. The issue does not provide direct confidentiality or integrity impact and is only exploitable in applications that expose user-controllable SpEL evaluation paths.
Why it matters to the business
Successful exploitation can make affected Spring-based services unreliable or temporarily unavailable, disrupting business workflows that depend on those applications. The public risk signal is currently low: it is not listed in CISA KEV, is not known to be used in ransomware campaigns, has low EPSS, and has no widely reported mature exploit; however, internet-facing or high-traffic applications that accept expression-like input should still be prioritized because even a low-complexity denial-of-service condition can affect service availability. Organizations should also verify package inventory carefully because the provided affected product data includes Spring Framework as the primary relevant component and a legacy Ubuntu qemu package entry that should be remediated only where it actually exists and is applicable.
How an attack unfolds
An attacker first identifies an application feature, API, form, rule engine, search/filter capability, template field, configuration interface, or integration point that accepts user-provided input and passes it to a Spring SpEL parser or evaluator. The attacker then submits a crafted expression designed to consume excessive resources during expression parsing or evaluation. If the vulnerable Spring Framework version is present and the application evaluates the expression without strict validation, sandboxing, length limits, or timeouts, application worker threads or CPU resources can be tied up. Repeated requests can amplify the effect, resulting in latency, request failures, health-check failures, or partial application outage. No authentication may be required if the vulnerable expression-evaluation feature is publicly reachable, but some deployments may require access to a user-driven workflow or administrative/configuration feature.
How to fix it
Upgrade affected Spring Framework 5.3.x deployments to a fixed release containing the vendor fix, such as Spring Framework 5.3.39 or later where compatible, or migrate to a currently supported Spring Framework line. The specific upstream fix is identified as spring-projects/spring-framework commit f1b128b88d734670b4e1842e9ecf41f5252c778d. Remove or redesign application features that evaluate untrusted SpEL input whenever possible. If SpEL evaluation is required, restrict it to trusted users and trusted expression sources, enforce strict allowlists, cap expression length and complexity, apply request rate limits, set execution timeouts, and isolate expression evaluation from critical request-handling paths. For systems where Ubuntu 14.04 qemu package exposure is separately confirmed, update qemu to 2.0.0+dfsg-2ubuntu1.17 or later, but do not treat qemu remediation as a substitute for fixing Spring Framework exposure.
How to confirm the fix worked
Confirm dependency versions through build manifests, lockfiles, SBOMs, artifact metadata, and runtime classpath inspection. Look specifically for org.springframework:spring-expression and related Spring Framework components in versions 5.3.0 through 5.3.38 or older unsupported versions. Review code for use of SpelExpressionParser, ExpressionParser, StandardEvaluationContext, SimpleEvaluationContext, @Value-driven dynamic inputs, rule/configuration engines, or template/custom filter features that evaluate user-controllable strings. After upgrading, verify that the deployed artifact contains the fixed Spring Framework version or the upstream fix commit. Perform safe negative testing in a non-production environment using malformed and high-complexity expression inputs to confirm that requests are rejected, bounded, or fail quickly without sustained CPU/thread exhaustion. Validate compensating controls by confirming request size limits, rate limits, authentication requirements, and application-level timeouts are active.
Typical attack path
- Identify a Spring-based application or feature that accepts expression-like user input.
- Confirm or infer that user input is evaluated using Spring Expression Language rather than treated as plain text.
- Submit a malformed or resource-intensive SpEL expression through the exposed workflow.
- Cause the vulnerable parser or evaluator to consume excessive CPU, memory, or request-processing time.
- Repeat or parallelize requests to exhaust application worker threads or degrade service availability.
- Observe increased latency, errors, failed health checks, or service instability.
How to detect it
Investigate application, web server, API gateway, APM, JVM, and container/orchestrator telemetry for signs of repeated malformed expression submissions followed by resource exhaustion. Useful sources include application logs containing Spring expression parse/evaluation exceptions, HTTP access logs for endpoints that accept rules, filters, templates, formulas, or expression parameters, JVM metrics showing sustained CPU spikes or thread pool saturation, garbage collection logs, Kubernetes restart and liveness/readiness probe failures, and load balancer 5xx/timeout metrics. Look for bursts of 400/500 responses, long request durations, repeated requests from the same source or small set of sources, and exception messages from org.springframework.expression near periods of degraded availability. There are no widely published actor-specific indicators or ransomware-linked campaigns for this issue; detection should focus on behavioral evidence of attempted SpEL abuse and correlated service degradation.
- org.springframework.expression
- org.springframework.expression.spel.SpelParseException
- org.springframework.expression.spel.SpelEvaluationException
- SpelEvaluationException
- SpelParseException
- SpelExpressionParser
- ExpressionParser.parseExpression
- Expression parsing failed
- EL1001E
- EL1008E
- EL1011E
- EL1041E
- EL1042E
- EL1057E
- EL1070E
- java.lang.StackOverflowError
- java.lang.OutOfMemoryError
- Request timed out
- Readiness probe failed
- Liveness probe failed
What your security team should do
- Inventory Spring Framework and spring-expression usage across applications, prioritizing internet-facing services and applications with rule builders, dynamic filters, workflow engines, or template/custom expression features.
- Upgrade Spring Framework 5.3.0 through 5.3.38 and older unsupported versions to a fixed supported release, preferably 5.3.39 or later for the 5.3 line or an appropriate supported 6.x line after compatibility testing.
- Search codebases for user-supplied SpEL evaluation and eliminate it where possible; otherwise restrict it with allowlists, length limits, complexity limits, authentication, and rate limiting.
- Add monitoring for abnormal CPU spikes, request latency, thread pool saturation, repeated expression parse/evaluation errors, and application health-check failures.
- Review WAF/API gateway controls for endpoints that accept expression-like input and apply request body size limits and throttling.
- Because the issue is not in KEV and EPSS is low, prioritize based on actual exposure rather than treating all Spring deployments as equally urgent.
- Verify whether any legacy Ubuntu 14.04 qemu package findings are real in asset inventory and remediate them independently if present.
The record
In Spring Framework versions 5.3.0 - 5.3.38 and older unsupported versions, it is possible for a user to provide a specially crafted Spring Expression Language (SpEL) expression that may cause a denial of service (DoS) condition. Specifically, an application is vulnerable when the following is true: * The application evaluates user-supplied SpEL expressions.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.springframework:spring-expression | 0 | 5.3.39 |
| Chainguard | apache-nifi | 0 | 1.27.0-r1 |
| Chainguard | apache-nifi-compat | 0 | 1.27.0-r1 |
| Chainguard | apache-nifi-toolkit | 0 | 1.27.0-r1 |
| Chainguard | jenkins | 0 | 2.473-r0 |
| Chainguard | jenkins-2.452 | 0 | 2.452.4-r1 |
| Chainguard | jenkins-2.462 | 0 | 2.462.1-r1 |
| Chainguard | jenkins-compat | 0 | 2.473-r0 |
| Chainguard | jenkins-remoting | 0 | 2.473-r0 |
| Debian:11 | libspring-java | 0 | No fix |
| Debian:12 | libspring-java | 0 | No fix |
| Debian:13 | libspring-java | 0 | No fix |
| Red Hat:ocp_tools:4.12::el8 | jenkins | 0 | 0:2.462.3.1730119132-3.el8 |
| Red Hat:ocp_tools:4.12::el8 | jenkins-2-plugins | 0 | 0:4.12.1730119231-1.el8 |
| Red Hat:ocp_tools:4.13::el8 | jenkins | 0 | 0:2.462.3.1729839924-3.el8 |
| Red Hat:ocp_tools:4.13::el8 | jenkins-2-plugins | 0 | 0:4.13.1729840148-1.el8 |
| Red Hat:ocp_tools:4.14::el8 | jenkins | 0 | 0:2.462.3.1729839727-3.el8 |
| Red Hat:ocp_tools:4.14::el8 | jenkins-2-plugins | 0 | 0:4.14.1729839844-1.el8 |
| Red Hat:ocp_tools:4.15::el8 | jenkins | 0 | 0:2.462.3.1729837947-3.el8 |
| Red Hat:ocp_tools:4.15::el8 | jenkins-2-plugins | 0 | 0:4.15.1729838165-1.el8 |
| 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 |
| Wolfi | apache-nifi | 0 | 1.27.0-r1 |
| Wolfi | apache-nifi-compat | 0 | 1.27.0-r1 |
| Wolfi | apache-nifi-toolkit | 0 | 1.27.0-r1 |
| Wolfi | jenkins | 0 | 2.473-r0 |
| Wolfi | jenkins-compat | 0 | 2.473-r0 |
| Wolfi | jenkins-remoting | 0 | 2.473-r0 |
Related vulnerabilities
- CVE-2026-22732 When applications specify HTTP response headers for servlet applications using Spring… Also affects apache-nifi
- CVE-2026-24281 Hostname verification in Apache ZooKeeper ZKTrustManager falls back to reverse DNS (PTR)… Also affects apache-nifi
- CVE-2026-24308 Improper handling of configuration values in ZKConfig in Apache ZooKeeper 3.8.5 and 3.9.4… Also affects apache-nifi
- CVE-2026-29062 jackson-core contains core low-level incremental ("streaming") parser and generator… Also affects apache-nifi
- CVE-2026-1225 ACE vulnerability in configuration file processing by QOS.CH logback-core up to and… Also affects apache-nifi
- CVE-2025-14763 Missing cryptographic key commitment in the Amazon S3 Encryption Client for Java may… Also affects apache-nifi
- CVE-2024-29371 In jose4j before 0.9.5, an attacker can cause a Denial-of-Service (DoS) condition by… Also affects apache-nifi
- CVE-2025-67735 Netty has a CRLF Injection vulnerability in io.netty.handler.codec.http.HttpRequestEncoder Also affects apache-nifi