🔍 CVE-2026-90711

9.1
CVSS Score
CRITICAL
2026-09-15
2026-09-16 19:40
✅ 완료

🇰🇷 한글 설명

proxy-addr 모듈의 1.1.0부터 2.0.7 버전 사이에서 IPv4-mapped IPv6 표기법을 사용할 때 잘못된 접두사 길이를 허용하는 취약점이 발견되었습니다. 이로 인해 공격자가 X-Forwarded-For 헤더를 조작하여 IP 기반의 접근 제어, 속도 제한, 지오로케이션 및 감사 로그를 무력화할 수 있습니다.

💡 쉬운 설명

IP 주소를 확인하는 프로그램이 주소 범위를 잘못 계산하여, 인터넷상의 모든 사용자를 신뢰할 수 있는 사용자로 오해할 수 있는 문제입니다. 이를 통해 공격자는 자신의 IP를 속여 보안 검사를 통과할 수 있습니다.

🇺🇸 원문 (English)

proxy-addr is a Node.js module that determines a request's client address behind trusted reverse proxies, and it backs Express req.ip and req.ips. In versions 1.1.0 through 2.0.7, a trust subnet written in IPv4-mapped IPv6 notation with an IPv4-sized prefix, such as ::ffff:10.0.0.0/8 instead of the correct ::ffff:10.0.0.0/104, is accepted without error but trusts every IPv4 address on the internet rather than the block it names. Because the socket peer then becomes trusted at hop 0, any unauthenticated client can supply an arbitrary X-Forwarded-For header and control the address the application reads, which defeats IP-based access control, rate limiting, geolocation, and audit logging. This is a fail-open regression introduced in version 1.1.0. The issue is fixed in proxy-addr 2.0.8, and users should upgrade to 2.0.8 or later. As a workaround, ensure any IPv4-mapped IPv6 trust subnet uses a prefix length of at least 97, or express the range in plain IPv4 notation.

📍 영향받는 시스템

proxy-addr versions 1.1.0 through 2.0.7

⚔️ 공격 벡터

공격자가 임의의 X-Forwarded-For 헤더를 전송하여 애플리케이션이 인식하는 클라이언트 IP를 조작함

🛡️ 대응 방법

proxy-addr를 2.0.8 버전 이상으로 업그레이드하거나, IPv4-mapped IPv6 접두사 길이를 최소 97 이상으로 설정함

🔧 검증 코드

출력된 결과의 버전이 1.1.0 이상 2.0.7 이하인지 확인하여 취약 여부를 판단함

Shell / Script
npm list proxy-addr | grep proxy-addr

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js