Skip to main content

Ghost CMS CVE-2026-105679

| EUVDEUVD-2026-92770 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-05 GitHub_M GHSA-gfjp-2p8f-94qv
7.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as staff user
  2. Delivery
    Upload crafted script file to local storage
  3. Exploit
    File served with executable content type on site domain
  4. Execution
    Lure/wait for admin to load URL
  5. Persist
    Script runs in victim's session
  6. Impact
    Hijack admin session and escalate privileges

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires: (1) the site must use Ghost's DEFAULT local storage adapter - sites on S3 or other cloud adapters are not affected because those store and serve an inert content type; (2) the attacker must be an authenticated staff user with file-upload privileges; and (3) a victim staff/admin user must load the uploaded file's URL in their browser (UI:R). The attack is limited to the window of Ghost versions 6.22.1 through 6.63.x and is neutralized in 6.64.0, which forces an inert content type plus nosniff. The requirement for staff-level authentication and victim interaction is the primary limiting factor; this is not exploitable by unauthenticated or anonymous visitors.

Impact

This is a stored XSS flaw (CWE-79) in Ghost CMS carrying a vendor/NVD CVSS of 7.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N). The network vector and low complexity are real, but two factors meaningfully constrain actual risk: PR:L means the attacker must already be an authenticated staff user, and UI:R means a second staff user must load the malicious file. No EPSS score, CISA KEV listing, or public POC was provided, so there is no public exploit identified at time of analysis and no evidence of active or widespread exploitation. The signals are internally consistent - the CVSS vector matches the description (authenticated upload, victim interaction, confidentiality/integrity impact on admin sessions, no availability impact). Realistically this is a privilege-escalation/lateral-movement primitive among staff accounts rather than an unauthenticated internet-facing RCE: a genuine issue to patch, but closer to a mid-tier priority than an emergency given the authentication and interaction prerequisites. The one condition worth verifying is the storage adapter: the flaw only affects sites on the default local storage adapter (S3/cloud adapters already set an inert content type), so exposure depends on deployment configuration.

Exploit ScenarioDerived

A malicious or compromised staff user on a Ghost site using the default local storage adapter uploads a crafted file (e.g. an HTML or JS payload) that Ghost serves with an executable content type derived from its extension. When another staff user - such as an administrator - visits the attacker-controlled URL on the site's own domain, the script executes in their browser context and can hijack their admin session. No public exploit code is identified at time of analysis, but the technique is straightforward for anyone with staff upload access.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 05, 2026

Stored cross-site scripting in Ghost CMS 6.22.1 through 6.63.x lets an authenticated staff user with upload privileges host a browser-executable file on the site's own domain when the default local storage adapter is in use, potentially compromising other staff members' admin sessions. The flaw arises because the local storage adapter serves uploaded files with a Content-Type derived from the file extension instead of the inert type Ghost applies elsewhere, and it requires a victim staff or admin user to load the uploaded file's URL (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N, base 7.3). Sites using S3 or other cloud storage adapters are not affected, and the issue is fully neutralized in 6.64.0; there is no public exploit identified at time of analysis and no confirmed active exploitation (not in CISA KEV).

RemediationAI

