CVE-2026-53509
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-53509 is a Server-Side Request Forgery (SSRF) filter bypass vulnerability in the @aborruso/ckan-mcp-server npm package that allows a remote MCP caller to make the server connect to loopback or private network addresses by supplying hostname aliases such as ip6-localhost. It represents a bypass of the prior fix for CVE-2026-33060, which introduced IP-address filtering but failed to account for non-standard hostname aliases. Affected versions are all releases of @aborruso/ckan-mcp-server prior to 0.4.106; version 0.4.106 contains the patch. The vulnerability was first published on May 31, 2026, added to the GitHub Advisory Database on July 7, 2026, and carries a CVSS v3.1 base score of 5.7 (Moderate) (GitHub Advisory, Security Advisory).

Technical details

The root cause is an incomplete SSRF blocklist (CWE-918) in src/utils/http.ts. The original fix for CVE-2026-33060 blocked localhost, dotted IPv4 literals, and bracketed IPv6 literals, but the check was implemented as a single hostname === 'localhost' string comparison. Hostname aliases such as ip6-localhost and ip6-loopback — which are present in /etc/hosts on many Linux systems and resolve to the IPv6 loopback address ::1 — are not equal to localhost, are not dotted IPv4 literals, and are not bracketed IPv6 literals, so they pass the filter unimpeded. A remote MCP caller that can invoke CKAN tools (e.g., ckan_package_search, sparql_query) with a crafted server_url or base_url parameter containing such an alias can therefore cause the server to issue outbound HTTP requests to loopback or internal network addresses and, for CKAN-shaped responses, receive the returned data (GitHub Advisory, Security Advisory).

Impact

Successful exploitation allows an attacker to pivot the CKAN MCP Server into an internal network proxy, enabling access to services on loopback and private addresses that would otherwise be unreachable from the internet. The primary impact is high confidentiality loss — an attacker can retrieve data from internal services (e.g., cloud metadata endpoints such as the AWS IMDS at 169.254.169.254, internal APIs, or other locally bound services) if those services return CKAN-shaped responses. There is no direct integrity or availability impact, but the ability to enumerate and probe internal services could facilitate further lateral movement or credential theft (GitHub Advisory, Release Notes).

Exploitability

No public exploit code or in-the-wild exploitation has been reported for CVE-2026-53509. The vulnerability was responsibly disclosed by researcher hibrian827 and patched before broad public disclosure. Exploitation requires low privileges (the ability to invoke MCP tools) and user interaction (a victim's AI assistant must have the MCP server connected and process attacker-controlled content), which limits opportunistic exploitation. The EPSS score for the related predecessor CVE-2026-33060 was 0.289% (21st percentile); no EPSS or CISA KEV entry has been published for CVE-2026-53509 at this time (GitHub Advisory, CVE-2026-33060 Advisory).

Exploitation steps

  1. Identify a target: Locate an environment where an AI assistant (e.g., an LLM agent) has the @aborruso/ckan-mcp-server npm package (version < 0.4.106) connected as an MCP server.
  2. Craft a prompt injection payload: Prepare malicious content (e.g., a webpage, document, or dataset) that, when processed by the AI assistant, instructs it to invoke a CKAN MCP tool such as ckan_package_search with a crafted base_url parameter.
  3. Supply a bypass hostname: Use a hostname alias that resolves to loopback but is not blocked by the filter, for example: {"tool": "ckan_package_search", "arguments": {"base_url": "http://ip6-localhost:8080/internal-api", "query": "test"}}.
  4. Trigger the request: When the victim's AI assistant processes the injected content, it invokes the tool, causing the MCP server to issue an HTTP request to http://ip6-localhost:8080/internal-api (resolving to ::1:8080 on the server host).
  5. Retrieve internal data: If the internal service returns a CKAN-shaped JSON response, the MCP server parses and returns the data to the caller, exposing internal service content such as credentials, configuration, or cloud metadata (GitHub Advisory, Security Advisory).

Indicators of compromise

  • Network: Outbound HTTP requests from the CKAN MCP Server process to loopback addresses (::1, 127.0.0.1) or private/internal IP ranges on unexpected ports; requests to cloud metadata endpoints (e.g., 169.254.169.254) originating from the MCP server process.
  • Logs: Application or access logs showing base_url or server_url parameter values containing ip6-localhost, ip6-loopback, or other non-standard hostname aliases; HTTP requests to internal hostnames logged by the Node.js process.
  • Process: Unusual outbound TCP connections from the Node.js MCP server process to loopback or RFC 1918 addresses on ports not associated with legitimate CKAN portals.

Mitigation and workarounds

Upgrade @aborruso/ckan-mcp-server to version 0.4.106 or later, which replaces the single hostname === 'localhost' check with a blocked-hostname Set that explicitly covers ip6-localhost and ip6-loopback (patched in commit c761045a1b7c5f40d2626540dd2ef1d4feb91f8c). As a defense-in-depth measure, restrict outbound network access from the MCP server host using firewall rules to prevent connections to loopback, RFC 1918 ranges, and cloud metadata endpoints regardless of application-level filtering. Organizations should also consider implementing a base_url allowlist of permitted CKAN portals as recommended in the predecessor advisory for CVE-2026-33060 (Release Notes, GitHub Advisory).

Community reactions

The vulnerability was responsibly disclosed by researcher hibrian827 and acknowledged by the maintainer (aborruso) of the ondata/ckan-mcp-server repository. The fix was released promptly on May 31, 2026, the same day the advisory was published, with two new unit tests added to prevent regression. No broader media coverage or notable public commentary beyond the GitHub advisory and release notes has been identified (Security Advisory, Release Notes).

Additional resources


SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-77415CRITICAL9.3
  • JavaScript logoJavaScript
  • jsonata
NoYesAug 21, 2026
CVE-2026-77414CRITICAL9.3
  • JavaScript logoJavaScript
  • jsonata
NoYesAug 21, 2026
CVE-2026-77413CRITICAL9.3
  • JavaScript logoJavaScript
  • jsonata
NoYesAug 21, 2026
CVE-2026-63421HIGH7.5
  • JavaScript logoJavaScript
  • @keystone-6/core
NoYesAug 21, 2026
CVE-2026-53509MEDIUM5.7
  • JavaScript logoJavaScript
  • @aborruso/ckan-mcp-server
NoYesAug 21, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management