Check the status of CVEs. Learn More.
php2shell patches (CVE-2026-109618 and CVE-2026-109619) for EOL PHP are out now. With sales replies slower than usual due to high demand, the fastest route to patched packages is to buy ELS for Runtimes online (opens in new tab). | Read the patch FAQ
This CVE has been resolved by the TuxCare team and
a patch has been delivered to ELS for Spring® users.
Spring® Framework is a comprehensive, open-source framework for building Java applications. It provides dependency injection (DI), aspect-oriented programming (AOP), and transaction management, making Java development more modular and efficient.
Spring® Context is a core module of Spring® Framework that provides powerful dependency injection (DI) and application context management. It builds on the Spring® Beans module and acts as the central interface for configuring and managing a Spring® application..
Improper Handling of Case Sensitivity takes place when the product does not properly account for differences in case sensitivity when accessing or determining the properties of a resource, leading to inconsistent results.
CVE-2024-38820 is a medium-severity vulnerability arising from the fix for CVE-2022-22968. The fix made disallowedFields patterns in DataBinder case-insensitive. However, due to Locale-dependent exceptions in String.toLowerCase(), some fields may not be protected as intended.
This issue affects multiple versions of:
org.springframework:spring-context package,
org.springframework:spring-core package,
org.springframework:spring-web package,
org.springframework:spring-webflux package,
org.springframework:spring-webmvc package,
org.springframework:spring-websocket package.
| Vulnerability Dossier | |
| CVE ID | CVE-2024-38820 |
| Severity | Medium: 5.3 |
| CWE-ID and name | CWE-178: Improper Handling of Case Sensitivity |
| Affected project | Spring® Framework |
| Affected packages | spring-context
spring-core spring-web spring-webflux spring-webmvc spring-websocket |
| Affected versions | All prior 5.3.0, <5.3.0;5.3.40>,<6.0.0;6.0.24>,<6.1.0;6.1.13> |
| NVD Published date | 18th of October 2024 (Spring.io: 17th of October 2024) |
| TuxCare fix date | 25th of November 2025 |
| TuxCare fixed version | 5.3.39.tuxcare.2 |
https://mvnrepository.com/artifact/org.springframework/spring-context
https://mvnrepository.com/artifact/org.springframework/spring-core
https://mvnrepository.com/artifact/org.springframework/spring-web
https://mvnrepository.com/artifact/org.springframework/spring-webflux
https://mvnrepository.com/artifact/org.springframework/spring-webmvc
https://mvnrepository.com/artifact/org.springframework/spring-websocket
Fixed In: ELS for Spring Framework:spring-web v5.3.39.TuxCare.2 which relies on the last open source community version 5.3.39 as a baseline, where all TuxCare patches were applied.
CVE-2024-38820 is a vulnerability in Spring® Framework’s DataBinder component, which is responsible for binding external data to Java objects. This issue arises from the improper handling of case sensitivity in the disallowedFields patterns, potentially allowing unauthorized manipulation of data fields.
CVE-2024-38820 is a problem because it allows unauthorized manipulation of sensitive fields during data binding in Spring® applications, potentially leading to security bypasses or unexpected application behavior.
Spring’s® DataBinder is used to bind incoming data (e.g. from HTTP requests) to Java objects. Developers often use disallowedFields to block specific fields from being set, typically for security reasons (e.g., preventing users from overwriting isAdmin or role fields).
CVE-2024-38820 arises because the disallowedFields mechanism is case-sensitive, but binding operations may ignore case or allow alternative casing.
Here’s what could happen:
Business Logic Corruption – Sensitive or internal fields could be manipulated.
Here’s a minimal example to reproduce CVE-2024-38820, showing how a case mismatch in DataBinder.disallowedFields can allow setting sensitive fields that should have been blocked.
Setup: Spring® Boot + Spring® Web (vulnerable version)
pom.xml – Use a vulnerable Spring® version (e.g., 5.3.39)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.18</version> <!– Uses Spring® Framework 5.3.39 –>
</dependency>
Example Code
User.java
public class User {
private String username;
private boolean isAdmin;
// Getters and setters
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public boolean isAdmin() { return isAdmin; }
public void setAdmin(boolean isAdmin) { this.isAdmin = isAdmin; }
}
UserController.java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(“/user”)
public class UserController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields(“isAdmin”); // Intends to block binding of isAdmin
}
@PostMapping
@ResponseBody
public String createUser(@ModelAttribute User user) {
return “Username: ” + user.getUsername() + “, isAdmin: ” + user.isAdmin();
}
}
Test via Curl or Postman
✅ Expected Safe Request
curl -X POST http://localhost:8080/user -d “username=bob&isAdmin=true”
❌ Bypass via Case Variation
curl -X POST http://localhost:8080/user -d “username=bob&IsAdmin=true”
Spring® Framework 5.3.x is no longer supported by the open source community, as its End of Life date is 2023-06-30. It simply means that the version from that date does not receive any updates to address this issue.
Users of the affected components should apply one of the following mitigations:
Do you need a fix for this vulnerability for any other Spring® Framework version? Please contact us, we are here to help you!