Kant's IT/Vulnerability
Spring Framework 경로 이동 취약점(CVE-2024-38819) PoC 공개
Kant Jo
2025. 1. 1. 21:45
Spring Framework Path Traversal Vulnerability (CVE-2024-38819) PoC Exploit Released
Spring Framework Path Traversal Vulnerability (CVE-2024-38819) PoC Exploit Released
A Proof of Concept (PoC) exploit for the critical path traversal vulnerability identified as CVE-2024-38819 in the Spring Framework has been released
gbhackers.com
- 개요
- Spring Framework에서 WebMvc.fn 또는 WebFlux.fn을 사용해 정적 리소스를 제공하는 애플리케이션에서 경로 이동(Path Traversal) 취약점 발생
- 공격자는 특수하게 조작된 HTTP 요청을 통해 서버상의 권한 없는 파일(예: /etc/passwd)에 접근 가능
- 공개된 PoC를 통해 취약점의 심각성이 입증됨
- 취약점 상세
- 취약 버전
- Spring Boot 3.3.4 (Spring Framework 6.1.13 의존성 포함) 등에서 영향
- 심볼릭 링크를 이용해 정적 리소스 폴더를 외부 경로와 연결
- URL 인코딩된
..
(%2e%2e
)을 사용해 디렉터리 상위로 이동 가능
- 발생 원인
- RouterFunctions + FileSystemResource 구성 시, 파일 경로 검증 미흡
- 공격자가 심볼릭 링크 및 경로 인코딩을 이용해 부적절한 파일 접근 허용
- 취약 버전
- PoC 공격 흐름
- 환경 구성
- Spring Boot 3.3.4 기반 Docker 이미지 빌드
docker build -t cve-2024-38819-poc .
명령 실행
- 컨테이너 실행
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
- 호스트 8080 포트로 컨테이너 접근 가능
- 취약점 악용
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
- 정상 동작 시
/etc/passwd
내용이 반환되어 공격 성공 확인
- 환경 구성
- 기술적 배경
- RouterFunction 예시
public RouterFunction<ServerResponse> staticResourceRouter() { return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/")); }
- 심볼릭 링크 생성
- Dockerfile에서
/app/static/link
→/static
링크 설정
- Dockerfile에서
- 경로 이동
%2e%2e
는 URL 인코딩된..
로 상위 디렉터리 접근 가능
- 보안 권고
- 업데이트 적용
- Spring 측에서 공개한 패치 버전으로 업그레이드
- 파일 경로 검증
- 심볼릭 링크 사용 최소화, 정적 리소스 제공 시 Path 검증 및 화이트리스트 적용
- 로그 모니터링 및 접근 제어
- 디렉터리 트래버설 시도 탐지 규칙(IDS/IPS, WAF 등) 설정
- 서버 설정 변경(심볼릭 링크 사용 제한, 파일 권한 제한)
- 지속적인 패치 및 보안 점검
- 정기적으로 라이브러리 버전 확인 및 보안 업데이트 수행
- 업데이트 적용