Skip to main content

Ghost CMS CVE-2026-105649

| EUVDEUVD-2026-92756 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-05 GitHub_M GHSA-8575-cr6v-7jh4
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
    Obtain low-privilege Contributor staff account
  2. Delivery
    Upload SVG with embedded script payload
  3. Exploit
    File stored unsanitized on site domain
  4. Execution
    Administrator views the media
  5. Persist
    Payload executes in admin session
  6. Impact
    Hijack higher-privileged admin account

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

Requires an authenticated Ghost staff account; the advisory confirms even the lowest-trust Contributor role is sufficient (PR:L). The attacker uploads an SVG payload via one of two paths shown in the fix: (1) an SVG supplied as a video/media thumbnail, or (2) a file carrying a non-SVG extension (e.g. .png) together with a Content-Type of image/svg+xml, which the pre-patch allowlist checked only by extension. The second path's real-world impact depends on the configured storage adapter - adapters that serve files by stored content type (e.g. Amazon S3) will deliver the file as image/svg+xml and execute it, so exposure varies by storage backend. Exploitation is further limited by the need for a higher-privileged staff/admin user to actually view the malicious media (UI:R) for session compromise to occur; it does not fire automatically or against anonymous visitors. Instances that do not provision untrusted Contributor/Author accounts are effectively not exposed.

Impact

This is a stored XSS (CWE-79) in Ghost's media/image upload pipeline, vendor-rated 7.3. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N shows a network-reachable, low-complexity flaw, but two signals temper the raw score: PR:L means the attacker must already hold a staff account (the advisory specifies even a low-trust Contributor qualifies), and UI:R means a second, higher-privileged staff/admin user must actually view the malicious SVG before the payload fires. No EPSS score, CISA KEV entry, or public proof-of-concept is present in the supplied data, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The practical risk is a privilege-escalation path: a semi-trusted Contributor can plant script that runs on the site's own domain to steal an admin's authenticated session. This is a genuine, real-world-plausible low-trust-account/insider threat for any Ghost instance that grants Contributor or Author accounts to untrusted parties, but it is not an unauthenticated internet-wide mass-exploitation issue - it is gated behind an existing account plus victim interaction, so it sits below the 'drop everything' tier while still warranting prompt patching. The source-code evidence clarifies a second trigger path (non-SVG extension with an image/svg+xml content type) that is most impactful on storage adapters serving by content type, e.g. S3 - verify your storage backend to judge exposure.

Exploit ScenarioDerived

A user with a low-privilege Ghost Contributor account uploads an SVG containing an embedded <script> tag, either as a media thumbnail or as a file with a non-SVG extension (e.g. .png) and an image/svg+xml content type, bypassing sanitization. When an Administrator later previews that media in the Ghost admin, the script executes on the site's own domain in the admin's authenticated context and can hijack the admin session. No public proof-of-concept is identified in the provided data, and exploitation requires both an existing staff account and victim interaction.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% 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 (4.22.0 through 6.64.x) allows any authenticated staff account - including the lowest-trust Contributor role - to upload unsanitized SVG media that is then served from the site's own domain, potentially compromising the admin sessions of other staff users who view it. Two upload paths are affected: SVG files supplied as video/media thumbnails, and files carrying a non-SVG extension (e.g. .png) alongside an image/svg+xml Content-Type, which the pre-patch allowlist validated only by extension. The vendor rates this 7.3, there is no CISA KEV entry and no public exploit code identified at time of analysis, and exploitation requires a higher-privileged user to actually view the malicious media (UI:R); the extension-spoofing path additionally depends on a storage adapter that serves files by content type (e.g. Amazon S3), so exposure varies by backend configuration.

RemediationAI

Upgrade to Ghost 6.65.0 or later - the vendor-released patch is the definitive fix, applying the isSvgFile() allowlist to both upload paths and sanitizing SVG thumbnails (advisory: https://github.com/TryGhost/Ghost/security/advisories/GHSA-8575-cr6v-7jh4; fix commit: https://github.com/TryGhost/Ghost/commit/80686226d23df56749f6b7ebb484850a8eba8072). If immediate upgrade is not possible, the highest-leverage compensating control is restricting who can upload media: revoke or do not provision untrusted Contributor/Author accounts, since PR:L means any staff account is sufficient, and instances without such accounts are effectively not exposed - the trade-off is reduced editorial flexibility and does not protect against a compromised legitimate account. Additionally, either disable SVG uploads entirely (site admins can reject .svg/.svgz media and thumbnails) or, where S3 or another content-type-driven adapter is in use, reconfigure that adapter to serve uploaded media with Content-Disposition: attachment or a non-executable content type for untrusted files, which neutralizes the extension-spoofing path at the cost of embedding flexibility. Because exploitation requires a higher-privileged user to view the crafted media (UI:R), instructing admins to avoid opening untrusted media in the admin UI is a short-term friction-heavy stopgap only, not a substitute for patching. After upgrading, review existing uploads for previously stored malicious SVGs served from the site domain.

Affected VersionsENISA

Ghost 4.22.0, < 6.65.0

Affected Packages

npm ghost fix: 6.65.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

The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation / cross-site scripting) in Ghost's media upload pipeline, specifically ghost/core/core/server/web/api/middleware/upload.js. Ghost stored SVG media thumbnails and SVG images uploaded with a non-SVG extension without running them through the SVG sanitizer. The vulnerable design allowlisted file extension and content type as separate signals: the SVG check tested only req.file.ext = '.svg' || req.file.ext = '.svgz', so a file named, for example, svg-content.png with Content-Type image/svg+xml bypassed sanitization entirely. Storage adapters that key off the stored content type - S3 being the clearest example from the fix rationale - would then serve that file back as image/svg+xml, causing the browser to parse and execute embedded script inside the site's origin. Because the payload is hosted on the Ghost domain itself, any authenticated staff member who opens the media in the admin UI loads attacker-controlled script in that origin, enabling session/token theft against higher-privileged users. The upstream commit 80686226d23df56749f6b7ebb484850a8eba8072 introduces an isSvgFile() helper (ext = '.svg' || ext = '.svgz' || type === 'image/svg+xml'), applies it to both the single-file and thumbnail validation paths, and adds explicit sanitization of SVG thumbnails that rejects invalid SVGs with a 415 UnsupportedMediaTypeError ('Please select a valid SVG image'). Note that Ghost is a Node.js application, so the injected script is executed by the victim's browser, not by Node itself; the server-side impact is limited to storing and serving the malicious asset.

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

Upload is network-reachable and low-complexity but needs an existing Contributor account (PR:L) and a victim admin to view the media (UI:R); session hijack yields C:H/I:H, A:N, scope unchanged within one app authority.

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:P/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:05 cve.org
HIGH 7.3

DescriptionCVE.org

Ghost is a Node.js content management system. From 4.22.0 until 6.65.0, SVG media thumbnails and SVG images uploaded with a non-SVG file extension were stored without sanitization. This allowed any staff user, including Contributors, 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.65.0.

Technical POC Analysis

CWE-79 (Improper Neutralization of Input During Web Page Generation) - stored XSS, with CWE-434 (Unrestricted Upload of File with Dangerous Type) also assigned in the advisory.

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 4.22.0 through 6.64.x contain a stored cross-site scripting flaw that allows even the lowest-trust Contributor account to plant malicious media on the organization's own publishing domain, where it is then served to colleagues, including administrators. Because the payload runs in the context of the trusted CMS domain, a successful attack could hand an intruder control of an administrator's session and, through it, the site's content, user accounts, and connected integrations. No vendor patch is currently available, so the organization faces an extended window of exposure that must be managed through interim configuration and permission controls rather than remediation.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: revoke or restrict media-upload permissions for Contributor and other low-trust roles; enforce server-side content-type validation and block image/svg+xml uploads at the proxy/WAF rather than relying on file extension; sanitize or re-encode all uploaded SVG media and scan the existing media library for SVG content stored under non-SVG extensions or used as thumbnails; serve user-uploaded media from a separate, cookie-less domain or with Content-Disposition attachment plus a restrictive Content-Security-Policy to prevent script execution in the CMS origin; review storage adapter behavior (e.g. Amazon S3 content-type-based serving) and prefer extension-based delivery; shorten administrator session lifetimes, enforce MFA, and monitor upload audit logs for anomalous low-privilege activity.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Medium
popular open-source Node.js CMS, common but not universally deployed
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium
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.3%
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