🇰🇷 한글 설명
Tornado 웹 프레임워크 6.5.8 미만 버전에서 application/x-www-form-urlencoded 요청 본문을 처리할 때 필드 개수 제한을 설정하지 않아 발생하는 취약점입니다. 공격자가 수백만 개의 구분자로 구분된 필드를 포함한 요청을 보내면 단일 스레드 이벤트 루프가 동기적으로 중단되어 모든 연결이 지연될 수 있습니다.
💡 쉬운 설명
웹 서버에 한꺼번에 너무 많은 데이터를 담은 요청을 보내서 서버를 멈추게 만드는 공격입니다. 이로 인해 서버가 정상적인 요청을 처리하지 못하고 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
📍 영향받는 시스템
Tornado Python web framework versions prior to 6.5.8
⚔️ 공격 벡터
인증되지 않은 사용자가 수백만 개의 필드를 포함한 대규모 HTTP POST 요청을 전송
🛡️ 대응 방법
Tornado 프레임워크를 6.5.8 버전 이상으로 업데이트
🔧 검증 코드
출력된 버전 번호가 6.5.8보다 낮으면 취약한 상태입니다.
pip show tornado | grep Version