CVE-2026-61836: Directus: Authorization-dependent response served from unsegmented cache key
When response caching is enabled (CACHE_ENABLED=true), the cache-key derivation in api/src/utils/get-cache-key.ts includes only version, path, query, and accountability.user (plus a conditional ip). Authorization context beyond user (share, role, roles, admin, app, policies) is not part of the key.
For share tokens this is load-bearing. Directus’s share-authentication flow (api/src/services/shares.ts:100-105) issues a JWT without an id claim, so api/src/utils/get-accountability-for-token.ts never assigns accountability.user, leaving it null (the default from create-default-accountability.ts). Every share token, and every anonymous request, therefore reduces to user: null in the cache-key input. Two different shares (or an anonymous request and a share token) requesting the same URL with the same query produce identical cache keys. The first request populates the bucket with a permission-filtered response; subsequent hits from unrelated shares or anonymous clients receive that payload without any permission re-evaluation.
This is the web-cache pattern “authorization-dependent response cached under an unsegmented key” (cache key collision / missing authorization context in cache key, CWE-524 and CWE-639). Two adjacent read populations collide:
- Share to share:
Share Apopulates the cache,Share BreadsShare A’s scoped response. - Share to anonymous (and the reverse): any unauthenticated client hitting the same URL retrieves cached share-scoped data without presenting any token.
References
- github.com/advisories/GHSA-c6w9-5g5j-jh2p
- github.com/directus/directus/commit/7ba4efb97525d3af33570537c76e44baea767f13
- github.com/directus/directus/pull/27707
- github.com/directus/directus/releases/tag/v12.0.0
- github.com/directus/directus/security/advisories/GHSA-c6w9-5g5j-jh2p
- nvd.nist.gov/vuln/detail/CVE-2026-61836
Code Behaviors & Features
Detect and mitigate CVE-2026-61836 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →