🔍 CVE-2016-9879

7.5
CVSS Score
HIGH
2017-01-06
2026-06-17 00:56
✅ 완료

🇰🇷 한글 설명

Spring Security는 보안 제약 처리 시 URL 경로 매개변수를 고려하지 않습니다. 공격자는 인코딩된 '/'가 포함된 URL 경로 매개변수를 추가하여 보안 제약을 우회할 수 있습니다. 이는 Servlet 컨테이너의 경로 매개변수 처리 방식이 불일치하기 때문입니다.

💡 쉬운 설명

웹 주소에 특수한 매개변수를 추가하여 보안 제한을 피할 수 있는 문제입니다. 마치 잠금장치의 약점을 찾아 우회하는 것과 같습니다.

🇺🇸 원문 (English)

An issue was discovered in Pivotal Spring Security before 3.2.10, 4.1.x before 4.1.4, and 4.2.x before 4.2.1. Spring Security does not consider URL path parameters when processing security constraints. By adding a URL path parameter with an encoded "/" to a request, an attacker may be able to bypass a security constraint. The root cause of this issue is a lack of clarity regarding the handling of path parameters in the Servlet Specification. Some Servlet containers include path parameters in the value returned for getPathInfo() and some do not. Spring Security uses the value returned by getPathInfo() as part of the process of mapping requests to security constraints. The unexpected presence of path parameters can cause a constraint to be bypassed. Users of Apache Tomcat (all current versions) are not affected by this vulnerability since Tomcat follows the guidance previously provided by the Servlet Expert group and strips path parameters from the value returned by getContextPath(), getServletPath(), and getPathInfo(). Users of other Servlet containers based on Apache Tomcat may or may not be affected depending on whether or not the handling of path parameters has been modified. Users of IBM WebSphere Application Server 8.5.x are known to be affected. Users of other containers that implement the Servlet specification may be affected.

📍 영향받는 시스템

Spring Security 3.2.10 이전, 4.1.4 이전, 4.2.1 이전; IBM WebSphere Application Server 8.5.x; Tomcat 기반의 일부 Servlet 컨테이너

⚔️ 공격 벡터

GET/POST 요청에 인코딩된 '/'를 포함한 경로 매개변수(;)를 삽입하여 URL 매핑 우회

🛡️ 대응 방법

Spring Security를 최신 버전으로 업그레이드 (3.2.10, 4.1.4, 4.2.1 이상)

🔧 검증 코드

Spring Security JAR 파일의 버전을 확인합니다. 3.2.10 이상, 4.1.4 이상, 또는 4.2.1 이상이면 안전합니다.

Shell / Script
find / -name 'spring-security*.jar' 2>/dev/null | xargs -I {} sh -c 'echo {} && jar tf {} 2>/dev/null | grep -i "pom.properties" | head -1' | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'

📊 CVSS Vector String

CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

💻 영향받는 소프트웨어

Apache Tomcat