🇰🇷 한글 설명
undici의 WebSocket 클라이언트가 서버로부터 요청하지 않은 서브프로토콜이 포함된 응답을 받을 경우, null 값을 참조하여 Node.js 프로세스 전체를 충돌시키는 취약점입니다. 이 오류는 예외 처리가 되지 않은 상태로 발생하여 애플리케이션을 즉시 종료시킵니다. 공격자가 제어하는 서버나 중간자 공격(MITM)을 통해 인증 없이 원격으로 프로세스를 중단시킬 수 있습니다.
💡 쉬운 설명
웹사이트와 통신하는 도구(undici)가 예상치 못한 응답을 받았을 때, 오류를 제대로 처리하지 못하고 프로그램 전체를 꺼버리는 문제입니다. 나쁜 의도를 가진 서버에 연결하기만 해도 서비스가 강제로 종료될 수 있습니다.
🇺🇸 원문 (English)
undici's WebSocket client crashes the whole Node.js process during the opening handshake when a server responds with a subprotocol that the client never requested. A default WebSocket connection sends no subprotocol, but if the server's 101 response includes a Sec-WebSocket-Protocol header, undici dereferences a null value while checking it against the requested list and throws an uncaught TypeError. Because that code runs inside a microtask with no surrounding error handling, the exception propagates and terminates the process under Node's default behavior, instead of gracefully failing the connection as required by the WebSocket protocol. Any application that opens a WebSocket to an attacker-controlled or compromised server, or over a plaintext connection subject to a machine-in-the-middle, can be crashed remotely without authentication in the default configuration. This affects undici versions from 6.7.0 up to 6.28.1, from 7.0.0 up to 7.29.1, and from 8.0.0 up to 8.10.2. Users should upgrade to undici 6.28.1, 7.29.1, or 8.10.2.
📍 영향받는 시스템
undici 6.7.0~6.28.1, 7.0.0~7.29.1, 8.0.0~8.10.2
⚔️ 공격 벡터
공격자가 제어하는 서버에 WebSocket 연결을 시도하거나 중간자 공격을 통해 조작된 Sec-WebSocket-Protocol 헤더를 주입
🛡️ 대응 방법
undici 버전을 6.28.1, 7.29.1 또는 8.10.2 이상으로 업그레이드
🔧 검증 코드
출력된 undici의 버전이 취약한 범위(6.7.0-6.28.1, 7.0.0-7.29.1, 8.0.0-8.10.2)에 포함되는지 확인
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
IBM WebSphere Application Server