Skip to main content

Ghost CMS CVE-2026-105650

| EUVDEUVD-2026-92760 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-05 GitHub_M GHSA-v3xr-g6p2-fvgv
8.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Host malicious oEmbed endpoint on attacker site
  2. Delivery
    Lure staff user to embed the URL
  3. Exploit
    Server stores attacker html in post Lexical payload
  4. Execution
    Script runs in editor, site, and newsletter
  5. Impact
    Hijack 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.

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 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

Ghost 2.5.0, < 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 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

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

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).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
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:07 cve.org
HIGH 8.1

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Medium
popular self-hosted Node.js CMS, common for publications but far below WordPress scale
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

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
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