Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify network-accessible PullMD instance
-
DeliverySend unauthenticated GET /api?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
-
ExploitServer resolves and fetches cloud metadata endpoint
-
ExecutionResponse with IAM credentials returned to attacker
-
ImpactUse stolen credentials for cloud privilege escalation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | No authentication is required - the CVSS 4.0 vector confirms PR:N and UI:N, meaning any network-accessible instance of PullMD 3.2.0 is exploitable without credentials or user interaction. The sole condition is that the /api endpoint is reachable from the attacker's network, which is the typical self-hosted deployment mode. Exploitation is most impactful when the host runs in a cloud environment with access to an instance metadata service (169.254.169.254 for AWS/GCP/Azure, 100.100.100.200 for Alibaba), but internal network reconnaissance is possible even in on-premises deployments. The vulnerability is not configuration-dependent - no special feature flag or non-default setting is required to be exploitable. Limiting factors include: deployments behind a network firewall that blocks external access to /api reduce remote exploitability; IMDSv2-only cloud instances require a session token that SSRF cannot trivially obtain; and post-patch deployments with an outbound proxy performing egress filtering reduce but do not fully eliminate risk due to the DNS-rebinding residual. |
| Impact | The CVSS 4.0 base score of 5.5 with E:P (proof-of-concept) reflects a moderate-severity finding with network-accessible, unauthenticated exploitation and low impact across confidentiality, integrity, and availability. There is no EPSS score provided in the input and no KEV listing, indicating no confirmed mass exploitation at the time of analysis. Despite the moderate numeric score, the practical risk for cloud-hosted instances is elevated: successful SSRF against the IMDSv1 metadata endpoint (169.254.169.254) can yield IAM credentials, enabling privilege escalation well beyond the CVSS impact ratings imply. The absence of IMDSv2 enforcement at the application layer means many real deployments are fully exposed. For on-premises self-hosted instances without cloud metadata services, risk is limited to internal network reconnaissance and port scanning via the server. The residual DNS-rebinding gap noted in the v3.3.0 changelog means even patched deployments are not fully hardened without an additional outbound proxy layer performing independent egress filtering. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a crafted HTTP GET request to the publicly exposed PullMD /api endpoint with url=http://169.254.169.254/latest/meta-data/iam/security-credentials/; the server resolves the hostname and fetches the cloud metadata service, returning temporary IAM credentials in the response body. A public exploit demonstrating this technique was disclosed via GitHub issue #41 at https://github.com/AeternaLabsHQ/pullmd/issues/41. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 20, 2026
Server-Side Request Forgery in PullMD 3.2.0 exposes internal network resources and cloud metadata endpoints through the unauthenticated REST API endpoint GET /api, where the url parameter is passed without validation to the server's HTTP fetch stack. The vulnerability affects multiple fetch paths including the MCP read_url tool, Reddit resolver, and Playwright sidecar, all of which lacked SSRF guards prior to v3.3.0. A public exploit exists (GitHub issue #41), and the changelog confirms that 169.254.169.254 and 100.100.100.200 (AWS/Alibaba cloud metadata) were specifically demonstrated as targets; no active exploitation has been confirmed by CISA KEV.
RemediationAI
Upgrade to PullMD v3.3.0 (released 2026-07-08), available at https://github.com/AeternaLabsHQ/pullmd/releases/tag/v3.3.0, which introduced the SSRF guard module lib/ssrf.js across all fetch paths. Operators who need to allow specific internal hosts can set the new PULLMD_ALLOWED_HOSTS environment variable to a comma-separated list of CIDRs or exact hostnames (e.g., PULLMD_ALLOWED_HOSTS=10.0.5.0/24,wiki.internal); leaving it empty blocks all internal targets by default. Critically, the v3.3.0 changelog acknowledges that DNS-rebinding attacks are not fully mitigated - when running behind an outbound HTTP proxy, that proxy's egress filtering becomes the authoritative control; operators should configure the proxy to block RFC 1918 and cloud-metadata ranges independently. Cloud-hosted instances should additionally enforce IMDSv2 (requiring a session token for metadata access) to limit blast radius if SSRF is still triggered. If immediate upgrade is not possible, restricting network-level access to the /api endpoint via firewall or reverse-proxy ACL is the most effective compensating control, though it may break intended functionality.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PullMD (CPE cpe:2.3:a:aeternalabshq:pullmd:*:*:*:*:*:*:*:*) is a self-hosted Node.js application that fetches and processes remote URLs across several internal code paths: the core REST API (/api), an MCP (Model Context Protocol) read_url tool in lib/mcp.js, a Reddit short-link resolver in lib/reddit.js, and a Playwright browser sidecar client in lib/playwright-client.js. CWE-918 (Server-Side Request Forgery) is the root cause - user-supplied URLs were passed directly to the server's HTTP resolution stack without validating that the resolved destination IP fell outside private, loopback, link-local, CGNAT (100.64.0.0/10), or cloud-metadata address ranges. Because DNS resolution and socket binding were decoupled, the fix introduced in v3.3.0 via lib/ssrf.js resolves the hostname and checks it against a Node.js net.BlockList, but the changelog explicitly notes a residual DNS-rebinding risk: the guard does not pin the outbound socket to the checked address, so a name that resolves differently at connection time bypasses the protection.
Know when Pullmd gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Network-accessible unauthenticated endpoint with no complexity; limited confidentiality and integrity impact via internal resource access; no availability impact from SSRF alone.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
2DescriptionCVE.org
A vulnerability has been found in AeternaLabsHQ PullMD 3.2.0. This impacts an unknown function of the file /api of the component REST API Endpoint. The manipulation of the argument url leads to server-side request forgery. The attack can be initiated remotely. The exploit has been disclosed to the public and may be used. Upgrading to version 3.3.0 will fix this issue. The identifier of the patch is 96448894cc93ccecb0bdcbf263a9d25390a8455e. Upgrading the affected component is advised.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
EUVD-2026-63190
GHSA-p53p-vh92-qhpp
NVD
CVE.org
EPSS
VulDB
Exploit-DB