CVE-2026-112954: ApostropheCMS: Unauthenticated publicApiProjection bypass via search and sort query builders in the public REST API
ApostropheCMS lets a module expose an anonymous read API by setting publicApiProjection, which whitelists the document fields unauthenticated callers may see. The public REST GET handler applies every launderable query builder from the query string before forcing that projection. Two of those builders, search and sort, operate on the underlying documents rather than the projected output, and neither is checked against the projection. An unauthenticated attacker can therefore:
- use
?search=<word>as a value oracle to confirm and locate documents by the content of a field the projection was meant to hide, and - use
?sort[hiddenField]=1as an ordering oracle to rank documents by a hidden field’s value.
This is the same confidentiality-bypass class already patched for the choices/counts builders (gated by choicesFieldAllowedByProjection). That gate was never applied to search or sort.
References
- github.com/advisories/GHSA-rqgm-cfrp-4hx8
- github.com/apostrophecms/apostrophe/commit/06e4b377f3c360f9e89c32dccd7e505ad5ddf498
- github.com/apostrophecms/apostrophe/commit/40b989b1a9dd23d30029b8ce7668634265cfe5ea
- github.com/apostrophecms/apostrophe/releases/tag/apostrophe@4.34.0
- github.com/apostrophecms/apostrophe/security/advisories/GHSA-rqgm-cfrp-4hx8
- nvd.nist.gov/vuln/detail/CVE-2026-112954
Code Behaviors & Features
Detect and mitigate CVE-2026-112954 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →