🇰🇷 한글 설명
Rack 웹 서버 인터페이스의 `Rack::Multipart::Parser`에서 멀티파트 헤더가 종료되지 않을 경우 데이터를 무제한으로 메모리에 축적하는 취약점이 발견되었습니다. 공격자가 의도적으로 불완전한 헤더를 전송하면 메모리 고갈을 유발하여 서비스 거부(DoS) 상태를 만들 수 있습니다.
💡 쉬운 설명
웹사이트에 파일을 올릴 때 사용하는 기능에 결함이 있어, 공격자가 가짜 데이터를 계속 보내 컴퓨터의 메모리를 가득 채울 수 있습니다. 이로 인해 서버가 멈추거나 정상적인 서비스를 제공하지 못하게 됩니다.
🇺🇸 원문 (English)
Rack is a modular Ruby web server interface. In versions prior to 2.2.19, 3.1.17, and 3.2.2, `Rack::Multipart::Parser` can accumulate unbounded data when a multipart part’s header block never terminates with the required blank line (`CRLFCRLF`). The parser keeps appending incoming bytes to memory without a size cap, allowing a remote attacker to exhaust memory and cause a denial of service (DoS). Attackers can send incomplete multipart headers to trigger high memory use, leading to process termination (OOM) or severe slowdown. The effect scales with request size limits and concurrency. All applications handling multipart uploads may be affected. Versions 2.2.19, 3.1.17, and 3.2.2 cap per-part header size (e.g., 64 KiB). As a workaround, restrict maximum request sizes at the proxy or web server layer (e.g., Nginx `client_max_body_size`).
📍 영향받는 시스템
Rack 버전 2.2.19, 3.1.17, 3.2.2 미만 버전
⚔️ 공격 벡터
종료 문자(CRLFCRLF)가 없는 불완전한 멀티파트 헤더를 포함한 요청을 전송하여 메모리 점유
🛡️ 대응 방법
Rack을 최신 보안 패치 버전(2.2.19, 3.1.17, 3.2.2 이상)으로 업데이트하거나 프록시 계층에서 요청 크기를 제한함
🔧 검증 코드
출력된 Rack의 버전을 확인하여 취약한 버전 범위에 해당하는지 체크함