Description
ip-address is a library for parsing and manipulating IPv4 and IPv6 addresses in JavaScript. From 10.1.1 until 10.2.2, every special-use classification method is built on isInSubnet, which short-circuits to false whenever the address's own subnet mask is shorter than the reference range's mask. That mask comes verbatim from the CIDR suffix on the parsed input, so appending a suffix such as /0 suppresses classification entirely: isLoopback(), isPrivate(), isLinkLocal(), isCGNAT(), isMulticast(), isUnspecified(), isBroadcast(), isULA(), and getType() all report an internal address as unremarkable, while correctForm() and address still return the real internal target. An application that builds a network trust-boundary decision on these checks, for example a filter intended to block Server-Side Request Forgery, or SSRF, may therefore treat an internal target as external and allow the request. The underlying bit comparison is correct, and mask(n) already returns the first n bits of the full parsed address independently of subnetMask; the defect is solely that the containment guard sits in the classification path. This issue is fixed in version 10.2.2.
Published: 2026-08-03
Score: 6.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

ip-address is a JavaScript library that parses IPv4 and IPv6 addresses and offers methods to determine whether an address is special‑use such as loopback, private, or multicast. In versions 10.1.1 through 10.2.2 the special‑use checks rely on an internal call that first tests whether the parsed address’s subnet mask is longer than the reference range’s mask. Because the mask is taken directly from the CIDR suffix supplied in the input string, an attacker can append a suffix such as "/0" to force all special‑use tests to report false. Consequently any application that uses these tests to decide whether a URL is allowed for a potential SSRF request will treat an internal address as external and permit the request, allowing the attacker to reach otherwise‑protected internal services. The flaw involves improper input validation and address manipulation, corresponding to CWE‑1389, CWE‑20, and CWE‑918.

Affected Systems

Any project that includes the ip-address library from beaugunderson, version 10.1.1 up to but excluding 10.2.2, is vulnerable. The issue is fixed in version 10.2.2, so only installations that have not yet applied this update are affected. It is not limited to any particular distribution, and the vulnerability exists regardless of how the package is installed or bundled.

Risk and Exploitability

The CVSS score of 6.9 indicates a moderate severity issue. The EPSS score of < 1 % indicates a very low but non‑zero likelihood of exploitation, and the vulnerability is not listed in the CISA KEV catalog. Attackers can exploit this flaw by supplying a crafted IP address string with a short CIDR suffix to any code that parses the address using ip-address to determine trust boundaries. Once the check is bypassed, internal network hosts become reachable via SSRF or other privileged requests. This attack can be performed from the network where the application is exposed to user input.

Generated by OpenCVE AI on August 6, 2026 at 02:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the ip-address library to version 10.2.2 or later.
  • If the application performs SSRF or trust‑boundary checks, replace or supplement those checks with a hardened validation routine that does not rely solely on the ip-address library’s special‑use methods.
  • Review all call sites that invoke isLoopback(), isPrivate(), isLinkLocal(), isCGNAT(), isMulticast(), isUnspecified(), or isBroadcast() and verify that they are used in a security context rather than merely for informational purposes.

Generated by OpenCVE AI on August 6, 2026 at 02:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-4xrf-jv44-h6hh ip-address: a CIDR suffix on the parsed address suppresses special-use classification and can bypass SSRF and trust-boundary checks
History

Thu, 06 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1389
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'}

threat_severity

Moderate


Tue, 04 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 03 Aug 2026 22:00:00 +0000

Type Values Removed Values Added
First Time appeared Beaugunderson
Beaugunderson ip-address
Vendors & Products Beaugunderson
Beaugunderson ip-address

Mon, 03 Aug 2026 20:15:00 +0000

Type Values Removed Values Added
Description ip-address is a library for parsing and manipulating IPv4 and IPv6 addresses in JavaScript. From 10.1.1 until 10.2.2, every special-use classification method is built on isInSubnet, which short-circuits to false whenever the address's own subnet mask is shorter than the reference range's mask. That mask comes verbatim from the CIDR suffix on the parsed input, so appending a suffix such as /0 suppresses classification entirely: isLoopback(), isPrivate(), isLinkLocal(), isCGNAT(), isMulticast(), isUnspecified(), isBroadcast(), isULA(), and getType() all report an internal address as unremarkable, while correctForm() and address still return the real internal target. An application that builds a network trust-boundary decision on these checks, for example a filter intended to block Server-Side Request Forgery, or SSRF, may therefore treat an internal target as external and allow the request. The underlying bit comparison is correct, and mask(n) already returns the first n bits of the full parsed address independently of subnetMask; the defect is solely that the containment guard sits in the classification path. This issue is fixed in version 10.2.2.
Title ip-address: a CIDR suffix on the parsed address suppresses special-use classification and can bypass SSRF and trust-boundary checks
Weaknesses CWE-20
CWE-918
References
Metrics cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N'}


Subscriptions

Beaugunderson Ip-address
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-04T17:21:59.584Z

Reserved: 2026-08-03T16:57:50.124Z

Link: CVE-2026-69198

cve-icon Vulnrichment

Updated: 2026-08-04T17:21:47.139Z

cve-icon NVD

Status : Received

Published: 2026-08-03T20:17:30.107

Modified: 2026-08-04T18:16:56.787

Link: CVE-2026-69198

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-03T19:59:05Z

Links: CVE-2026-69198 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-06T02:30:18Z

Weaknesses
  • CWE-1389

    Incorrect Parsing of Numbers with Different Radices

  • CWE-20

    Improper Input Validation

  • CWE-918

    Server-Side Request Forgery (SSRF)