CVE-2026-73844: CKAN MCP Server: Information disclosure via verbose error reflection
Summary Error paths reflect raw upstream response bodies and internal exception messages back to the caller instead of a sanitized, generic message. When the server is pointed at (or redirected/SSRF'd to) a host that returns a non-CKAN response, or when an internal exception occurs, the caller receives verbatim upstream content and internal detail (hostnames, internal IPs, DB errors, stack fragments).
Published Sep 3, 2026
Affected packages
@aborruso/ckan-mcp-server
- Ecosystem
- npm
- Affected
- < 0.4.112
- Fixed in
- 0.4.112
- Check
npm ls @aborruso/ckan-mcp-server
Advisory details
From the GitHub Advisory Database (CC BY 4.0).
Summary
Error paths reflect raw upstream response bodies and internal exception messages back to the caller instead of a sanitized, generic message. When the server is pointed at (or redirected/SSRF'd to) a host that returns a non-CKAN response, or when an internal exception occurs, the caller receives verbatim upstream content and internal detail (hostnames, internal IPs, DB errors, stack fragments).
Affected code
src/utils/http.ts — the entire decoded upstream body is embedded in the thrown error, which formatCkanError returns to the tool result:
} else {
throw new CkanApiError(
`CKAN API returned success=false: ${JSON.stringify(decodedData)}`, // full body reflected
undefined,
action
);
}src/worker.ts — the catch-all handler returns the raw Error.message in the JSON-RPC data field:
return new Response(JSON.stringify({
jsonrpc: '2.0',
error: { code: -32603, message: 'Internal error',
data: error instanceof Error ? error.message : String(error) }, // raw internal message
id: null
}), { status: 500, ... });Impact
- Reflects arbitrary upstream response content to the caller. Combined with the SSRF vectors (advisories #01/#06), an attacker can use this as the *read* channel: point the server at an internal endpoint and receive its body inside the
success=falseerror string (turning otherwise-blind SSRF into a semi-blind/return-value SSRF for any host that reaches the guards). - Leaks internal operational detail via exception messages: node error codes and target addresses (e.g.
ECONNREFUSED 169.254.169.254:80), which confirm internal reachability and infrastructure, and any stack/path fragments an upstream includes. - Aids reconnaissance and error-oracle attacks against the deployment.
Severity is Low on its own (the server holds no credentials of its own and sends no auth upstream), but it meaningfully amplifies the SSRF findings by providing a response-content channel.
Proof of concept
poc/error-disclosure-poc.mjs reproduces both paths and shows an upstream body (containing a simulated DB error with an internal IP) and an internal ECONNREFUSED 169.254.169.254 message being reflected to the caller.
Remediation
- Return generic, action-scoped error messages to the caller; log the detailed upstream body/exception server-side only.
- Do not embed
JSON.stringify(decodedData)in caller-visible errors; cap and redact any reflected content. - In the Workers catch-all, omit
error.messagefrom the responsedata(or replace with a correlation id) in production.
Credited to Gal3m, mrostamipoor.
References
- https://github.com/ondata/ckan-mcp-server/security/advisories/GHSA-6f9w-9hf2-5rg3
- https://nvd.nist.gov/vuln/detail/CVE-2026-73844
- https://github.com/ondata/ckan-mcp-server/commit/3b827af72b228d42aa7b0d7dac5347d16af3f4e5
- https://github.com/ondata/ckan-mcp-server/releases/tag/v0.4.112
- https://github.com/advisories/GHSA-6f9w-9hf2-5rg3
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology
More Other MCP servers and tools vulnerabilities
All Other MCP servers and tools entriesCVE-2026-77361
obsidian-tc : Symlink read-ACL scope bypass via lexical path checks
medium4.7Oct 23, 2026CVE-2026-114126
Storybook dev server vulnerable to code injection from the local network
high8.7Oct 22, 2026CVE-2026-113731
djust: Arbitrary absolute-path file read in the find_handlers_for_template MCP tool
low3.3Oct 21, 2026CVE-2026-114125
Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites
critical9.4Oct 21, 2026CVE-2026-111770
MCP TypeScript server SDK: Shared transport or server instances delivered one HTTP client's messages to another
high7.7Oct 20, 2026GHSA-953h-535j-jg2v
agent-router: MCP session resume does not verify the embedded anti-hijacking subject; default Helm seed makes session IDs forgeable
medium6.8Oct 19, 2026
