🇰🇷 한글 설명
Spring Security의 여러 구성 요소가 보안 민감한 값을 비교할 때 상수 시간 비교 대신 표준 문자열 비교(String.equals())를 사용합니다. 이로 인해 잘못된 값이 입력되었을 때 일치하는 앞부분의 길이에 따라 응답 시간이 달라지는 타이밍 공격에 취약할 수 있습니다.
💡 쉬운 설명
비밀번호나 인증 키를 확인할 때, 틀린 부분을 찾는 속도가 미세하게 달라지는 현상이 발생합니다. 공격자는 이 시간 차이를 측정하여 정답을 한 글자씩 알아낼 수 있습니다.
🇺🇸 원문 (English)
Several components in Spring Security compare security-sensitive values using standard string equality (String.equals()) rather than a constant-time comparison. Because String.equals() returns as soon as it finds a differing character, the time taken to reject an incorrect value is proportional to the number of leading characters that match the expected value.
Spring Security 7.1.0
Spring Security 7.0.0 - 7.0.6
Spring Security 6.5.0 - 6.5.11
Spring Security 6.4.0 - 6.4.18
Spring Security 5.8.0 - 5.8.27
Spring Security 5.7.0 - 5.7.25
📍 영향받는 시스템
Spring Security 7.1.0, 7.0.0-7.0.6, 6.5.0-6.5.11, 6.4.0-6.4.18, 5.8.0-5.8.27, 5.7.0-5.7.25
⚔️ 공격 벡터
타이밍 공격(Timing Attack)을 통해 응답 시간 차이를 분석하여 민감한 값을 유추
🛡️ 대응 방법
Spring Security를 취약점이 해결된 최신 패치 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 spring-security 버전이 취약한 버전 범위에 포함되는지 확인하십시오.
mvn dependency:list | grep spring-security