🇰🇷 한글 설명
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 이상이면 안전합니다.