지원 종료(EOL)된 PHP용 php2shell 패치(CVE-2026-109618 및 CVE-2026-109619)가 출시되었습니다. 수요가 많아 평소보다 영업팀의 답변이 늦어지고 있으므로, 패치된 패키지를 가장 빠르게 확보하려면 온라인에서 Runtimes용 ELS를 구매하시기 바랍니다 (새 탭에서 열림). | 패치 FAQ 읽어보기
이 CVE는 TuxCare 팀과
에 의해 해결되었으며,
Spring® 사용자를 위한 패치가 ELS에 제공되었습니다.
Spring® 프레임워크는 자바 애플리케이션 구축을 위한 포괄적인 오픈소스 프레임워크입니다. 의존성 주입(DI), 측면 지향 프로그래밍(AOP), 트랜잭션 관리를 제공하여 자바 개발을 보다 모듈화되고 효율적으로 만듭니다.
Spring® Web은 자바 기반 웹 애플리케이션 및 RESTful 서비스 구축을 위해 설계된Spring® Framework의 모듈입니다. 서블릿 기반 요청 처리, REST API 지원,Spring® Web MVC와의 통합 등 필수 웹 기능을 제공합니다. Spring® Web MVC는 Spring® Framework 내 모듈로, 웹 애플리케이션 구축을 위한 강력한 모델-뷰-컨트롤러(MVC) 아키텍처를 제공합니다. Spring® WebFlux는Spring® 5에서 도입된 반응형, 비차단 웹 프레임워크입니다. Project Reactor (반응형 스트림)를 사용하여 비동기적이고 이벤트 주도형 웹 애플리케이션을 처리하도록 설계되었습니다.
제한된 디렉토리에 대한 경로명의 부적절한 제한('경로 통과')은 제품이 외부 입력을 사용하여 제한된 상위 디렉터리 아래에 있는 파일 또는 디렉토리를 식별하기 위한 경로명을 구성할 때 발생하지만 제품이 경로명 내의 특수 요소를 제대로 무력화하지 않아 경로명이 제한된 디렉토리 외부의 위치로 확인될 수 있는 경우 발생합니다.
CVE-2024-38816은 심각도가 높은 경로 탐색(Path Traversal) 취약점으로, 정적 리소스를 제공하기 위해 WebMvc.fn 또는 WebFlux.fn 기능형 웹 프레임워크를 사용하는 애플리케이션에 영향을 미칩니다. 공격자는 악의적인 HTTP 요청을 조작하여Spring® 애플리케이션 프로세스가 접근할 수 있는 파일 시스템 내의 모든 파일을 가져올 수 있도록 이 취약점을 악용할 수 있습니다.
이 문제는 여러 버전에 영향을 미칩니다:
org.springframework:spring-webflux 패키지,
org.springframework:spring-webmvc 패키지.
| 취약점 서류 | |
| CVE ID | 38816 |
| 위험도 | 높음: 7.5 |
| CWE-ID 및 유형 | CWE-22: 제한된 디렉터리에 대한 경로 이름의 부적절한 제한('경로 탐색') |
| 영향받는 프로젝트 |
Spring® 프레임워크 |
| 영향을 받는 패키지 | 스프링-웹플럭스
spring-webmvc |
| 영향을 받는 버전 | All prior 5.3.0, <5.3.0;5.3.39>,<6.0.0;6.0.23>,<6.1.0;6.1.12> |
| NVD 게시 날짜 | 2024년 9월 13일(Spring.io: 2024년 9월 12일) |
| TuxCare 수정 날짜 | 2024년 9월 26일 |
| TuxCare 고정 버전 | 5.3.39tuxcare.1 |
https://mvnrepository.com/artifact/org.springframework/spring-webflux
https://mvnrepository.com/artifact/org.springframework/spring-webmvc
기능적 웹 프레임워크인 WebMvc.fn 또는 WebFlux.fn을 통해 정적 리소스를 제공하는 애플리케이션은 경로 탐색 공격에 취약합니다. 공격자는 악의적인 HTTP 요청을 조작하여Spring® 애플리케이션이 실행 중인 프로세스에서도 접근 가능한 파일 시스템 내의 모든 파일을 획득할 수 있습니다.
특히 다음 두 가지가 모두 해당되는 경우 애플리케이션은 취약한 상태입니다:
그러나 다음 중 하나라도 해당되는 경우 악성 요청이 차단되고 거부됩니다:
라우터 함수를 사용하고 파일 시스템에서 파일을 제공하는 앱(예: FileSystemResource 사용)에서 공격자는 다음과 같은 경로를 요청할 수 있습니다:
/public/../../../../etc/passwd
...민감한 파일을 읽을 수 있습니다.
Spring® WebFlux.fn 및 Spring® WebMvc.fn 애플리케이션 모두에 영향을 미치므로, 다양한 웹 스택 전반에 걸쳐 관련성이 있습니다.
Spring® WebFlux 또는 WebMvc.fn 애플리케이션에서 RouterFunctions를 사용하여 로컬 파일 시스템(예: /var/www/files)의 파일을 제공하도록 구성한 경우, 공격자는 다음과 같은 URL을 조작할 수 있습니다:
/파일/../../../etc/passwd
...허용된 디렉터리 외부의 임의 파일에 액세스할 수 있습니다.
추가 보안 제약 없이 FileSystemResource를 사용하여 정적 파일을 서비스하세요.
Spring® Boot 2.7.17(취약점이 있는Spring® Framework 5.3.39 포함)을 사용하십시오.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<version>2.7.17</version>
</dependency>
/static-files/
└── hello.txt
@Configuration
공용 클래스 StaticResourceRouter {
@Bean
public RouterFunction<ServerResponse> staticFiles() {
라우터 함수 반환
.resources("/files/**", new FileSystemResource("/absolute/path/to/static-files"));
}
}
GET http://localhost:8080/files/hello.txt
✅ 파일로 응답합니다.
GET http://localhost:8080/files/../../../etc/passwd
또는 URL 인코딩:
GET http://localhost:8080/files/..%2F..%2F..%2Fetc%2Fpasswd
etc/passwd(또는 /static-files 외부의 기타 액세스 가능한 파일)의 콘텐츠를 반환합니다.
Spring® Framework 5.3.x는 오픈소스 커뮤니티에서 더 이상 지원되지 않습니다. 해당 버전의 지원 종료일(End of Life)은 2023년 6월 30일입니다. 이는 단순히 해당 날짜 이후로 이 문제를 해결하기 위한 업데이트를 받지 않음을 의미합니다.
영향을 받는 컴포넌트의 사용자는 다음 완화 조치 중 하나를 적용해야 합니다:
다른Spring® Framework 버전에 대한 이 취약점 패치가 필요하신가요? 문의해 주십시오. 저희가 도와드리겠습니다!