CVE-2026-53949: Ghost Content API filter bypass reveals private fields
Impact
The validation applied to filters on the public API endpoints could be partially bypassed, making it possible to reveal private fields via a brute force attack. If SQLite was used as the database password hashes were fully accessible. If MySQL was used as the database the password hashes' case (uppercase / lowercase) would have been lost, which would likely have rendered a further brute force attack on the discovered hashes fruitless.
Vulnerable versions
This vulnerability is present in Ghost from v5.46.1 up to v6.21.1.
Patches
v6.21.2 contains a fix for this issue.
How to update
For self-hosters using Docker, find Docker's official Ghost image here. Updating a Docker-based Ghost instance is documented here.
If your Ghost is a Ghost-CLI install see our documentation on updating it to the latest version here.
Workarounds
If upgrading immediately is not possible, block or filter requests to Content API endpoints where the filter query parameter contains password or email (including any compound form such as users.password, users.email, authors.password, authors.email). Reject requests at a reverse proxy / WAF layer before they reach Ghost.
Example (case-insensitive) pattern to block on the raw querystring:
filter=[^&](password|email)
References
Ghost thanks crnkovic for disclosing this vulnerability responsibly.
For more information
If you have any questions or comments about this advisory, email Ghost at security@ghost.org.
Other sources
Ghost is a Node.js content management system. From 5.46.1 until 6.21.2, the validation applied to filters on the public API endpoints could be partially bypassed, making it possible to reveal private fields via a brute force attack. If SQLite was used as the database password hashes were fully accessible. If MySQL was used as the database the password hashes' case (uppercase / lowercase) would have been lost, which would likely have rendered a further brute force attack on the discovered hashes fruitless. This vulnerability is fixed in 6.21.2.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/ghostto a version that resolves this vulnerability.Fixed in 6.21.2 - Upgrade
Upgrade
Ghostto a version that resolves this vulnerability.Fixed in 6.21.2 - Compensating control
As an immediate mitigation when upgrading is not possible, block or filter requests to Ghost Content API endpoints where the `filter` query parameter contains `password` or `email` (including compound forms like `users.password`, `users.email`, `authors.password`, `authors.email`). Example pattern: `filter=[^&]*(password|email)`.
- Compensating control
Reject requests at a reverse proxy / WAF layer before they reach Ghost (specifically for Content API endpoints with `filter` parameters containing `password` or `email` per the pattern `filter=[^&]*(password|email)`).
Event History
Frequently Asked Questions
What is the severity of CVE-2026-53949?
The severity of CVE-2026-53949 is medium with a score of 5.3.
How do I fix CVE-2026-53949?
To fix CVE-2026-53949, update Ghost to version 6.21.2 or later.
What type of vulnerability is CVE-2026-53949?
CVE-2026-53949 is a vulnerability that allows for a bypass of filters on the public API endpoints, leading to information leakage.
What is the impact of CVE-2026-53949 on Ghost?
CVE-2026-53949 can potentially expose private fields through a brute force attack on the public API.
In which versions of Ghost is CVE-2026-53949 present?
CVE-2026-53949 exists in Ghost versions from 5.46.1 to 6.21.2.