🇰🇷 한글 설명
Python용 HTTP 클라이언트인 HTTPX2의 2.5.0부터 2.10.0 버전 사이에서 SSE(Server-Sent Events) 파서에 취약점이 발견되었습니다. 공격자가 제어하는 SSE 엔드포인트가 종료되지 않은 긴 라인을 여러 청크로 나누어 전송할 경우, _SSELineDecoder.decode() 함수가 버퍼링된 텍스트를 반복적으로 복사하고 재검사하여 CPU 사용량이 기하급수적으로 증가합니다. 이로 인해 동기식 워커나 비동기 이벤트 루프가 차단될 수 있습니다.
💡 쉬운 설명
특수하게 조작된 데이터를 보내는 웹사이트에 접속하면, 프로그램이 데이터를 처리하느라 과도하게 힘을 써서 컴퓨터가 멈출 수 있습니다. 이는 마치 끝이 없는 긴 문장을 계속해서 처음부터 다시 읽으라고 시키는 것과 같습니다.
🇺🇸 원문 (English)
HTTPX2 is a next generation HTTP client for Python. From 2.5.0 until 2.10.0, the HTTPX2 Server-Sent Events parser in src/httpx2/httpx2/_sse.py repeatedly copies and rescans buffered text in _SSELineDecoder.decode() when an attacker-controlled or compromised SSE endpoint splits one unterminated line across many response chunks. The behavior affects httpx2.Client.sse() and httpx2.AsyncClient.sse(), and the total processing work grows quadratically with the line length, allowing a crafted stream to consume excessive CPU and block a synchronous worker or asynchronous event loop. This issue is fixed in version 2.10.0.
📍 영향받는 시스템
HTTPX2 version 2.5.0 to 2.10.0
⚔️ 공격 벡터
공격자가 제어하는 SSE 엔드포인트를 통해 종료되지 않은 긴 라인을 여러 응답 청크로 나누어 전송하여 CPU 자원을 고갈시킴
🛡️ 대응 방법
HTTPX2 버전을 2.10.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 Version이 2.10.0 미만(2.5.0 ~ 2.10.0 사이)이면 취약한 상태입니다.
pip show httpx2 2>/dev/null | grep -E 'Version'