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

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·50 visits

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.

More Reports

•about 1 hour ago•CVE-2026-63349
7.0

CVE-2026-63349: Privilege Dropping Bypass and Denial of Service in AnyIO Subprocess Module

CVE-2026-63349 is a critical privilege-dropping bypass vulnerability in the AnyIO asynchronous framework (versions 4.14.0 and 4.14.1) on POSIX platforms. Due to a variable assignment typo, supplementary groups specified by the developer are not correctly propagated to the execution backend, resulting in subprocesses retaining the parent process's elevated supplementary group permissions.

Alon Barad
Alon Barad
5 views•5 min read
•about 2 hours ago•CVE-2026-63406
5.9

CVE-2026-63406: Information Disclosure via Insecure Telemetry and Hardcoded Credentials in AnyCable-Go

CVE-2026-63406 is an information disclosure vulnerability in AnyCable-go prior to version 1.6.15. The built-in telemetry client is enabled by default with a hardcoded public authentication token ('secret'). This client digests highly sensitive configuration parameters and command-line arguments, including JWT secrets and RPC secrets, into a stable SHA-256 fingerprint. This fingerprint is sent over public networks, exposing those administrative secrets to offline dictionary and brute-force attacks if intercepted.

Alon Barad
Alon Barad
4 views•5 min read
•about 3 hours ago•CVE-2026-84992
6.1

CVE-2026-84992: Cross-Site Scripting (XSS) via Fenced Code Block Parsing in md-editor-v3

CVE-2026-84992 is a Cross-Site Scripting (XSS) vulnerability affecting md-editor-v3 before version 6.5.4. It occurs because the fenced-code block language parser directly interpolates unescaped language metadata into unquoted HTML attributes inside the custom rendering callback. This bypasses the built-in XSSPlugin which runs during the parsing phase, before rendering.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 4 hours ago•CVE-2026-81505
7.1

CVE-2026-81505: Broken Object Level Authorization (BOLA) in Convoy Webhook Source Retrieval

CVE-2026-81505 is a high-severity Broken Object Level Authorization (BOLA) / Insecure Direct Object Reference (IDOR) vulnerability in Convoy, a cloud-native webhooks gateway. In affected versions prior to 26.6.8, the single-item Source retrieval API endpoint authorizes project access but fails to confirm if the requested Source belongs to that specific project. This logical flaw allows authenticated users or project-scoped API key holders to bypass tenant isolation boundaries and retrieve unredacted, plaintext message broker credentials for Apache Kafka, Amazon SQS, RabbitMQ, and Google Cloud Pub/Sub belonging to other tenants. This issue is fully patched in version 26.6.8.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 5 hours ago•CVE-2026-77339
5.1

CVE-2026-77339: Unauthenticated Remote Command Execution in Process Compose via DNS Rebinding

CVE-2026-77339 is a critical security vulnerability in Process Compose before version 1.120.0. The Model Context Protocol (MCP) Server-Sent Events (SSE) listener transport subsystem fails to validate the HTTP Host and Origin headers, and does not enforce authentication. This omissions expose local loopback listeners to DNS rebinding attacks orchestrated by malicious remote websites visited by developers, enabling unauthorized process control and arbitrary command execution.

Alon Barad
Alon Barad
8 views•6 min read
•about 6 hours ago•CVE-2026-77301
7.5

CVE-2026-77301: Uncontrolled Resource Allocation (Decompression Bomb) in adm-zip

CVE-2026-77301 is a critical uncontrolled resource allocation vulnerability in the popular Node.js library adm-zip (versions prior to 0.6.1). During ZIP decompression of asynchronous entries, the library trusts the uncompressed size metadata declared in the central directory headers. Because Node.js's streaming zlib API completely ignores the maxOutputLength configuration, a crafted ZIP archive (decompression bomb) causes the application to continually allocate resident memory buffers on the heap without limits, causing rapid memory exhaustion and a process-level Out-of-Memory (OOM) crash.

Alon Barad
Alon Barad
6 views•5 min read