🇰🇷 한글 설명
Http4s의 DigestAuth 구현에서 replay protection 로직 오류로 인해, 마지막 nonce-count에 1을 더한 값만 기록하는 문제가 발견되었습니다. 이로 인해 병렬 요청 시 실제 수용된 최대 nonce-count보다 낮은 값이 저장되어, 공격자가 캡처한 인증 헤더를 재사용하여 인증된 요청을 재전송할 수 있습니다.
💡 쉬운 설명
인증 정보를 보호하는 장치가 제대로 작동하지 않아, 해커가 가로챈 로그인 정보를 이용해 사용자 대신 명령을 내릴 수 있는 보안 결함입니다. 정상적인 사용자가 여러 요청을 동시에 보낼 때 보안 시스템이 혼란을 느껴 방어에 실패하는 원리입니다.
🇺🇸 원문 (English)
Http4s is a Scala interface for HTTP services. Prior to 0.23.35 and 1.0.0-M47, DigestAuth replay protection records lastNc plus one instead of the highest nonce-count value it has accepted. When a legitimate client sends noncontiguous nc values because of parallel or retried requests, the stored counter remains below the accepted maximum, allowing a passive observer to replay a captured Authorization header multiple times. Successful replays execute authenticated requests, including state-changing operations, as the captured user. This issue is fixed in versions 0.23.35 and 1.0.0-M47.
📍 영향받는 시스템
Http4s versions prior to 0.23.35 and 1.0.0-M47
⚔️ 공격 벡터
수동적 관찰자가 캡처한 Authorization 헤더를 사용하여 인증된 요청을 재전송(Replay Attack)
🛡️ 대응 방법
Http4s를 0.23.35 또는 1.0.0-M47 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 http4s-core의 버전이 0.23.35 미만이거나 1.0.0-M47 미만이면 취약한 상태입니다.
sbt dependencyBrowseTree | grep -E 'http4s-core:[0-9.]+'