지원 종료(EOL)된 PHP용 php2shell 패치(CVE-2026-109618 및 CVE-2026-109619)가 출시되었습니다. 수요가 많아 평소보다 영업팀의 답변이 늦어지고 있으므로, 패치된 패키지를 가장 빠르게 확보하려면 온라인에서 Runtimes용 ELS를 구매하시기 바랍니다 (새 탭에서 열림). | 패치 FAQ 읽어보기
이 CVE는 TuxCare 팀과
에 의해 해결되었으며,
Spring® 사용자를 위한 패치가 ELS에 제공되었습니다.
Spring® 프레임워크는 자바 애플리케이션 구축을 위한 포괄적인 오픈소스 프레임워크입니다. 의존성 주입(DI), 측면 지향 프로그래밍(AOP), 트랜잭션 관리를 제공하여 자바 개발을 보다 모듈화되고 효율적으로 만듭니다.
Spring® Context는 Spring® Framework의 핵심 모듈로, 강력한 의존성 주입(DI) 및 애플리케이션 컨텍스트 관리를 제공합니다. Spring® Beans 모듈을 기반으로 구축되며Spring® 애플리케이션의 구성 및 관리를 위한 중앙 인터페이스 역할을 합니다.
대소문자 민감도 부적절한 처리는 리소스에 액세스하거나 리소스의 속성을 결정할 때 대소문자 민감도의 차이를 제대로 고려하지 않아 일관성 없는 결과를 초래하는 경우 발생합니다.
CVE-2024-38820은 CVE-2022-22968의 수정으로 인해 발생하는 중간 심각도 취약점입니다. 이 수정으로 DataBinder에서 대소문자를 구분하지 않는 불허된 필드 패턴이 만들어졌습니다. 그러나 String.toLowerCase()의 로캘 종속 예외로 인해 일부 필드가 의도한 대로 보호되지 않을 수 있습니다.
이 문제는 여러 버전에 영향을 미칩니다:
org.springframework:spring-context 패키지,
org.springframework:spring-core 패키지,
org.springframework:spring-web 패키지,
org.springframework:spring-webflux 패키지,
org.springframework:spring-webmvc 패키지,
org.springframework:spring-websocket 패키지.
| 취약점 서류 | |
| CVE ID | 38820 |
| 위험도 | 중간: 5.3 |
| CWE-ID 및 유형 | CWE-178: 대소문자 민감도의 부적절한 처리 |
| 영향받는 프로젝트 |
Spring® 프레임워크 |
| 영향을 받는 패키지 | 스프링 컨텍스트
스프링 코어 봄-웹 스프링-웹플럭스 spring-webmvc 스프링-웹소켓 |
| 영향을 받는 버전 | All prior 5.3.0, <5.3.0;5.3.40>,<6.0.0;6.0.24>,<6.1.0;6.1.13> |
| NVD 게시 날짜 | 2024년 10월 18일(Spring.io: 2024년 10월 17일) |
| TuxCare 수정 날짜 | 2025년 11월 25일 |
| TuxCare 고정 버전 | 5.3.39tuxcare.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
수정됨: 스프링 프레임워크용 ELS: 모든 TuxCare 패치가 적용된 마지막 오픈 소스 커뮤니티 버전 5.3.39를 기본으로 사용하는 spring-web v5.3.39.TuxCare.2.
CVE-2024-38820은 Spring® Framework의 DataBinder 구성 요소에서 발견된 취약점으로, 이 구성 요소는 외부 데이터를 Java 객체에 바인딩하는 역할을 담당합니다. 이 문제는 disallowedFields 패턴에서 대소문자 구분 처리가 부적절하게 이루어져 발생하며, 이로 인해 데이터 필드가 무단으로 조작될 가능성이 있습니다.
CVE-2024-38820은Spring® 애플리케이션에서 데이터 바인딩 중 민감한 필드의 무단 조작을 허용하여 보안 우회 또는 예상치 못한 애플리케이션 동작으로 이어질 수 있는 문제입니다.
Spring® DataBinder는 HTTP 요청 등으로 들어오는 데이터를 Java 객체에 바인딩하는 데 사용됩니다. 개발자는 주로 보안상의 이유로(예: 사용자가 isAdmin 또는 role 필드를 덮어쓰는 것을 방지하기 위해) disallowedFields를 사용하여 특정 필드가 설정되는 것을 차단합니다.
CVE-2024-38820은 대소문자를 구분하지만 바인딩 작업은 대소문자를 무시하거나 대체 대소문자를 허용할 수 있는 disallowedFields 메커니즘 때문에 발생합니다.
이런 일이 발생할 수 있습니다:
비즈니스 로직 손상 - 민감한 필드 또는 내부 필드가 조작될 수 있습니다.
다음은 CVE-2024-38820을 재현하는 최소한의 예시로, DataBinder.disallowedField의 대소문자 불일치로 인해 차단되어야 하는 민감한 필드 설정이 어떻게 허용되는지 보여줍니다.
설정:Spring® Boot +Spring® Web (취약 버전)
pom.xml – 취약한Spring® 버전(예: 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>
코드 예시
User.java
공용 클래스 사용자 {
비공개 문자열 사용자 이름;
비공개 부울은 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
org.springframework.stereotype.Controller를 가져옵니다;
org.springframework.web.bind.WebDataBinder를 가져옵니다;
org.springframework.web.bind.annotation.*를 가져옵니다;
컨트롤러
@RequestMapping("/user")
공용 클래스 UserController {
초기화 바인더
public void initBinder(WebDataBinder 바인더) {
binder.setDisallowedFields("isAdmin"); // isAdmin의 바인딩을 차단하려고 합니다.
}
포스트 매핑
@ResponseBody
public String createUser(@ModelAttribute User user) {
반환 "사용자 이름: " + user.getUsername() + ", isAdmin: " + user.isAdmin();
}
}
컬 또는 포스트맨을 통한 테스트
✅ 예상 안전 요청
curl -X POST http://localhost:8080/user -d "username=bob&isAdmin=true"
❌ 대소문자 변형을 통한 바이패스
curl -X POST http://localhost:8080/user -d "username=bob&IsAdmin=true"
Spring® Framework 5.3.x는 오픈소스 커뮤니티에서 더 이상 지원되지 않습니다. 해당 버전의 지원 종료일(End of Life)은 2023년 6월 30일입니다. 이는 단순히 해당 날짜 이후로 이 문제를 해결하기 위한 업데이트를 받지 않음을 의미합니다.
영향을 받는 컴포넌트의 사용자는 다음 완화 조치 중 하나를 적용해야 합니다:
다른Spring® Framework 버전에 대한 이 취약점 패치가 필요하신가요? 문의해 주십시오. 저희가 도와드리겠습니다!