CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-69192

CVE-2026-69192: SSRF Bypass via Parser Differential (Octal vs Decimal) in ip-address JavaScript Library

Alon Barad
Alon Barad
Software Engineer

Aug 3, 2026·6 min read·7 visits

Executive Summary (TL;DR)

A parser discrepancy in 'ip-address' validates leading-zero IPv4 octets as decimal (e.g. '012' -> 12) while network stacks resolve them as octal (e.g. '012' -> 10). This differential allows unauthenticated attackers to bypass internal IP filters and execute Server-Side Request Forgery (SSRF).

CVE-2026-69192 is a critical parser differential vulnerability in the 'ip-address' JavaScript library (versions <= 10.3.0). The library parses IPv4 octets containing leading zeros as base-10 (decimal), whereas standard system resolvers and web environments parse them as base-8 (octal). This discrepancy allows remote attackers to bypass SSRF guards and route malicious requests to internal RFC 1918 networks.

Vulnerability Overview

The 'ip-address' JavaScript library is a widely utilized dependency for parsing, validating, and manipulating IPv4 and IPv6 addresses. Applications frequently leverage this package within security-critical components, such as input sanitizers and Server-Side Request Forgery (SSRF) protection layers, to validate user-supplied hostnames before issuing outbound HTTP requests.

The core of the vulnerability lies in a parser differential between the validation library and the downstream network resolution environments. While the 'ip-address' library parses input strings in a specific format, the runtime network APIs (such as Node.js's network client, getaddrinfo, and operating system resolvers) decode those same inputs differently. This structural inconsistency creates a blind spot where security boundaries can be systematically bypassed.

The vulnerability is classified under CWE-918 (Server-Side Request Forgery) and CWE-20 (Improper Input Validation). By constructing an IPv4 address containing octets with leading zeros, an unauthenticated remote attacker can force the application to treat an internal IP address as public, bypassing the intended security filters and routing arbitrary traffic to restricted resources.

Root Cause Analysis

The root cause of this vulnerability is a fundamental semantic mismatch during the parsing of IPv4 octets. In versions of 'ip-address' prior to 10.3.1, the library used regular expressions to identify decimal segments and subsequently converted these string segments to numeric representations using parseInt(part, 10). The inclusion of the explicit radix of 10 instructed the engine to interpret the string strictly in base-10, disregarding any leading zero markers.

For example, if an attacker provides the string '012.0.0.1', the library validates each group independently. The first group, '012', is decoded via parseInt('012', 10) to yield the decimal value 12. Consequently, the library reconstructs the normalized IP as '12.0.0.1'. Since this IP address belongs to a public class A range, validation methods like isPrivate() or isLoopback() return a boolean false value, indicating the address is safe to access.

Conversely, standard network resolution environments follow different decoding rules. Under the POSIX standard and systems implementing inet_aton or getaddrinfo, any numeric octet prefixed with a leading zero is evaluated as an octal (base-8) representation rather than base-10. Under this interpretation, the octet '012' is converted to (1 * 8^1) + (2 * 8^0) = 10. The resulting network address resolves to '10.0.0.1', which is a private RFC 1918 Class A IP address.

Code Analysis & Patch Walkthrough

The vulnerability was addressed in version 10.3.1 by modifying the regular expression used for address validation and adding pre-checks within the parser. In the vulnerable version, the library relied on RE_ADDRESS in src/v4/constants.ts to identify valid IPv4 addresses. This regex allowed optional leading zeros ([01]?[0-9][0-9]?) which allowed multi-digit octets like 012 to pass validation.

// VULNERABLE REGEX IN src/v4/constants.ts
export const RE_ADDRESS =
  /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g;

The patch modified the regular expression to explicitly disallow multi-digit octets from starting with zero. In the updated implementation, single-digit octets 0-9 are allowed, and double-digit octets 10-99 or triple-digit octets 100-255 must begin with a non-zero character. This change prevents the parsing of octal representation formats.

// PATCHED REGEX IN src/v4/constants.ts
export const RE_ADDRESS =
  /^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/g;

Additionally, explicit defensive checks were introduced in the initialization pipeline in src/ipv4.ts. The parser now inspects each dot-separated segment using a simple lookahead pattern /^0\d/ to throw an explicit AddressError when leading zeroes are detected before matching against the main regex.

// DEFENSIVE CHECKS ADDED IN src/ipv4.ts
parse(address: string) {
  const groups = address.split('.');
 
  if (groups.some((group) => /^0\d/.test(group))) {
    throw new AddressError("IPv4 addresses can't have leading zeroes.");
  }
 
  if (!address.match(constants.RE_ADDRESS)) {
    throw new AddressError('Invalid IPv4 address.');
  }
}

Exploitation Methodology

An attacker can exploit this vulnerability by submitting a crafted URL where the host portion is formatted with leading-zero IPv4 octets. In a typical scenario, an target application accepts a user-provided URL and parses the hostname to verify if it points to a restricted internal address. Because the validation layer uses ip-address, the hostname passes the check as safe.

The target application, after allowing the connection, passes the original un-normalized URL to its HTTP client (such as Axios or Node's http module). The underlying HTTP client depends on the runtime environment or system-level resolvers to resolve the hostname. The resolver decodes the leading-zero octet in octal, establishing a connection to the internal network instead of the public network representation recognized by ip-address.

This behavior bypasses blacklist and whitelist defenses. For instance, the system may prevent requests to '10.0.0.0/8', but a request to '010.0.0.1' translates to '8.0.0.1' (public) in ip-address, while standard network environments route it to '8.0.0.1' as well. In contrast, '012.0.0.1' translates to public '12.0.0.1' in ip-address, but routes to '10.0.0.1' in the system resolver, executing SSRF.

Impact Assessment

The impact of CVE-2026-69192 is high because it allows attackers to bypass boundary restrictions designed to protect private services. By leveraging this vulnerability, a remote attacker can interact with internal web servers, metadata APIs, container orchestration interfaces, or databases that are otherwise inaccessible from the public internet.

When deployed within cloud environments, SSRF can lead to the compromise of cloud credentials via access to metadata services (such as AWS IMDSv1 at 'http://169.254.169.254' or equivalent metadata endpoints in Google Cloud and Azure). Although IMDSv2 provides mitigation via session tokens, many environments still fall back to IMDSv1, rendering them vulnerable to total host takeover.

The vulnerability is tracked with a CVSS v4.0 score of 7.7, reflecting a high impact on subsequent systems. While the direct confidentiality of the target server itself is not immediately violated by the parsing library itself, the library is a critical validation control, meaning its failure directly compromises the confidentiality and integrity of subsequent internal targets.

Remediation & Detection Guidance

The primary remediation strategy is upgrading the ip-address library to version 10.3.1 or higher. This update restricts the syntax allowed by the library to match strict standard dot-decimal notation, throwing a clean parsing error for any ambiguous representations.

For systems where an immediate package upgrade is not feasible, developers should implement a pre-validation filter. This filter can scan the input IP string and reject it if any octet contains a leading zero. A simple regular expression such as /\b0\d+/ can identify invalid segments in the hostname before passing the string to the validation library.

Additionally, defense-in-depth principles should be applied at the network layer. Rather than relying solely on application-level validations, organizations should implement strict egress firewalls and network segmentation. Isolating the application servers from internal administrative interfaces prevents successful SSRF even if the application-level validation is bypassed.

Official Patches

beaugundersonOfficial GitHub Release Tag v10.3.1 containing the fix.
beaugundersonOfficial patch commit in ip-address source code repository.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.7/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N

Affected Systems

ip-address (npm package) versions <= 10.3.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
ip-address
beaugunderson
< 10.3.110.3.1
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork
CVSS v4.0 Score7.7
Exploit StatusProof of Concept
ImpactServer-Side Request Forgery
Vulnerable ComponentAddress4 Class
Remediation StatusOfficial Patch Released

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
CWE-918
Server-Side Request Forgery (SSRF)

The web server receives a URL or similar vector from an upstream source and does not validate it properly before executing the connection, allowing an attacker to force the server to connect to arbitrary destinations.

Known Exploits & Detection

GitHub Security AdvisoryVulnerability proof of concept and description details in official advisory.

Vulnerability Timeline

Vulnerability discovered and analyzed
2026-02-15
Fix commit pushed and version 10.3.1 released
2026-02-16
GitHub Advisory GHSA-mwp4-54f8-5fhr published
2026-02-17

References & Sources

  • [1]GHSA-mwp4-54f8-5fhr: Parser differential in ip-address
  • [2]Fix parser differential commit
  • [3]Release v10.3.1
  • [4]CVE-2026-69192 Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•30 minutes ago•CVE-2026-69244
7.1

CVE-2026-69244: Heap Out-of-Bounds Read in aiohttp C-Parser Error Handling

A high-severity heap-based out-of-bounds (OOB) read vulnerability exists in the Cython-based HTTP response and request parser extension of aiohttp. When processing malformed HTTP traffic, the parser fails to properly handle raw C pointers returned by the underlying llhttp library during error-message construction. This triggers an uncontrolled strlen() call on non-null-terminated network buffers, which can result in a Denial of Service (DoS) via worker process crash or the exposure of adjacent heap memory inside exception messages.

Alon Barad
Alon Barad
0 views•7 min read
•about 3 hours ago•CVE-2026-69151
7.6

CVE-2026-69151: Stored Cross-Site Scripting (XSS) in Angular Compiler i18n Pipeline via Event-Handler Attributes

A high-severity security vulnerability has been identified within the Angular compiler's internationalization (i18n) metadata collection and translation pipeline. Angular implements strict defenses against client-side execution injection by validating standard attribute and property bindings. However, when parsing elements containing both i18n translation attributes and inline event-handler elements (such as `i18n-onerror`), the compiler failed to assert the safety of the target attribute. Consequently, compromised or untrusted localization translation source files can supply arbitrary JavaScript payloads that replace static event-handler bindings. This arbitrary code is compiled directly into the localized build bundle and executed dynamically by the web browser, bypassing runtime sanitization, security checks, and standard binding constraints.

Amit Schendel
Amit Schendel
3 views•8 min read
•about 4 hours ago•CVE-2026-69153
6.3

CVE-2026-69153: Arbitrary File Read via Path Traversal in PostCSS

A directory traversal and arbitrary file read vulnerability exists in PostCSS due to an incomplete fix of CVE-2026-45623. When parsing a CSS file containing a sourceMappingURL comment with the 'from' parameter unset, path traversal and absolute path validations are bypassed, enabling attackers to read arbitrary local .map files.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 5 hours ago•CVE-2026-69152
7.5

CVE-2026-69152: Denial of Service via Resource Exhaustion in brace-expansion

CVE-2026-69152 is a high-severity Denial of Service (DoS) vulnerability in brace-expansion that allows remote, unauthenticated attackers to cause a process crash or infinite thread-blocking condition. The vulnerability stems from a complete mitigation bypass of the security checks implemented for CVE-2026-14257.

Alon Barad
Alon Barad
6 views•7 min read
•about 6 hours ago•CVE-2026-68945
8.8

CVE-2026-68945: Cache-Key Ambiguity in Angular HttpTransferCache Leading to State Poisoning

An in-depth technical analysis of CVE-2026-68945, a high-severity security vulnerability in Angular's `@angular/common/http` package. The flaw stems from an ambiguity in how query parameters are serialized to generate cache keys during Server-Side Rendering (SSR) within the `HttpTransferCache` component. By failing to encode delimiters and implicitly coercing arrays to comma-joined strings, the serialization mechanism yields identical cache keys for distinct requests, facilitating State Poisoning and Cross-Request Response Reuse.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 7 hours ago•CVE-2026-43501
9.8

CVE-2026-43501: Heap Out-of-Bounds Write in Linux Kernel IPv6 RPL Segment Routing Header Processing

A critical heap out-of-bounds (OOB) write vulnerability exists in the Linux kernel's IPv6 RPL (Routing Protocol for Low-Power and Lossy Networks) Segment Routing Header (SRH) processing logic. The vulnerability is located within net/ipv6/exthdrs.c, specifically in the ipv6_rpl_srh_rcv function. Under specific circumstances, when a packet containing a compressed RPL Source Routing Header is processed, segment swapping can reduce the common-prefix length, causing the recompressed header to grow. Because the kernel fails to validate available headroom on intermediate segments, a buffer underflow occurs during skb_push. This leads to an integer wrap in the MAC header offset pointer during MAC header rebuilding, causing a 14-byte out-of-bounds memory write roughly 64 KiB past the socket buffer.

Alon Barad
Alon Barad
5 views•10 min read