🇰🇷 한글 설명
Rack은 모듈형 Ruby 웹 서버 인터페이스로, 2.2.18 버전 이전의 Rack::QueryParser는 파라미터 제한을 '&' 구분자에만 적용하고 ';' 구분자에는 적용하지 않는 취약점이 있습니다. 공격자는 ';'를 사용하여 파라미터 개수 제한을 우회할 수 있으며, 이를 통해 CPU와 메모리 소비를 급증시켜 서비스 거부(DoS) 공격을 수행할 수 있습니다.
💡 쉬운 설명
웹사이트가 한 번에 받을 수 있는 데이터 개수를 제한하고 있는데, 공격자가 특수 기호를 사용해 이 제한을 속이고 엄청나게 많은 데이터를 보내는 방식입니다. 이로 인해 서버의 자원이 바닥나서 웹사이트가 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
Rack is a modular Ruby web server interface. Prior to version 2.2.18, Rack::QueryParser enforces its params_limit only for parameters separated by &, while still splitting on both & and ;. As a result, attackers could use ; separators to bypass the parameter count limit and submit more parameters than intended. Applications or middleware that directly invoke Rack::QueryParser with its default configuration (no explicit delimiter) could be exposed to increased CPU and memory consumption. This can be abused as a limited denial-of-service vector. This issue has been patched in version 2.2.18.
📍 영향받는 시스템
Rack version < 2.2.18
⚔️ 공격 벡터
세미콜론(;) 구분자를 사용하여 파라미터 개수 제한을 우회하고 대량의 파라미터를 전송하는 방식
🛡️ 대응 방법
Rack 라이브러리를 2.2.18 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 rack의 버전을 확인하여 2.2.18 미만인지 체크합니다.