Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPlant prompt-injection payload in web/document content
-
DeliveryVictim AI assistant ingests malicious instructions
-
ExploitAssistant invokes tool with internal-resolving hostname
-
ExecutionGuard passes as DNS not resolved
-
PersistServer requests 169.254.169.254 IMDS
-
ImpactExfiltrate cloud IAM credentials
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 | Requires the CKAN MCP server (ondata/@aborruso ckan-mcp-server < 0.4.108) to be running and connected to a victim's AI assistant, and the attacker must supply a malicious server_url/base_url - realistically via prompt injection embedded in content the assistant processes (hence UI:R). The specific technical trigger is a hostname that passes the string-only validateServerUrl guard but RESOLVES via DNS to an internal address (documented examples: lvh.me→127.0.0.1, *.nip.io→169.254.169.254), reaching loopback and cloud IMDS. Limiting factors: exploitation depends on successful prompt injection while the server is connected; the fixed version additionally hardens the network-exposed HTTP transport by refusing to start without CKAN_ALLOWED_DOMAINS (default-deny, unless CKAN_HTTP_ALLOW_ALL=true), and the Cloudflare Worker deployment was never affected because the CF sandbox already blocks internal addresses. Cloud-hosted deployments where IMDS returns IAM credentials face the highest impact. |
| Impact | This is a genuine but conditionally-gated SSRF (CWE-918) in a niche MCP server, and the signals largely agree it is moderate rather than emergency. There is no CISA KEV listing and no structured POC flag for this specific bypass, so exploitation status is 'no public exploit identified at time of analysis' - though the bypass technique itself (DNS names like lvh.me→127.0.0.1 and *.nip.io→IMDS) is publicly documented in the fix log and a sibling advisory, lowering the effort to reproduce. EPSS, KEV and SSVC data were not supplied, so probabilistic exploitation cannot be quantified. The most important conflict is in the CVSS metrics: the supplied vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N (5.7), but the closely-related GHSA advisory explicitly argues Attack Complexity is HIGH because exploitation requires prompt injection of the victim's AI assistant while this MCP server is connected - a material precondition the AC:L rating understates. Impact is confidentiality-only (C:H) and credible: the flaw reaches the cloud metadata endpoint 169.254.169.254, meaning IAM credential theft, which the description notes is strictly worse than the prior CVE-2026-53509 (loopback only). Net: real priority for anyone running this MCP server against cloud infrastructure, but the prompt-injection + user-interaction gating keeps it out of 'critical, patch-tonight' territory. |
| Exploit ScenarioDerived | An attacker plants a malicious webpage or document containing a prompt-injection payload that instructs a victim's AI assistant - which has the CKAN MCP server connected - to call ckan_package_search or sparql_query with a server_url whose hostname resolves to an internal address (e.g. a nip.io name mapping to 169.254.169.254). Because validateServerUrl only inspected the hostname string and never resolved DNS, the request passes the guard and the server fetches AWS/cloud metadata, returning IAM credentials into the assistant's context. No weaponized public exploit is cataloged for this specific third bypass, but the DNS-name bypass technique is documented in the vendor fix log. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
Server-side request forgery in CKAN MCP Server (ondata/@aborruso ckan-mcp-server) before version 0.4.108 allows an attacker who can influence the caller-supplied server_url parameter to force the server to issue requests to loopback addresses and to the cloud instance metadata service at 169.254.169.254. The flaw is the third bypass of the same validateServerUrl guard: because that guard only inspects the hostname string and never resolves DNS, any hostname that resolves to an internal address (documented examples lvh.me to 127.0.0.1 and *.nip.io to IMDS) slips through, and exploitation realistically requires prompt injection into content the victim's AI assistant processes while the MCP server is connected (CVSS UI:R). No confirmed active exploitation (CISA KEV) and no public exploit identified at time of analysis, though a proof-of-concept for an earlier, related SSRF variant in the same package is published; impact is highest for cloud-hosted deployments where IMDS returns IAM credentials.
RemediationAI
Vendor-released patch: upgrade CKAN MCP Server to 0.4.108, which resolves the supplied hostname, validates every resolved IP through the shared isBlockedIp check, and pins connections with a custom lookup agent to defeat DNS rebinding and redirect-to-internal tricks; the fix is delivered via the GitHub release v0.4.108 and commit bb7439b553b9f965adc3d43bcd415c42eebe2f40, with details in advisory GHSA-798p-78g2-v556. As part of the same release, operators of the network-exposed HTTP transport should set CKAN_ALLOWED_DOMAINS to a strict allowlist of trusted CKAN/SPARQL portals, because the server now refuses to start without it (default-deny); the CKAN_HTTP_ALLOW_ALL=true escape hatch restores the prior permissive behaviour but logs a warning and re-opens the exposure surface, so use it only in fully trusted environments, and note that stdio transport remains open and therefore needs the allowlist or an upgraded client-side boundary instead. If upgrading is not immediately possible, the compensations must be network-level and specific: keep the MCP server on a segment whose egress is blocked to 169.254.169.254/32 and to RFC 1918 plus loopback ranges (implemented as an egress firewall or proxy allowlist), which stops IMDS credential theft but breaks any legitimate CKAN portal hosted in those ranges; prefer stdio over the HTTP transport and disable/not expose the HTTP listener to untrusted callers, which removes the remote entry point but not prompt-injection-driven invocation through a connected assistant; enforce IMDSv2 with hop-limit 1 on AWS so metadata calls require a token, which mitigates credential theft but does not prevent internal port scanning; and constrain what content the connected AI assistant is allowed to process, since exploitation hinges on prompt injection controlling the server_url parameter. The published proof-of-concept for the earlier GHSA-3xm7-qw7j-qc8v variant shows unrestricted base_url values reaching an internal sidecar nine times, which is a useful validation pattern for confirming these controls.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The underlying issue is CWE-918 (Server-Side Request Forgery) in the URL-validation utility of the CKAN MCP Server, a Node/TypeScript MCP server that exposes tools such as ckan_package_search and sparql_query, each accepting an arbitrary server_url/base_url. The validateServerUrl function introduced for CVE-2026-33060 and extended for CVE-2026-53509 performs only syntactic checks: it blocks non-HTTP(S) schemes and internal IP address literals (IPv4 ranges 0.0.0.0/8, 10/8, 127/8, 100.64/10, 169.254/16, 172.16/12, 192.168/16, 255/8, and IPv6 ::1, ::, fc00::/7, fe80::/10, IPv4-mapped forms) but never resolves the supplied hostname. Any attacker-chosen DNS name that resolves to one of those ranges therefore passes the guard and the server connects to it. The 0.4.108 fix refactors the check into a shared isBlockedIp helper used both by the literal guard and by a new DNS-resolution guard (createSsrfSafeLookup / assertHostnameResolvesSafe): on the Node/axios path it resolves the hostname, validates every resolved IP, and pins the connection via a custom lookup agent to close DNS-rebinding and redirect-to-internal bypasses, while the fetch-based sparql_query path performs a pre-resolution check and is restricted to HTTPS; CKAN requests also gain maxRedirects: 5. The commit notes this bypass reached IMDS, which is strictly broader than the prior variant that reached only loopback. Cloudflare Worker deployments were never exposed because the CF sandbox already blocks internal addresses, and the same release adds a default-deny allowlist gate requiring CKAN_ALLOWED_DOMAINS before the network-exposed HTTP transport will start.
Know when Ckan Mcp Server 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
AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N
Exploitation needs prompt injection of the victim assistant (AC:H, UI:R); attacker supplying malicious content is unauthenticated (PR:N); IMDS credential disclosure is C:H, no integrity/availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
CKAN MCP Server is a tool for querying CKAN open data portals. Prior to version 0.4.108, the SSRF guard validateServerUrl (added for CVE-2026-33060, extended for CVE-2026-53509) validates only the hostname string and never resolves DNS. Any caller-supplied server_url whose hostname *resolves* to an internal address passes the guard, so the server issues requests to loopback and cloud metadata (169.254.169.254). This is a third bypass of the same guard, and it reaches IMDS - strictly more than CVE-2026-53509, which only reached loopback. Version 0.4.108 contains an updated fix.
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-84031
GHSA-798p-78g2-v556
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB