🇰🇷 한글 설명
Spring Boot의 ${random.value} 속성이 시크릿 값 생성에 부적절한 약한 난수를 발생시키는 취약점입니다. ${random.int}와 ${random.long}도 예측 가능한 범위의 숫자값만 생성하므로 시크릿용으로 사용하면 안 됩니다. ${random.uuid}는 이 문제에 영향을 받지 않습니다.
💡 쉬운 설명
Spring Boot의 일부 난수 생성 기능이 암호나 비밀 키로 사용하기에 너무 약하거나 예측 가능합니다. 공격자가 이 약한 난수의 패턴을 추측하여 애플리케이션의 시크릿을 노출시킬 수 있습니다.
🇺🇸 원문 (English)
Values produced by ${random.value} are not suitable for use as secrets. ${random.uuid} is not affected. ${random.int} and ${random.long} should never be used for secrets as they are numeric values with a predictable range.
Affected: Spring Boot 4.0.0–4.0.5 (fix 4.0.6), 3.5.0–3.5.13 (fix 3.5.14), 3.4.0–3.4.15 (fix 3.4.16), 3.3.0–3.3.18 (fix 3.3.19), 2.7.0–2.7.32 (fix 2.7.33); random value property source / weak PRNG for secrets. Versions that are no longer supported are also affected per vendor advisory.
📍 영향받는 시스템
Spring Boot 4.0.0–4.0.5, 3.5.0–3.5.13, 3.4.0–3.4.15, 3.3.0–3.3.18, 2.7.0–2.7.32 및 지원 종료된 모든 버전
⚔️ 공격 벡터
애플리케이션이 ${random.value}, ${random.int}, ${random.long}을 시크릿으로 사용하는 경우, 공격자가 약한 난수의 예측 가능성을 이용하여 인증 토큰이나 암호화 키를 추측할 수 있습니다.
🛡️ 대응 방법
영향받는 Spring Boot 버전을 패치 버전으로 즉시 업그레이드하고, 시크릿 생성에 ${random.uuid}나 암호학적으로 안전한 난수 생성기를 사용하세요.
🔧 검증 코드
출력된 Spring Boot 버전이 위의 취약한 범위에 속하면 패치 버전으로 업데이트해야 합니다.
grep -oP '(?<=<version>)[^<]+' pom.xml 2>/dev/null | head -1