🇰🇷 한글 설명
Deno는 JavaScript, TypeScript, WebAssembly 런타임입니다. 2.7.5 이전 버전에서는 Deno 프로그램이 클라이언트 WebSocket 연결을 열 때, 원격 서버가 보낸 핸드셰이크 응답의 Sec-WebSocket-Protocol 및 Sec-WebSocket-Extensions 헤더에 출력 가능한 ASCII가 아닌 바이트(0x80-0xFF)가 포함되면 패닉이 발생해 Deno 프로세스 전체가 종료될 수 있습니다. 이 취약점은 2.7.5에서 수정되었습니다.
💡 쉬운 설명
Deno로 만든 프로그램이 WebSocket으로 서버에 연결할 때, 악의적인 서버가 특수한 응답을 보내면 프로그램 전체가 강제로 종료될 수 있습니다. 2.7.5 이상 버전으로 업데이트하면 이 문제가 해결됩니다.
🇺🇸 원문 (English)
Deno is a JavaScript, TypeScript, and WebAssembly runtime. Prior to 2.7.5, a Deno program that opens a client WebSocket connection could be crashed by the remote server. While handling the WebSocket handshake response, Deno parsed the Sec-WebSocket-Protocol and Sec-WebSocket-Extensions response headers in a way that assumed their bytes were always printable ASCII. A response header containing non-visible-ASCII bytes (0x80-0xFF) caused a panic that aborted the entire Deno process. This vulnerability is fixed in 2.7.5.
📍 영향받는 시스템
Deno 2.7.5 미만 버전을 사용하는 클라이언트 WebSocket 연결 기반 프로그램
⚔️ 공격 벡터
악의적인 WebSocket 서버가 Sec-WebSocket-Protocol 또는 Sec-WebSocket-Extensions 헤더에 0x80-0xFF 바이트를 포함한 핸드셰이크 응답을 전송하여 Deno 프로세스를 크래시시킴
🛡️ 대응 방법
Deno를 2.7.5 이상으로 업데이트 (deno upgrade --version 2.7.5)
🔧 검증 코드
출력된 Deno 버전이 2.7.5 미만이면 취약하므로 업데이트가 필요하고, 2.7.5 이상이면 패치가 적용된 것입니다.
deno --version 2>/dev/null | head -n 1