🔍 CVE-2026-43929

8.2
CVSS Score
HIGH
2026-05-12
2026-10-26 18:10
✅ 완료

🇰🇷 한글 설명

ssrfcheck 1.3.0 이하에서 IPv4-mapped IPv6 주소 표기법(예: [::ffff:127.0.0.1])을 통해 사설 IP 주소 검사를 우회할 수 있습니다. Node.js의 WHATWG URL 파서가 IPv6 주소 내의 IPv4 표기법을 자동으로 압축된 16진수 형태로 정규화하여, 라이브러리의 정규식이 점 표기법만 매칭하기 때문입니다. AWS/GCP/Azure 메타데이터 주소(169.254.169.254)를 포함한 모든 사설 IP 범위가 SSRF 공격에 노출됩니다.

💡 쉬운 설명

ssrfcheck 라이브러리가 특정 형식의 주소를 통해 서버 공격을 막지 못합니다. 공격자가 IPv6 주소 형식으로 위장된 비공개 서버 주소를 사용하면 검사 시스템을 우회할 수 있습니다.

🇺🇸 원문 (English)

ssrfcheck is a library that checks if a string contains a potential SSRF attack. In 1.3.0 and earlier, ssrfcheck fails to block Server-Side Request Forgery attacks when the target private IP address is encoded as an IPv4-mapped IPv6 address (e.g. http://[::ffff:127.0.0.1]/). The WHATWG URL parser built into Node.js silently normalizes the IPv4 notation inside the brackets to compressed hex form ([::ffff:7f00:1]) before the library's private-IP regex ever runs. The regex was written to match dot-notation only and therefore never matches any real input — all seven IANA private IPv4 ranges, including the AWS/GCP/Azure metadata address 169.254.169.254, are bypassed. Any application using isSSRFSafeURL() to guard HTTP requests made with user-supplied URLs is fully exposed to SSRF.

📍 영향받는 시스템

ssrfcheck v1.3.0 이하 (Node.js 기반 애플리케이션)

⚔️ 공격 벡터

IPv4-mapped IPv6 주소(::ffff:X.X.X.X) 형식으로 인코딩된 사설 IP 주소 사용

🛡️ 대응 방법

ssrfcheck를 최신 버전으로 업그레이드하거나 16진수 IPv6 형식도 검사하도록 정규식 수정

🔧 검증 코드

설치된 ssrfcheck의 버전이 1.3.0 이하이면 취약점이 있습니다. 1.3.1 이상으로 업그레이드 필요

Shell / Script
npm list ssrfcheck 2>/dev/null | grep -E '(ssrfcheck|v[0-9])'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js