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 공격 흐름
    1. 환경 구성
      • Spring Boot 3.3.4 기반 Docker 이미지 빌드
      • docker build -t cve-2024-38819-poc . 명령 실행
    2. 컨테이너 실행
      • docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
      • 호스트 8080 포트로 컨테이너 접근 가능
    3. 취약점 악용
      • 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 링크 설정
    • 경로 이동
      • %2e%2e는 URL 인코딩된 ..로 상위 디렉터리 접근 가능
  • 보안 권고
    • 업데이트 적용
      • Spring 측에서 공개한 패치 버전으로 업그레이드
    • 파일 경로 검증
      • 심볼릭 링크 사용 최소화, 정적 리소스 제공 시 Path 검증화이트리스트 적용
    • 로그 모니터링 및 접근 제어
      • 디렉터리 트래버설 시도 탐지 규칙(IDS/IPS, WAF 등) 설정
      • 서버 설정 변경(심볼릭 링크 사용 제한, 파일 권한 제한)
    • 지속적인 패치 및 보안 점검
      • 정기적으로 라이브러리 버전 확인 및 보안 업데이트 수행