Read the docs

Stored cross-site scripting in Ghost file uploads on local storage

Priority LOW 34CWE-434Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
Required
Attack complexity
Low
Impact type
Code execution, Cross-site scripting
Confidentiality · integrity · availability
High · High · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-434 and CWE-79.

Summary

Ghost from 6.22.1 before 6.64.0 does not apply its content type restriction to uploaded files when the default local storage adapter is used, so files are served with a content type derived from their file extension (CWE-79). A staff user with low privileges can upload a file that runs as a script on the site's domain when another user opens it, possibly compromising other staff admin sessions.

Written with Claude Haiku 5.5 from the sources below · 2026-10-29

Description from the CNA

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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00237 14th percentileScored 2026-11-07
Fix Fixed Ghost (TryGhost): 6.64.0ghost (npm): 6.64.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
TryGhostGhost6.22.1 to before 6.64.06.64.0Patch availableCNA
—ghost (npm)6.22.1 to before 6.64.06.64.0Patch availableGHSA-gfjp-2p8f-94qv
  • Ghost VendorTryGhost Affected 6.22.1 to before 6.64.0 Fixed in 6.64.0 Patch available CNA
  • ghost (npm) Vendor— Affected 6.22.1 to before 6.64.0 Fixed in 6.64.0 Patch available GHSA-gfjp-2p8f-94qv

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:ghost:ghost:*:*:*:*:*:*:*:*——TryGhost
  • cpe:2.3:a:ghost:ghost:*:*:*:*:*:*:*:* Versions — — ·TryGhost

Remediation

Upgrade Ghost to version 6.64.0, which fixes the issue, as the npm package ghost lists it as the fixed version.

Written with Claude Haiku 5.5 from the sources below · 2026-10-29

  • Fix · CNA Ghost (TryGhost) Fixed in 6.64.0
  • Fix · GHSA-gfjp-2p8f-94qv ghost (npm) Fixed in 6.64.0 Advisory →

Timeline

  1. 2026-10-05 Threatist record created from CVE-2026-105679
  2. 2026-10-06 CISA SSVC decision points changed
  3. 2026-10-06 Priority changed: MEDIUM → LOW
  4. 2026-10-07 Alias added: GHSA-gfjp-2p8f-94qv
  5. 2026-10-07 Fix available: npm/[email protected] · GHSA-gfjp-2p8f-94qv
  6. 2026-10-07 CVSS score added · GHSA-gfjp-2p8f-94qv
  7. 2026-10-07 Weakness changed · GHSA-gfjp-2p8f-94qv
  8. 2026-10-07 6 new references · GHSA-gfjp-2p8f-94qv

References

  • TI-2026-21459 Ghost has a SQL Injection in its Content API CVSS 3.1CRITICAL 9.4
  • TI-2022-10277 An arbitrary file upload vulnerability in the file upload module of Ghost v4.39.0 allows… CVSS 3.1CRITICAL 9.8
  • TI-2024-22785 Ghost through 5.85.1 allows remote attackers to bypass an authentication rate-limit… CVSS 3.1CRITICAL 9.1
  • TI-2023-14843 Ghost vulnerable to disclosure of private API fields CVSS 3.1HIGH 7.5
  • TI-2025-09049 Ghost 6.0.6 - SSRF via oEmbed Bookmark CVSS 4.0MEDIUM 6.1
  • TI-2023-20918 Arbitrary file read via symlinks in Ghost CVSS 3.1MEDIUM 6.5
See all 109 →

Sources