Vendor-released patch: upgrade Ghost to 6.64.0 (https://github.com/TryGhost/Ghost/releases/tag/v6.64.0), which forces the inert, non-executable content type for locally stored uploaded files and adds X-Content-Type-Options: nosniff as implemented in commit 58669d5c8b898f8b69c1287c2779b29ecc7eb918 and pull request https://github.com/TryGhost/Ghost/pull/30762; consult the vendor advisory at https://github.com/TryGhost/Ghost/security/advisories/GHSA-gfjp-2p8f-94qv for the authoritative guidance. If upgrading immediately is not possible, consider migrating file storage to an S3 or other cloud storage adapter, which already serves an inert Content-Type and fully removes the exposure (trade-off: requires object-storage infrastructure, credentials, and re-pointing existing content URLs). As a compensating control, configure the reverse proxy or CDN in front of Ghost to force an inert Content-Type (for example text/plain or application/octet-stream) and add X-Content-Type-Options: nosniff for the upload-serving path such as /content/files/* (trade-off: legitimate inline rendering of uploaded images, PDFs, or SVG assets may break, so scope the rule to executable extensions like .html, .htm, .svg, and .js where possible). Additionally, tighten the blast radius by restricting file-upload permissions to the minimum set of trusted staff and auditing existing uploads in the content/files directory for attacker-supplied HTML, SVG, or JavaScript; note that since exploitation requires a victim to open the uploaded file's URL, staff awareness and restricting who can upload are mitigations but not substitutes for patching, and all previously uploaded malicious files should be deleted after the upgrade.

Affected VersionsENISA

Ghost 6.22.1, < 6.64.0

Affected Packages

npm ghost fix: 6.64.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Ghost is a Node.js content management system that abstracts file storage behind pluggable adapters, with a local filesystem adapter as the default and S3-style cloud adapters as alternatives. In the affected architecture, the files upload endpoint resolves an inert content type per file (for example mapping .html to text/plain and .svg to application/octet-stream) and cloud adapters persist that type as object metadata so it is returned on serving; the local adapter extends LocalStorageBase, which had no place to store such metadata and therefore let the underlying send/express.static logic derive the response Content-Type from the file extension. As a result an uploaded .html or .svg file was served from the site's own origin with a browser-executable MIME type, turning the CMS into a same-origin script host and creating a classic stored XSS condition (CWE-79) whose impact is amplified because the injected script runs on the domain that holds staff admin session cookies. The upstream fix adds a setServeHeaders hook to LocalStorageBase that sets X-Content-Type-Options: nosniff, and overrides it in LocalFilesStorage to call getStorageContentType so the inert type is re-resolved at serve time, matching the behavior cloud adapters already had. The vulnerability class is improper neutralization of user-controlled input in a web page (stored/persistent XSS via file upload and content-type confusion), and exploitation is bounded by the storage backend, the attacker's staff-level privileges, and the victim's required interaction.

Know when Ghost gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.3 HIGH
AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
vuln.today AI 7.3 HIGH

Authenticated staff upload (PR:L) and a victim staff user must load the file (UI:R); network-served with low complexity on the default adapter, yielding session compromise (C:H/I:H) but no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Oct 05, 2026 - 21:02 EUVD
CVE Published
Oct 05, 2026 - 19:22 cve.org
HIGH 7.3

DescriptionCVE.org

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.

Technical POC Analysis

Evidence caveat: the supplied evidence is the GHSA-gfjp-2p8f-94qv advisory text only.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Ghost CMS versions 6.22.1 through 6.63.x contain a stored cross-site scripting flaw that can let an authenticated staff user with upload privileges place a browser-executable file on the organization's own domain, potentially compromising other staff or administrator sessions. The issue affects only sites using the default local storage adapter; sites using S3 or other cloud storage adapters are not affected. Vendor-released patch: 6.64.0 fully neutralizes the flaw, and there is no public exploit identified at time of analysis, but leadership should prioritize remediation because admin session compromise could lead to unauthorized content, data, or access changes.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Medium
Ghost is a popular self-hosted CMS, but not infrastructure-ubiquitous
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Ghost

View all
CVE-2026-22594 HIGH POC
8.1 Jan 10

Ghost CMS versions 5.105.0-5.130.5 and 6.0.0-6.10.3 contain an authentication bypass in their two-factor authentication

CVE-2026-29053 HIGH POC
7.6 Mar 05

Arbitrary code execution in Ghost CMS versions 0.7.2 through 6.19.0 allows authenticated attackers with theme upload pri

CVE-2022-28397 CRITICAL POC
9.8 Apr 12

An arbitrary file upload vulnerability in the file upload module of Ghost CMS v4.42.0 allows attackers to execute arbitr

CVE-2022-27139 CRITICAL POC
9.8 Apr 12

An arbitrary file upload vulnerability in the file upload module of Ghost v4.39.0 allows attackers to execute arbitrary

CVE-2026-26980 CRITICAL POC
9.4 Feb 20

SQL injection in Ghost CMS versions 3.24.0 through 6.19.0 allows unauthenticated attackers to read arbitrary database da

CVE-2024-34451 CRITICAL POC
9.1 Jun 16

Ghost through 5.85.1 allows remote attackers to bypass an authentication rate-limit protection mechanism by using many X

CVE-2024-23724 CRITICAL POC
9.0 Feb 11

Ghost through 5.76.0 allows stored XSS, and resultant privilege escalation in which a contributor can take over any acco

CVE-2024-34448 HIGH POC
8.8 May 22

Ghost before 5.82.0 allows CSV Injection during a member CSV export. Rated high severity (CVSS 8.8), this vulnerability

CVE-2020-8134 HIGH POC
8.1 Mar 20

Server-side request forgery (SSRF) vulnerability in Ghost CMS < 3.10.0 allows an attacker to scan local or external netw

CVE-2023-32235 HIGH POC
7.5 May 05

Ghost before 5.42.1 allows remote attackers to read arbitrary files within the active theme's folder via /assets/built%2

CVE-2021-29484 MEDIUM POC
6.8 Apr 29

Ghost is a Node.js CMS. Rated medium severity (CVSS 6.8), this vulnerability is remotely exploitable, no authentication

CVE-2023-40028 MEDIUM POC
6.5 Aug 15

Ghost is an open source content management system. Rated medium severity (CVSS 6.5), this vulnerability is remotely expl

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy