Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege Contributor staff account
-
DeliveryUpload SVG with embedded script payload
-
ExploitFile stored unsanitized on site domain
-
ExecutionAdministrator views the media
-
PersistPayload executes in admin session
-
ImpactHijack 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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.
Articles & Coverage 2
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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
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
Arbitrary code execution in Ghost CMS versions 0.7.2 through 6.19.0 allows authenticated attackers with theme upload pri
An arbitrary file upload vulnerability in the file upload module of Ghost CMS v4.42.0 allows attackers to execute arbitr
An arbitrary file upload vulnerability in the file upload module of Ghost v4.39.0 allows attackers to execute arbitrary
SQL injection in Ghost CMS versions 3.24.0 through 6.19.0 allows unauthenticated attackers to read arbitrary database da
Ghost through 5.85.1 allows remote attackers to bypass an authentication rate-limit protection mechanism by using many X
Ghost through 5.76.0 allows stored XSS, and resultant privilege escalation in which a contributor can take over any acco
Ghost before 5.82.0 allows CSV Injection during a member CSV export. Rated high severity (CVSS 8.8), this vulnerability
Server-side request forgery (SSRF) vulnerability in Ghost CMS < 3.10.0 allows an attacker to scan local or external netw
Ghost before 5.42.1 allows remote attackers to read arbitrary files within the active theme's folder via /assets/built%2
Ghost is a Node.js CMS. Rated medium severity (CVSS 6.8), this vulnerability is remotely exploitable, no authentication
Ghost is an open source content management system. Rated medium severity (CVSS 6.5), this vulnerability is remotely expl
EUVD-2026-92756
GHSA-8575-cr6v-7jh4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB