🇰🇷 한글 설명
Rack 웹 서버 인터페이스의 특정 버전에서 Host 헤더를 파싱할 때 RFC 표준을 준수하지 않는 특수문자(/, ?, #, @ 등)를 허용하는 취약점이 발견되었습니다. 이로 인해 호스트 검증 로직을 우회하여 호스트 헤더 포이즈닝 공격이 가능하며, 링크 생성이나 리다이렉션 시 악의적인 URL로 유도될 수 있습니다.
💡 쉬운 설명
웹사이트 주소를 확인하는 과정에서 허용되지 않는 특수문자가 섞여 들어와도 이를 정상적인 주소로 착각하는 문제입니다. 공격자가 이 점을 이용해 가짜 주소로 사용자를 유인하거나 보안 검사를 통과할 수 있습니다.
🇺🇸 원문 (English)
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Request parses the Host header using an AUTHORITY regular expression that accepts characters not permitted in RFC-compliant hostnames, including /, ?, #, and @. Because req.host returns the full parsed value, applications that validate hosts using naive prefix or suffix checks can be bypassed. This can lead to host header poisoning in applications that use req.host, req.url, or req.base_url for link generation, redirects, or origin validation. This issue has been patched in versions 3.1.21 and 3.2.6.
📍 영향받는 시스템
Rack 3.0.0.beta1 ~ 3.1.20, 3.2.0 ~ 3.2.5
⚔️ 공격 벡터
Host 헤더에 RFC 표준에 어긋나는 특수문자를 삽입하여 호스트 검증 로직을 우회하는 방식
🛡️ 대응 방법
Rack 버전을 3.1.21 또는 3.2.6 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 Rack 버전이 취약한 범위(3.1.21 미만 또는 3.2.6 미만)에 해당하면 취약한 상태입니다.
gem list rack | grep -E '(\(3\.[0-1]\.[0-2][0-1]|3\.2\.[0-6])\)'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server