All vulnerabilities
CVE-2026-90711GHSA-jqcg-44mw-7w3h

proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet

proxy-addr proxy-addrnpmLibraries & packages
CVSS
9.1Critical
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.26%Chance of exploitation activity in the next 30 days, higher than 16% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in2.0.8Fixed versionGitHub
Published15 Sep 2026Updated 5 Oct 2026CVE List

What fixes it

  • 2.0.8proxy-addr, npmGitHubnpm install proxy-addr@2.0.8
  • 2.0.8proxy-addrCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

Impact

proxy-addr determines which network hops are trusted proxies so that X-Forwarded-For can be believed. When an application configures a trust subnet as an IPv4-mapped IPv6 address with a short prefix, such as ::ffff:10.0.0.0/8 (the correct spelling is ::ffff:10.0.0.0/104), the subnet compiles with all-zero leading bits and matches every IPv4 address instead of the block it names. The same happens for any IPv6 trust subnet with zero leading bits, such as ::/1.

Every unauthenticated client is then trusted as a proxy at hop 0, so proxyaddr(req, trust), and therefore req.ip and req.ips in Express, returns whatever the client sends in X-Forwarded-For. This defeats IP-based access control, rate limiting, geolocation, and audit logging. The misconfiguration compiles without any error, and the same block written correctly behaves correctly, so the difference is not visible from the configuration.

Patches

Upgrade to proxy-addr 2.0.8. An IPv4 address now matches an IPv6 trust subnet only when that subnet is a genuine IPv4-mapped subnet whose prefix covers the mapped marker.

Workarounds

Write IPv4 trust subnets in plain IPv4 notation (for example 10.0.0.0/8). If IPv4-mapped IPv6 notation is required, use the full form so the prefix covers the mapped marker (for example ::ffff:10.0.0.0/104 for the 10.0.0.0/8 block).

Text from GitHub Advisory Database

Affected versions 4

  • proxy-addr, npm>= 1.1.0, < 2.0.8GitHub
  • proxy-addraffected: 1.1.0 before 2.0.8CVE List
  • proxy-addrunaffected: 2.0.8CVE List
  • proxy-addr, npmfrom 1.1.0, fixed in 2.0.8OSV

References 6