🇰🇷 한글 설명
Spring Framework의 ResourceHttpRequestHandler가 정적 리소스를 제공할 때 범위 요청(Range Request)을 처리하는 과정에서 발생하는 취약점입니다. 공격자가 과도하게 많은 범위나 중복된 범위를 포함한 Range 헤더를 전송하면 서버 자원을 고갈시켜 서비스 거부(DoS) 상태를 유발할 수 있습니다.
💡 쉬운 설명
웹사이트의 파일을 일부만 요청하는 기능을 악용하여, 서버에 한꺼번에 너무 많은 요청을 보내 서버를 마비시키는 공격입니다. 마치 한 명의 손님이 수만 개의 작은 조각으로 나누어 음식을 주문하여 주방을 마비시키는 것과 같습니다.
🇺🇸 원문 (English)
Spring Framework, version 5.1, versions 5.0.x prior to 5.0.10, versions 4.3.x prior to 4.3.20, and older unsupported versions on the 4.2.x branch provide support for range requests when serving static resources through the ResourceHttpRequestHandler, or starting in 5.0 when an annotated controller returns an org.springframework.core.io.Resource. A malicious user (or attacker) can add a range header with a high number of ranges, or with wide ranges that overlap, or both, for a denial of service attack. This vulnerability affects applications that depend on either spring-webmvc or spring-webflux. Such applications must also have a registration for serving static resources (e.g. JS, CSS, images, and others), or have an annotated controller that returns an org.springframework.core.io.Resource. Spring Boot applications that depend on spring-boot-starter-web or spring-boot-starter-webflux are ready to serve static resources out of the box and are therefore vulnerable.
📍 영향받는 시스템
Spring Framework 5.1, 5.0.x < 5.0.10, 4.3.x < 4.3.20, 4.2.x (spring-webmvc 또는 spring-webflux 의존성 포함)
⚔️ 공격 벡터
HTTP 요청 헤더에 다수의 범위 또는 중복된 범위를 포함한 Range 헤더를 삽입하여 전송
🛡️ 대응 방법
Spring Framework를 보안 패치가 적용된 최신 버전(5.0.10+, 4.3.20+, 5.1 이상)으로 업데이트
🔧 검증 코드
출력된 결과에서 spring-webmvc 또는 spring-webflux의 버전을 확인하여 취약한 버전 범위에 해당하는지 체크합니다.
mvn dependency:tree | grep -E 'spring-webmvc|spring-webflux'