Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-50131

CVE-2026-50131: Fedify TypeScript Library SSRF Vulnerability

CVE-2026-50131 is a server-side request forgery flaw in Fedify, a TypeScript library for ActivityPub apps. Incomplete IPv4 validation allows bypassing SSRF protections. This article covers technical details, affected versions, and patches.

Published:

CVE-2026-50131 Overview

CVE-2026-50131 is a Server-Side Request Forgery (SSRF) vulnerability in Fedify, a TypeScript library for building federated server applications powered by ActivityPub. The flaw stems from an incomplete IPv4 address validation routine in the library's SSRF defense layer. The validatePublicUrl() function relies on isValidPublicIPv4Address() to reject non-public destinations before outbound fetches, but the allowlist logic misses several reserved, multicast, benchmarking, and carrier-grade NAT ranges. Affected versions include 0.11.2 through versions prior to 1.9.12, 1.10.11, 2.0.19, 2.1.15, and 2.2.4. This issue represents an incomplete mitigation for the prior SSRF advisory tracked as GHSA-p9cg-vqcc-grcx.

Critical Impact

Remote attackers can bypass SSRF protections to reach internal services across reserved IPv4 ranges, enabling unauthorized access to internal HTTP endpoints and potential information disclosure.

Affected Products

  • Fedify versions 0.11.2 through 1.9.11
  • Fedify versions 1.10.0 through 1.10.10
  • Fedify versions 2.0.0 through 2.0.18, 2.1.0 through 2.1.14, and 2.2.0 through 2.2.3

Discovery Timeline

  • 2026-06-10 - CVE-2026-50131 published to NVD
  • 2026-06-10 - Last updated in NVD database

Technical Details for CVE-2026-50131

Vulnerability Analysis

Fedify performs outbound document and media fetches as part of ActivityPub federation. To defend against SSRF [CWE-918], the library validates destination URLs through validatePublicUrl() before issuing outbound requests. This routine calls isValidPublicIPv4Address() to confirm that the resolved IPv4 address is publicly routable.

The validator correctly blocks the most common private and link-local ranges, including 10.0.0.0/8, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, and 192.168.0.0/16. However, the implementation treats other special-use IPv4 ranges as public. Attackers can craft federation payloads referencing URLs in these uncovered ranges to coerce the server into fetching internal or restricted destinations.

Root Cause

The root cause is incomplete denylist coverage in isValidPublicIPv4Address(). The function omits checks for carrier-grade NAT (100.64.0.0/10), benchmarking (198.18.0.0/15), IETF protocol assignments (192.0.0.0/24), TEST-NET ranges (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24), multicast (224.0.0.0/4), and reserved future-use space (240.0.0.0/4). Because these ranges may resolve to internal infrastructure in some deployments, accepting them as public destinations breaks the SSRF boundary.

Attack Vector

The vulnerability is exploitable over the network without authentication or user interaction. An attacker submits ActivityPub activities or federation requests containing URLs whose hostnames resolve to an address in one of the uncovered ranges. Fedify's pre-fetch validation passes, and the server issues an outbound HTTP request to the attacker-chosen internal destination. Responses can be reflected back into ActivityPub processing logic depending on how the host application consumes the fetched documents.

No verified exploit code is publicly available. For technical specifics, refer to the GitHub Security Advisory GHSA-xw9q-2mv6-9fr8.

Detection Methods for CVE-2026-50131

Indicators of Compromise

  • Outbound HTTP requests from Fedify processes to IPv4 addresses in 100.64.0.0/10, 198.18.0.0/15, or TEST-NET ranges
  • ActivityPub inbox payloads referencing URLs that resolve to multicast (224.0.0.0/4) or reserved (240.0.0.0/4) addresses
  • Unexpected DNS lookups for hostnames pointing to internal or special-use IPv4 space originating from federation workers

Detection Strategies

  • Inspect application and proxy logs for outbound fetches initiated by Fedify whose destination falls outside globally routable unicast space
  • Correlate ActivityPub activity ingestion events with subsequent outbound requests to identify attacker-supplied URL fetches
  • Apply egress firewall logging with explicit allowlists for known federation peers and alert on deviations

Monitoring Recommendations

  • Enable verbose logging of validatePublicUrl() decisions and resolved IPs prior to outbound fetches
  • Forward egress traffic from federation hosts to a monitored proxy that enforces destination IP policy independently of the application
  • Track Fedify version inventory across deployments and alert on hosts running versions earlier than the patched releases

How to Mitigate CVE-2026-50131

Immediate Actions Required

  • Upgrade Fedify to version 1.9.12, 1.10.11, 2.0.19, 2.1.15, or 2.2.4 depending on your release branch
  • Audit federation logs for outbound fetches to non-public IPv4 ranges since deployment of an affected version
  • Restrict egress from Fedify hosts using network controls that block all reserved and special-use IPv4 destinations

Patch Information

The Fedify maintainers released fixes in versions 1.9.12, 1.10.11, 2.0.19, 2.1.15, and 2.2.4. The patches extend isValidPublicIPv4Address() to reject additional reserved, multicast, benchmarking, and carrier-grade NAT ranges. Patch details are published in the GitHub Security Advisory GHSA-xw9q-2mv6-9fr8.

Workarounds

  • Deploy an egress proxy that enforces a strict allowlist of public IP ranges and blocks all RFC-reserved IPv4 space
  • Place Fedify behind a network namespace or firewall policy that denies traffic to 100.64.0.0/10, 198.18.0.0/15, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, and 240.0.0.0/4
  • Wrap outbound HTTP clients with an application-layer URL validator that re-resolves hostnames and checks results against a complete special-use IPv4 list
bash
# Example: upgrade Fedify to a patched release
npm install @fedify/fedify@2.2.4
# or for the 2.1.x branch
npm install @fedify/fedify@2.1.15

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.