🇰🇷 한글 설명
Engine.IO 6.6.0부터 6.6.10 버전 사이에서 발생하며, 업그레이드 요청 시 세션에 저장된 프로토콜 버전을 강제하지 않고 클라이언트가 임의로 결정할 수 있는 취약점입니다. 악의적인 클라이언트가 호환되지 않는 프로토콜 버전을 사용하여 하트비트 패킷을 보내면 예외가 발생하여 Node.js 프로세스가 종료될 수 있습니다.
💡 쉬운 설명
통신 규칙을 마음대로 조작하여 서버를 강제로 종료시킬 수 있는 결함입니다. 공격자가 특수한 신호를 보내면 서버 프로그램이 오류를 일으키며 멈추게 됩니다.
🇺🇸 원문 (English)
Socket.IO enables bidirectional and low-latency communication for every platform. From Engine.IO 6.6.0 until 6.6.10, a transport upgrade can independently derive an Engine.IO protocol revision from the upgrade request instead of enforcing the revision stored on the existing session. A malicious client can establish a valid session and send an upgrade request with a different or omitted EIO query parameter, attaching a transport with incompatible parser and heartbeat behavior. A crafted heartbeat packet can then trigger an uncaught exception and terminate the Node.js process, including when Engine.IO v3 compatibility is disabled because an omitted EIO value is interpreted as revision 3 on the affected path. This issue is fixed in Engine.IO 6.6.10.
📍 영향받는 시스템
Engine.IO versions 6.6.0 through 6.6.10
⚔️ 공격 벡터
조작된 EIO 쿼리 파라미터를 포함한 업그레이드 요청 및 하트비트 패킷 전송
🛡️ 대응 방법
Engine.IO 버전을 6.6.10 이상으로 업데이트
🔧 검증 코드
출력된 버전이 6.6.0에서 6.6.10 사이라면 취약한 상태입니다.
npm list engine.io --depth=0 | grep -E 'engine.io@6\.(6\.[0-9]|6\.[1-9]|7\.)'