🔍 CVE-2026-103936

7.5
CVSS Score
HIGH
2026-10-15
2026-10-16 20:04
✅ 완료

🇰🇷 한글 설명

libp2p의 @libp2p/webrtc 패키지에서 인증되지 않은 STUN Binding Request를 처리할 때 발생하는 취약점입니다. 공격자가 조작된 ufrag 값을 포함한 UDP 패킷을 보내면, 내부 라이브러리에서 유효하지 않은 인자 오류가 발생하여 프로세스가 강제 종료됩니다. 이 문제는 6.0.28 버전에서 수정되었습니다.

💡 쉬운 설명

해커가 특수한 데이터가 담긴 인터넷 신호를 보내면 프로그램이 갑자기 꺼져버리는 문제입니다. 이를 통해 서비스가 중단될 수 있는 서비스 거부(DoS) 공격이 가능합니다.

🇺🇸 원문 (English)

libp2p is a JavaScript implementation of the libp2p networking stack. Prior to 6.0.28, the @libp2p/webrtc webRTCDirect() Node.js listener processes unauthenticated STUN Binding Requests before PeerId authentication, Noise, muxing, protocol negotiation, connection creation, or connection-manager admission. The listener in packages/transport-webrtc/src/private-to-public/utils/stun-listener.ts forwards the packet-controlled request.ufrag into DirectRTCPeerConnection.setLocalDescription, where the value is reused as an ICE password without validating its required length and character set. A short credential causes node-datachannel or libdatachannel to raise an uncaught native invalid_argument and abort the process with SIGABRT, allowing a single remote UDP packet to deny service. The confirmed impact is process termination only, with no demonstrated memory corruption, code execution, browser impact, confidentiality impact, integrity impact, or connection-limit bypass. This issue is fixed in version 6.0.28.

📍 영향받는 시스템

libp2p JavaScript implementation (version < 6.0.28)

⚔️ 공격 벡터

인증되지 않은 원격 공격자가 조작된 ufrag 값을 포함한 단일 UDP 패킷을 전송

🛡️ 대응 방법

libp2p를 6.0.28 이상의 버전으로 업데이트

🔧 검증 코드

출력된 버전이 6.0.28 미만이면 취약한 상태이며, 6.0.28 이상이면 안전합니다.

Shell / Script
npm list @libp2p/webrtc

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Node.js