🇰🇷 한글 설명
ReactPHP의 react/http 라이브러리에서 잘못된 Transfer-Encoding: chunked 본문을 처리할 때 무한 루프가 발생하는 취약점이 발견되었습니다. 이로 인해 악의적인 클라이언트가 서버를 중단시키거나, 악의적인 서버가 클라이언트를 중단시키는 서비스 거부(DoS) 공격이 가능합니다.
💡 쉬운 설명
데이터를 주고받는 규칙이 잘못된 메시지를 보냈을 때, 프로그램이 끝없이 계산을 반복하며 멈춰버리는 문제입니다. 이로 인해 웹 서버나 브라우저 기능이 응답하지 않게 될 수 있습니다.
🇺🇸 원문 (English)
react/http is an event-driven, streaming HTTP client and server implementation for ReactPHP. From 0.6.0 until 1.11.1, React\Http\Io\ChunkedDecoder could enter an infinite loop while processing a malformed Transfer-Encoding: chunked body because handleData required its buffer to shrink on every iteration. An incomplete terminal-chunk trailer without CRLF left the buffer unchanged after strpos returned false, and exactly two non-CRLF bytes after a completed non-terminal chunk bypassed both the error and wait guards. The affected decoder processes request bodies for React\Http\HttpServer and response bodies for React\Http\Browser, allowing a malicious client to freeze a server or a malicious or compromised server to freeze a client. A reverse proxy that normalizes inbound requests may protect the server direction but does not protect outbound Browser requests. This issue is fixed in version 1.11.1.
📍 영향받는 시스템
react/http 0.6.0 ~ 1.11.1 버전
⚔️ 공격 벡터
조작된 Transfer-Encoding: chunked 본문을 전송하여 대상 시스템의 CPU 자원을 고갈시키고 프로세스를 정지시킴
🛡️ 대응 방법
react/http 라이브러리를 1.11.1 이상의 최신 버전으로 업데이트
🔧 검증 코드
출력된 버전 정보가 1.11.1 미만인지 확인하여 취약 여부를 판단합니다.
composer show react/http | grep 'versions'