🇰🇷 한글 설명
VMware SpringSource Spring Framework의 Expression Language(EL) 표현식이 Spring 태그 내에서 두 번 평가되는 취약점입니다. 공격자는 spring:hasBindErrors, spring:bind, spring:message, spring:theme 등의 태그 속성에 EL 표현식을 주입하여 서버의 민감한 정보에 접근할 수 있습니다.
💡 쉬운 설명
Spring Framework 웹 페이지 템플릿의 동적 표현식이 이중으로 실행되어, 공격자가 특수한 코드를 삽입해 서버의 비밀 정보를 탈취할 수 있는 문제입니다. EL 표현식 주입(Expression Language Injection)이라는 공격 기법으로 악용됩니다.
🇺🇸 원문 (English)
VMware SpringSource Spring Framework before 2.5.6.SEC03, 2.5.7.SR023, and 3.x before 3.0.6, when a container supports Expression Language (EL), evaluates EL expressions in tags twice, which allows remote attackers to obtain sensitive information via a (1) name attribute in a (a) spring:hasBindErrors tag; (2) path attribute in a (b) spring:bind or (c) spring:nestedpath tag; (3) arguments, (4) code, (5) text, (6) var, (7) scope, or (8) message attribute in a (d) spring:message or (e) spring:theme tag; or (9) var, (10) scope, or (11) value attribute in a (f) spring:transform tag, aka "Expression Language Injection."
📍 영향받는 시스템
Spring Framework 2.5.6.SEC03 이전, 2.5.7.SR023 이전, 3.0.6 이전 버전
⚔️ 공격 벡터
Spring 태그의 name, path, arguments, code, text, var, scope, message, value 속성에 EL 표현식 주입을 통한 정보 유출
🛡️ 대응 방법
Spring Framework를 2.5.6.SEC03, 2.5.7.SR023, 3.0.6 이상 버전으로 즉시 업그레이드
🔧 검증 코드
3.0.6 미만 3.x 버전이나 2.5.7.SR023 미만 2.5.x 버전이 나오면 취약함. 권장 버전 이상이면 안전함
find . -name 'pom.xml' -o -name 'build.gradle' | xargs grep -h 'spring.*version' 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | sort -u