# CVE-2026-73846: CKAN MCP Server cache-key canonicalization collision

Source: https://junglewise.ai/threats/cve-2026-73846-ckan-mcp-server-cache-key-canonicalization-collision  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-08-14. Updated: 2026-09-25  
License: CC BY 4.0 with a link back

CVE-2026-73846 · Severity: medium · CVSS 6.5 · Published 2026-08-14

CKAN MCP Server, a data portal integration tool, caches API responses using insecurely-constructed cache keys that can collide due to missing escaping of special characters. An attacker can craft requests that produce identical cache keys as a victim's distinct requests, causing the victim to receive attacker-controlled data instead of their intended query results. In shared deployments (default configuration), this enables cache poisoning attacks that corrupt query integrity and can deliver malicious content to downstream AI models.

Technologies: [@aborruso/ckan-mcp-server (npm)](https://junglewise.ai/threats/technologies/aborruso-ckan-mcp-server). Vendors: [npm](https://junglewise.ai/threats/vendors/npm).

## Quick answers

**Is CVE-2026-73846 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-73846 being exploited in the wild.

**How severe is CVE-2026-73846?** Medium severity, with a CVSS score of 6.5, published 14 August 2026.

**Which products and versions are affected?** @aborruso/ckan-mcp-server (npm) < 0.4.112, SEMVER:introduced=0,fixed=0.4.112.

**Is there a fix for CVE-2026-73846?** Yes. @aborruso/ckan-mcp-server (npm): upgrade to 0.4.112 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-73846 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-73846?** Check whether you run @aborruso/ckan-mcp-server (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- @aborruso/ckan-mcp-server (npm): upgrade to 0.4.112 or later

  ```sh
  npm install @aborruso/ckan-mcp-server@0.4.112
  ```


## Technical details

The vulnerability is a cache-key canonicalization collision (CWE-436: Interpretation Conflict, CWE-345: Insufficient Verification of Data Authenticity). The `canonicalizeParams` function in `src/utils/cache.ts` joins sorted key-value pairs with unescaped `&` delimiters and does not escape `=` characters. The resulting string is then prefixed with `serverUrl` and `action` separated by unescaped `|` characters before hashing. This creates an ambiguity: parameters `{q: "budget", rows: 10}` and `{q: "budget&rows=10"}` both serialize to the same canonical string `q=budget&rows=10`. Additionally, objects and strings cannot be distinguished (e.g., `{filters: {a: "b"}}` vs `{filters: '{"a":"b"}'}` collide). An attacker can inject any canonical string into the alphabetically-first parameter name. On shared caches (enabled by default, including Cloudflare Workers' `caches.default` and Node.js in-process LRU), an attacker primes a colliding key so a victim's distinct query receives the attacker's cached response. Preconditions: caching must be enabled and the instance must be shared. Attack vector is network; no authentication or user interaction required. The fix requires encoding cache keys using percent-escaping, structured JSON with type tags, or a separator that cannot appear in encoded fields. Patch available in version 0.4.112.

## Affected products

- ondata @aborruso/ckan-mcp-server < 0.4.112

## Identifiers

- CVE-2026-73846
- GHSA-78x9-fhhx-v2g6

## Timeline

- 2026-09-03: disclosed: Published on GitHub Advisory Database
- 2026-09-03: patched: Version 0.4.112 released with fix

## References

- [https://api.github.com/users/Gal3m](https://api.github.com/users/Gal3m)
- [https://github.com/Gal3m](https://github.com/Gal3m)
- [https://api.github.com/users/Gal3m/gists%7B/gist_id%7D](https://api.github.com/users/Gal3m/gists%7B/gist_id%7D)
- [https://api.github.com/users/Gal3m/repos](https://api.github.com/users/Gal3m/repos)
- [https://avatars.githubusercontent.com/u/91008976?v=4](https://avatars.githubusercontent.com/u/91008976?v=4)
- [https://api.github.com/users/Gal3m/events%7B/privacy%7D](https://api.github.com/users/Gal3m/events%7B/privacy%7D)

## Related threats

- [CKAN MCP Server is a tool for querying CKAN open data portals. Prior to 0.4.112, the DataStore table UI in src/resources/datastore-table-ui.](https://junglewise.ai/threats/cve-2026-76894-ckan-mcp-server-datastore-table-ui-resource-does-not-validate)
- [@aborruso/ckan-mcp-server SSRF via DNS name resolution](https://junglewise.ai/threats/cve-2026-61612-aborruso-ckan-mcp-server-ssrf-via-dns-name-resolution)
- [CKAN MCP Server is a tool for querying CKAN open data portals. A known vulnerability indicated tools including ckan_package_s](https://junglewise.ai/threats/cve-2026-53509-aborruso-ckan-mcp-server-ssrf-via-hostname-alias-bypass)
- [CKAN MCP Server allowlist bypass via unanchored regex in MQA validation](https://junglewise.ai/threats/cve-2026-73845-ckan-mcp-server-allowlist-bypass-via-unanchored-regex-in-mqa)
- [CKAN MCP Server information disclosure via error reflection](https://junglewise.ai/threats/cve-2026-73844-ckan-mcp-server-information-disclosure-via-error-reflection)
