Skip to main content

Ghost CMS CVE-2026-70588

| EUVDEUVD-2026-52928 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-04 GitHub_M GHSA-2gx6-7gx2-wwcf
5.0
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain or compromise Ghost admin credentials
  2. Delivery
    Craft malicious import JSON with XSS payload in feature_image_caption or link card URL
  3. Exploit
    Upload via Universal Import in Ghost Admin
  4. Execution
    Payload stored unsanitized in database
  5. Persist
    Victim admin or site visitor loads affected post or history modal
  6. Impact
    XSS executes in victim browser context

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 Ghost administrator-level credentials (CVSS PR:H) and access to the Universal Import feature within Ghost Admin, which is enabled by default in the admin UI. The attacker must supply a crafted import payload containing XSS in the feature_image_caption field or a javascript: URI or attribute-injecting string within bookmark or link card url fields - these are specific fields in Ghost's JSON import format. Exploitation is bounded by the high-privilege requirement: unauthenticated users, registered members, and non-admin staff cannot access the Universal Import feature and cannot trigger this vulnerability. High attack complexity (CVSS AC:H) indicates that crafting a functional exploit requires specific knowledge of Ghost's import schema and the rendering pipeline. Victim interaction may be required for the XSS to execute in a user browser context, though the exact rendering path (admin modal vs. public post) determines whether a secondary victim must load the page.

Impact

The provided CVSS 3.1 vector (AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:L, score 5.0) reflects a moderate-severity finding requiring administrator privileges and high attack complexity. The PR:H constraint is the dominant risk limiter - an attacker must already hold or compromise a Ghost admin account, making this a near-insider-level threat. The UI:N assignment is atypical for stored XSS, which conventionally requires a victim to load the affected page (UI:R); the vector may reflect a rendering path where the admin panel surfaces the XSS on page load without explicit user action, but this warrants vendor clarification. No EPSS data was provided, so exploitation probability cannot be quantified against the broader threat population. KEV status is not confirmed and no public POC exists, making this a low-urgency issue for most organizations. The most realistic threat model is a malicious admin or a supply-chain-compromised admin session using the import feature to embed persistent XSS in published post content, affecting public site visitors - but this requires the attacker to have already achieved high-privilege access, significantly dampening real-world risk beyond the raw CVSS integrity score.

Exploit ScenarioDerived

An attacker who holds or has compromised a Ghost administrator account crafts a Ghost export JSON file containing XSS payloads in the feature_image_caption field or in bookmark card link URLs, then imports it via the Universal Import feature in Ghost Admin. The unsanitized content is stored in the database and subsequently rendered - either in the post history modal visible to other admins or in published post HTML served to public site visitors - executing arbitrary JavaScript in the victim's browser session. No public proof-of-concept exploit is known at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 – Aug 04, 2026

Cross-site scripting in Ghost CMS (versions 5.26.0 through 6.54.0) allows a high-privileged administrator to plant arbitrary JavaScript via the Universal Import feature, which fails to sanitize the feature_image_caption field and link card URLs before storing and rendering them. The fix in v6.54.1 introduces DOMPurify sanitization across both the Ember-based admin post history modal and the Node.js frontend rendering pipeline, alongside a strict URL protocol allowlist in the JSON-to-HTML importer. No active exploitation is confirmed (not in CISA KEV) and no public proof-of-concept is known; the high-privilege prerequisite substantially limits the realistic attacker pool.

RemediationAI

Upgrade Ghost to v6.54.1 or later - this is the vendor-released patch confirmed by GHSA-2gx6-7gx2-wwcf and the GitHub release tag. Docker-based deployments should update the official Ghost image (https://hub.docker.com/_/ghost) following Ghost's Docker update guide at https://docs.ghost.org/install/docker#updating-ghost; Ghost-CLI installations should follow the update procedure at https://docs.ghost.org/update. If immediate upgrade is not feasible, the vendor advisory explicitly recommends disabling use of the Universal Import feature as the sole workaround - this eliminates the attack vector entirely but prevents content migration workflows that depend on bulk import. No other compensating controls are documented by the vendor, and no network-layer mitigation can substitute for sanitizing stored content already imported before patching.

Affected VersionsENISA

Ghost 5.26.0, < 6.54.1

Affected Packages

npm ghost fix: 6.54.1

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 an open-source Node.js CMS distributed as the npm package ghost (CPE: cpe:2.3:a:tryghost:ghost:*:*:*:*:*:*:*:*). The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation - Cross-Site Scripting) manifesting in two code paths: (1) the Ember-based Ghost Admin's post history modal (modal-post-history.js) rendered the feature_image_caption revision field without HTML sanitization, and (2) the frontend proxy service (proxy.js) wrapped the same field in a SafeString - bypassing Handlebars auto-escaping - without prior sanitization. A third path in json-to-html.js (the Universal Import JSON-to-HTML converter) failed to validate link card href URLs, permitting javascript: URIs and attribute injection. The patch adds DOMPurify server-side (via jsdom) with an allowlist restricted to tags a, b, i, span and attributes href, style, explicitly blocking data-* and aria-* attributes. URL validation was hardened with a getValidURL helper that enforces http: or https: protocols and uses a serializer to escape attribute values.

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 5.0 MEDIUM
AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:L
vuln.today AI 4.0 MEDIUM

XSS requires a victim to render affected content (UI:R) and crosses the admin-to-browser security boundary (S:C); admin credentials are mandatory (PR:H); no availability impact applies.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Aug 04, 2026 - 22:02 EUVD

DescriptionCVE.org

Ghost is a Node.js content management system. From 5.26.0 until 6.54.1, the Universal Import feature in Ghost Admin failed to properly sanitize imported content resulting in XSS in post content. This issue is fixed in version 6.54.1.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Medium
popular open-source Node.js CMS with substantial self-hosted deployments
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +25
PoC: +20
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