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-2025-8267
8.80.12%

CVE-2025-8267: Server-Side Request Forgery Bypass via Multicast Address Exclusion in ssrfcheck

Amit Schendel
Amit Schendel
Senior Security Researcher

May 5, 2026·7 min read·6 visits

PoC Available

Executive Summary (TL;DR)

A flaw in the ssrfcheck npm library (< 1.2.0) allows attackers to bypass SSRF protections by providing URLs resolving to IPv4 Multicast addresses. This enables targeted requests against internal services such as UPnP and mDNS.

The ssrfcheck npm package before version 1.2.0 contains a Server-Side Request Forgery (SSRF) vulnerability due to an incomplete blocklist of reserved IP address ranges. By omitting the IPv4 Multicast range (224.0.0.0/4), the library allows attackers to bypass validation and issue requests targeting internal network infrastructure.

Vulnerability Overview

The ssrfcheck npm package provides URL validation logic designed to prevent Server-Side Request Forgery (SSRF) attacks in Node.js applications. Applications utilize this library to verify that user-provided URLs resolve to public internet addresses rather than internal, private, or reserved network segments. The core validation mechanism relies on resolving the target hostname to an IP address and comparing it against a predefined list of restricted Classless Inter-Domain Routing (CIDR) blocks.

Versions of the library prior to 1.2.0 implement an incomplete static blocklist that fails to classify the IPv4 Multicast address space (224.0.0.0/4) as restricted. When an application passes a URL containing a multicast IP address or a hostname resolving to one, the ssrfcheck validation logic categorizes the destination as a public, routable IP address. This design flaw fundamentally breaks the security guarantees of the library, resulting in a classic SSRF vulnerability (CWE-918).

Attackers leveraging this flaw bypass the primary security control meant to constrain outbound network requests. By supplying crafted URLs, an unauthenticated remote attacker can force the hosting application to initiate HTTP requests to internal network segments. This access enables interaction with protocols and services that rely on multicast routing, facilitating unauthorized discovery and interaction within the application's local network environment.

Root Cause Analysis

The vulnerability stems from an architectural reliance on a static blocklist of private IP address ranges within the src/is-private-ip.js module. The library defines a constant array named PRIVATE_CIDRS containing recognized non-routable prefixes, such as 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16. During the execution of the isSSRFSafeURL function, the library iterates through this array and returns a failure state if the resolved IP address falls within any of the specified boundaries.

The IPv4 Multicast range, defined by the Internet Engineering Task Force (IETF) in RFC 5771, spans from 224.0.0.0 to 239.255.255.255 (224.0.0.0/4). This block is reserved for IP multicasting and is not intended for public internet routing. The maintainers of ssrfcheck omitted this specific /4 network block from the PRIVATE_CIDRS array. Consequently, the blocklist comparison loop terminates without a match when processing a multicast address, defaulting to an allowed state.

This flaw highlights the inherent risk of implementing security controls using static deny-lists (blocklists) rather than allow-lists. Network address allocation involves numerous reserved, experimental, and special-purpose prefixes. Failing to explicitly define every non-public prefix leaves security mechanisms vulnerable to edge-case routing behaviors. The application relying on the library proceeds to execute the network fetch operation, assuming the destination is safe.

Code Analysis

An analysis of the patch applied in commit 9507b49fd764f2a1a1d1e3b9ee577b7545e6950e clearly demonstrates the implementation flaw. The remediation involves a single line addition to the PRIVATE_CIDRS array within the src/is-private-ip.js file. The vulnerable code lacked the 224.0.0.0/4 CIDR notation, forcing the validation function to skip the multicast space entirely.

 // src/is-private-ip.js (Patched Version)
 const PRIVATE_CIDRS = [
   '198.18.0.0/15',
   '198.51.100.0/24',
   '203.0.113.0/24',
+  '224.0.0.0/4',
   '240.0.0.0/4',
   '255.255.255.255/32'
 ];

The fix directly appends the missing CIDR range to the existing array. Any IP address beginning with an octet between 224 and 239 now triggers the internal matcher, returning a failure state. The following diagram illustrates the vulnerable control flow bypass:

While the patch addresses the immediate vulnerability by covering the IPv4 Multicast block, developers must scrutinize the entirety of the PRIVATE_CIDRS array. The reliance on a hardcoded list means that missing IPv6 equivalents, such as the ff00::/8 IPv6 multicast prefix, or other specialized ranges like Carrier-Grade NAT (100.64.0.0/10), require manual additions if they are not already present in the source code.

Exploitation Methodology

Exploiting this vulnerability requires the application to accept a user-controlled URL and subsequently perform a server-side request using that input. The attacker crafts a payload utilizing a multicast IP address, commonly targeting well-known local administrative protocols. A technical Proof-of-Concept (PoC) authored by Liran Tal demonstrated the bypass by passing a URL such as http://239.255.255.250 into the affected application.

The IP address 239.255.255.250 corresponds to the Simple Service Discovery Protocol (SSDP), part of the Universal Plug and Play (UPnP) architecture. When the Node.js application issues an HTTP request to this address, the underlying operating system routes the traffic to the local network segment. Devices listening on the multicast group receive the request and often respond with device metadata, XML configuration files, or internal network topology details.

In scenarios where the application processes and returns the response body to the attacker, the exploit facilitates extensive internal reconnaissance. Even in a "blind" SSRF scenario where responses are not returned, attackers measure response times to infer the presence of specific network hardware. By manipulating port numbers and protocol wrappers, attackers coerce the host system into interacting with Multicast DNS (mDNS) services on port 5353, extracting hostname mappings from the internal domain.

Impact Assessment

The impact of CVE-2025-8267 is assessed with a CVSS v4.0 base score of 8.8 (High) and a CVSS v3.1 base score of 8.2 (High). The vulnerability allows unauthorized information disclosure and internal network manipulation without requiring authentication. Because the vulnerable component is an npm package designed explicitly to block SSRF, its failure results in total bypass of the application's primary defense mechanism.

The concrete security consequences depend heavily on the internal network architecture hosting the vulnerable application. Successful exploitation grants an attacker a pivoting point within the trusted network perimeter. The attacker gains the ability to map internal IP addresses, identify vulnerable IoT devices, and interact with management interfaces that lack explicit authentication requirements under the assumption of local network safety.

The Exploit Prediction Scoring System (EPSS) currently rates this vulnerability at 0.00119, placing it in the 30.26th percentile. While active exploitation in the wild is not currently listed in CISA's Known Exploited Vulnerabilities (KEV) catalog, the public availability of the bypass methodology elevates the risk. Security teams must assume that automated scanning tools will soon incorporate IPv4 Multicast payloads into standard SSRF testing suites.

Remediation and Mitigation

The primary remediation strategy requires updating the ssrfcheck dependency to version 1.2.0 or later. Developers manage this by modifying the package.json file and executing the package manager update command. Post-update, engineering teams must verify that the lockfile reflects the patched version to ensure CI/CD pipelines do not deploy stale dependencies from a cached registry.

For environments unable to immediately patch the dependency, security engineers must implement defense-in-depth measures at the network perimeter. Egress filtering serves as the most effective compensating control. Administrators configure firewalls or cloud security groups to explicitly deny outbound traffic originating from application servers directed towards the 224.0.0.0/4 subnet. This network-level control nullifies the bypass regardless of the application's internal validation state.

Beyond immediate patching, development teams must conduct a comprehensive review of URL validation logic across all services. The failure of a single blocklist entry underscores the necessity of strict allow-listing for outbound connections wherever feasible. Additionally, teams should verify that their SSRF mitigation strategies correctly account for related edge cases, including IPv6 multicast (ff00::/8), link-local addresses (169.254.0.0/16), and Carrier-Grade NAT (100.64.0.0/10), ensuring comprehensive coverage against modern SSRF techniques.

Official Patches

GitHub AdvisoryGitHub Security Advisory detailing the SSRF bypass.
Snyk AdvisorySnyk vulnerability database entry for CVE-2025-8267.

Fix Analysis (1)

Technical Appendix

CVSS Score
8.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
EPSS Probability
0.12%
Top 70% most exploited

Affected Systems

Node.js applications utilizing ssrfcheck < 1.2.0Internal network infrastructure exposed to multicast routing (SSDP, UPnP, mDNS)

Affected Versions Detail

Product
Affected Versions
Fixed Version
ssrfcheck
felippe-regazio
< 1.2.01.2.0
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork
CVSS v4.08.8 (High)
CVSS v3.18.2 (High)
EPSS Score0.00119
Exploit StatusProof-of-Concept Available
CISA KEVNot Listed

MITRE ATT&CK Mapping

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

Server-Side Request Forgery (SSRF) occurs when a web application is fetching a remote resource without validating the user-supplied URL.

Known Exploits & Detection

GitHub GistTechnical bypass and disclosure by Liran Tal detailing the IPv4 Multicast attack vector.

Vulnerability Timeline

Initial technical disclosure and bypass report published by Liran Tal via GitHub Gist.
2024-12-25
GitHub Issue #5 opened in the ssrfcheck repository documenting the bypass.
2025-06-25
Security patch committed and released in ssrfcheck version 1.2.0.
2025-07-13
CVE-2025-8267 officially published in the National Vulnerability Database (NVD).
2025-07-28
Included in CISA's weekly vulnerability summary (SB25-216).
2025-07-28

References & Sources

  • [1]NVD Record CVE-2025-8267
  • [2]Snyk Advisory SNYK-JS-SSRFCHECK-9510756
  • [3]Fix Commit in ssrfcheck repository
  • [4]GitHub Issue #5 Documenting Bypass
  • [5]Technical Bypass Gist by lirantal
  • [6]GitHub Advisory GHSA-c2fv-2fmj-9xrx

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.