CVE-2026-105679: Ghost: Stored XSS via File Uploads on Local Storage
Impact
Ghost restricts the content type that uploaded files are served with, to prevent browsers from executing them. On sites using the default local storage adapter, this restriction was not applied, so files uploaded by any staff user were served with a content type derived from their file extension. This could be used to host scripts on the site's domain, possibly resulting in compromise of other staff users' admin sessions.
Vulnerable versions
This vulnerability is present in Ghost from v6.22.1 up to v6.64.0.
Patches
v6.64.0 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.
References
Ghost thanks evertrustai, Thai Son Dinh of VinSOC Labs, Enis Atılgan, Doan Manh Duc, Harshit Gupta (Mr HAX), 白墨, and Mukul of Parameter for disclosing this vulnerability responsibly.
For more information
If you have any questions or comments about this advisory, email us at security@ghost.org.
Other sources
Ghost is a Node.js content management system. From 6.22.1 until 6.64.0, Ghost restricted the content type used to serve uploaded files to prevent browsers from executing them. On sites using the default local storage adapter, this restriction was not applied, so files uploaded by any staff user were served with a content type derived from their file extension. This could be used to host scripts on the site's domain, possibly resulting in compromise of other staff users' admin sessions. This issue is fixed in version 6.64.0.
— 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.64.0 - Upgrade
Upgrade
Ghostto a version that resolves this vulnerability.Fixed in 6.64.0
Event History
Frequently Asked Questions
Which deployments are affected?
Ghost versions from 6.22.1 through 6.64.0 are affected when they use the default local storage adapter. The issue is fixed in Ghost 6.64.0.
What access does an attacker need?
An attacker needs staff-level access that permits uploading files. Exploitation also requires another staff user to interact with content that causes the uploaded script to execute.
What is the likely impact?
A staff user can upload a file served with a content type based on its extension and use it to host script on the site's domain. This may allow compromise of other staff users' admin sessions.
What should be done if patching cannot happen immediately?
The provided information identifies the default local storage adapter as affected, but does not provide a documented workaround. Prioritize restricting file-upload access to trusted staff and upgrade to 6.64.0 when possible.