Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessHost malicious oEmbed endpoint on attacker site
-
DeliveryLure staff user to embed the URL
-
ExploitServer stores attacker html in post Lexical payload
-
ExecutionScript runs in editor, site, and newsletter
-
ImpactHijack staff user's admin session
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 an authenticated Ghost staff user (someone able to create/edit posts) to actively embed a URL pointing to an attacker-controlled website; that site must expose a self-declared oEmbed endpoint returning a 'photo', 'rich', or 'video' type response carrying an html field containing script. Affected versions are 2.1.0 through 6.63.x (fixed in 6.64.0). Limiting factors that reduce real-world risk: the required staff-user interaction (UI:R) means the attack cannot be triggered remotely without a victim embedding the malicious link; established providers (YouTube, Twitter, etc.) are unaffected because they pass through @extractus/oembed-extractor's allowlist, so only non-allowlisted, arbitrary endpoints reach the vulnerable path; and impact escalates (to published-site visitors and newsletter recipients) only once the poisoned content is published or sent. |
| Impact | Signals point to a genuine but conditional threat rather than a mass-exploitation emergency. The CVSS 3.1 base score is 8.1 (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N), driven by network reach, low complexity, no attacker privileges, and high confidentiality/integrity impact - but the UI:R metric is decisive: a logged-in Ghost staff user must actively embed an attacker-controlled URL for the stored XSS to land. This is a stored/second-order XSS (CWE-79) whose payload subsequently executes in the admin editor, the public site, and newsletter emails, so a single successful injection can reach many victims, which realistically argues for a scope change the NVD vector does not reflect. No EPSS score, no CISA KEV listing, and no public exploit were provided in the input, so there is no evidence of active or automated exploitation; the GitHub security advisory and fix commit do disclose the mechanism and a representative payload (<img src=x onerror=...>), which lowers the bar for a researcher to reproduce it. SSVC inputs (exploitation status, automatability, technical impact) were not supplied. Net: a real priority for Ghost operators to patch promptly because the impact is admin-session compromise, but the mandatory staff-user interaction and the absence of KEV/EPSS/POC signals make widespread opportunistic exploitation unlikely - this is closer to a targeted social-engineering risk than a wormable internet-facing flaw. |
| Exploit ScenarioDerived | An attacker stands up a website whose self-declared oEmbed endpoint returns a 'photo', 'rich', or 'video' response containing a malicious html field, then persuades a Ghost staff user to embed that URL in a post. When the post is opened in the editor, published to the public site, or sent as a newsletter, the stored script executes in those contexts and can hijack the staff user's admin session. No public exploit was identified, though the upstream fix commit and advisory disclose both the vulnerable code path and a sample onerror payload. |
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 versions 2.1.0 through 6.63.x allows an attacker-controlled website to inject untrusted script into post content through the editor's oEmbed embed feature. A staff user with post-creation rights must first embed a URL pointing at the malicious site, at which point the site's self-declared oEmbed endpoint can return a 'photo', 'rich', or 'video' response containing an attacker-supplied html field; that payload is stored in the post's Lexical content and then executes in the Ghost admin editor, on the published site, and inside newsletter emails, potentially compromising an administrator's session. No public exploit identified at time of analysis, and the issue is fixed in version 6.64.0.
RemediationAI
Vendor-released patch: upgrade to Ghost 6.64.0, which drops 'photo' (alongside the already-rejected 'rich' and 'video') responses from non-allowlisted oEmbed providers; see the release notes at https://github.com/TryGhost/Ghost/releases/tag/v6.64.0, advisory GHSA-v3xr-g6p2-fvgv at https://github.com/TryGhost/Ghost/security/advisories/GHSA-v3xr-g6p2-fvgv, and the upstream code change in PR https://github.com/TryGhost/Ghost/pull/30763 (commit d23d552e257e2696c60293bc5cd7898a49d6bd1f). If immediate upgrade is not possible, restrict the ability to create or edit posts so that only trusted staff can embed external URLs, since the attack requires an authorized user to paste the malicious link (side effect: limits editorial workflow but closes the injection path); instruct staff to avoid embedding oEmbed URLs from unverified domains until patched; where source control or database access is available, review existing Lexical post payloads for embed blocks containing script-bearing html from unexpected domains and remove or re-render them, since stored payloads continue to execute after the patch is applied (side effect: manual content audit effort and potential loss of legitimate embeds); and consider a Content-Security-Policy on the admin interface and public site that forbids inline script execution, which blunts the payload but may break legitimate theme scripts and third-party widgets.
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
Ghost is a Node.js content management system whose editor supports oEmbed, a discovery protocol in which a pasted or embedded URL is resolved against a provider's advertised oEmbed endpoint and the returned JSON (version, type, html, url, dimensions) is transformed into rich embed content. Ghost's oembed-service.js routed known providers such as YouTube and Twitter through @extractus/oembed-extractor, which enforces an allowlist, but arbitrary, non-allowlisted sites reaching the generic path had their responses trusted. Although Ghost previously rejected 'rich' and 'video' responses from unknown providers, the 'photo' type was still accepted and could carry an html field, whose contents are rendered via innerHTML in public themes and newsletters and via srcdoc in the admin editor preview. The stored provider HTML therefore becomes an execution vector for a CWE-79 cross-site scripting flaw. The upstream fix (PR #30763, commit d23d552e257e2696c60293bc5cd7898a49d6bd1f) extends the rejection to include 'photo' responses, so any non-allowlisted response of type video, rich, or photo is dropped and the caller falls back to a plain bookmark card.
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:N/UI:R/S:U/C:H/I:H/A:N
Network-reachable with no attacker privileges but requires a staff user to embed the URL (UI:R); stored script executes in other users' sessions (S:C), yielding admin session/content compromise (C:H/I:H, A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Ghost is a Node.js content management system. From 2.1.0 until 6.64.0, embedding a URL from an attacker-controlled website could result in untrusted scripts being stored in post content. These scripts could run in the Ghost editor, on the published site, and in newsletter emails, possibly resulting in compromise of a staff user's admin session. This issue is fixed in version 6.64.0.
Articles & Coverage 2
Technical POC Analysis
CWE-79 (Improper Neutralization of Input During Web Page Generation), stored variant, with the advisory additionally assigning CWE-184 (Incomplete List of Disallowed Inputs).
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 2.1.0 through 6.63.x are affected by a stored cross-site scripting vulnerability (CVE-2026-105650) that can be triggered when a staff user embeds a URL from an attacker-controlled site, potentially allowing compromise of administrator sessions and injection of malicious content into published pages and newsletters. This affects organizations using Ghost CMS for content management and newsletter distribution, putting admin accounts, subscriber trust, and site integrity at risk. No public exploit identified at time of analysis, but the high severity and potential for administrative account takeover warrant immediate remediation.
Apply vendor patch.
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-92760
GHSA-v3xr-g6p2-fvgv
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB