Skip to main content

Ghost CMS CVE-2026-105648

| EUVDEUVD-2026-92755 MEDIUM
Incomplete List of Disallowed Inputs (CWE-184)
2026-10-05 GitHub_M GHSA-r7f2-6fj8-6fg2
4.0
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Trigger Webmention from unauthenticated page
  2. Delivery
    Supply internal IP in bypass encoding
  3. Exploit
    Defeat private-range validation filter
  4. Execution
    Ghost issues blind HTTP request to internal host
  5. Impact
    Probe or invoke internal service without reading response

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation completeness
Exploitation Conditions

Requires that Ghost's outbound-request functionality (notably Webmentions) be enabled and reachable such that an unauthenticated actor can cause the server to fetch an attacker-chosen URL, AND that the attacker can express an internal/private destination in a form that slipped past the pre-6.65.0 IP validation - specifically alternate IPv4 encodings (decimal/octal/hex/integer), IPv4-mapped or IPv4-compatible IPv6 addresses, or 6to4/NAT64 (RFC 6052) transition addresses. Exploitation is further gated on 'some network configurations' (per vendor) - the Ghost server must actually have reachable internal hosts (e.g. DNS64/NAT64 deployments or a flat internal network). Key LIMITING factors: the attack is blind (no response data is ever returned to the attacker, per the description), attack complexity is High, and value is confined to request-only side effects and liveness inference rather than data theft.

Impact

This is a genuine but modest-severity server-side request forgery (SSRF) weakness, not a top-tier priority. The provided CVSS:3.1 vector (AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N = 4.0 MEDIUM) is internally consistent with the description: network-reachable and unauthenticated (PR:N), but high complexity (AC:H) because success depends on specific network configurations, and the scope change (S:C) reflects reaching a different security authority (the server's internal network) with only limited confidentiality impact (C:L) and no integrity or availability impact. Critically, the description states a successful attack returns NO response data, making this a 'blind' SSRF - the attacker can cause requests but cannot read responses, which sharply limits data-exfiltration value and aligns with the low CVSS. No EPSS score, no CISA KEV listing, and no public POC were provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The source-code evidence (the request-external.js IP-validation rewrite using ipaddr.js to handle IPv4-mapped, NAT64/RFC6052, 6to4, and alternate-encoding bypasses) confirms the root cause is incomplete deny-listing of private/reserved IP ranges (consistent with CWE-184). Net assessment: a real defense-in-depth fix worth patching on normal cadence, but the blind nature, high attack complexity, and absence of exploitation signals make it a low-to-medium operational priority rather than an emergency.

Exploit ScenarioDerived

An unauthenticated attacker publishes a page containing a Webmention (or similar outbound-request trigger) pointing a target URL at an internal address expressed in a form that bypassed Ghost's private-IP filter - for example an alternate IPv4 encoding, an IPv4-mapped IPv6 address, or a NAT64/DNS64-synthesized address on a network so configured. Ghost's server then issues an HTTP request to that internal host, letting the attacker probe or interact with services behind the firewall. No public exploit code was identified, and because no response data is returned the attacker gains only blind request capability (e.g. port/host liveness inference or triggering side-effecting internal endpoints).

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 – Oct 05, 2026

Server-side request forgery (SSRF) in Ghost CMS versions 6.0.9 through 6.64.x lets an unauthenticated remote attacker induce the server to issue limited HTTP requests to hosts on its internal network. The flaw is blind - no response body is ever returned to the attacker - so the practical value is confined to request-triggered side effects and liveness/timing inference rather than data exfiltration, and exploitation depends on the target deployment actually having reachable internal hosts (e.g. NAT64/DNS64 setups or flat internal networks). The vendor fixed the issue in Ghost 6.65.0; no public exploit code has been identified at time of analysis and the flaw is not listed in CISA KEV, consistent with the assessed CVSS 3.1 score of 4.0 (AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N).

RemediationAI

Vendor-released patch: upgrade to Ghost 6.65.0 (https://github.com/TryGhost/Ghost/releases/tag/v6.65.0), which incorporates the hardened ipaddr.js-based, default-deny address classification from PR https://github.com/TryGhost/Ghost/pull/30917 and commit https://github.com/TryGhost/Ghost/commit/20d3f792bf4a7c349ee56b746a067550d8684ff5; see advisory GHSA-r7f2-6fj8-6fg2. If an immediate upgrade is not possible, the most effective compensating control is to disable or restrict the features that fetch attacker-supplied URLs - notably Webmentions - since the vulnerability is only reachable through Ghost's outbound-request functionality; the trade-off is loss of that integration while it is disabled. In parallel, enforce egress filtering on the Ghost host or container so outbound TCP from the Node.js process can only reach required public endpoints and is denied to RFC 1918, loopback, link-local, CGNAT, unique-local IPv6 (fc00::/7), and IPv6 transition ranges (2002::/16, 64:ff9b::/96), which neutralizes the blind SSRF at the network layer at the cost of requiring a maintained allowlist that must be updated as legitimate integrations change. Running Ghost in a network segment without reachable internal services or metadata endpoints (e.g. 169.254.169.254) further reduces exposure with the trade-off of additional segmentation complexity. Note that no vendor patch status other than 6.65.0 applies: this CVE is not in CISA KEV and no public exploit code has been identified, so these measures are precautionary rather than incident-driven.

Affected VersionsENISA

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

Ghost is a Node.js content management system whose outbound fetch helper (ghost/core/core/server/lib/request-external.js) is responsible for validating that attacker-influenced URLs - most notably Webmention targets - do not resolve to private, loopback, link-local, or otherwise reserved address space. The root cause is CWE-184 (Incomplete List of Disallowed Inputs): the pre-6.65.0 implementation used hand-rolled regular expressions and a WHATWG URL-based normalizer that only recognized a subset of address encodings. It handled dotted-quad IPv4 and two narrow IPv4-mapped IPv6 patterns (::ffff:192.168.0.1 and ::ffff:7f00:1) but missed alternate IPv4 notations that Node's resolver/connector will happily accept (decimal, octal, hexadecimal, and single-integer forms), IPv4-compatible addresses under ::/96 such as ::7f00:1 and ::127.0.0.1, and IPv6 transition prefixes that carry an embedded IPv4 destination: 6to4 (2002::/16, RFC 3056) and NAT64 well-known prefix 64:ff9b::/96 (RFC 6052). By expressing an internal destination through one of these unhandled forms, an unauthenticated actor could slip past the blocklist and cause the Ghost server to open a TCP connection to an internal host. The upstream PR (30917) replaces the manual parsing with ipaddr.js and a fail-closed, default-deny model: any address whose range is not plain 'unicast' is treated as private, unrecognized formats raise and are blocked, and transition prefixes (IPv4-mapped ::ffff:0:0/96, RFC 6145 translated, RFC 6052 NAT64 well-known, and 6to4) are unwrapped to their embedded IPv4 address and classified recursively against the same private-range rules, while the network-specific NAT64 local-use prefix 64:ff9b:1::/48 remains unconditionally blocked. Because the fix is a classification error rather than a memory-safety bug, the impact stays at low confidentiality with no integrity or availability effect.

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

Network-reachable and unauthenticated (AV:N/PR:N), but needs specific bypass encoding and network config (AC:H); reaching the internal network is a scope change (S:C) with only blind limited info (C:L), no integrity/availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 05, 2026 - 21:02 EUVD

DescriptionCVE.org

Ghost is a Node.js content management system. From 6.0.9 until 6.65.0, a validation issue allowed some functionality, such as Webmentions, to be abused by an unauthenticated user to make limited HTTP requests to hosts in the Ghost server's internal network on some network configurations. A successful attack would not result in any response data being returned. This issue is fixed in version 6.65.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Medium
popular open-source Node.js CMS, common but far below WordPress footprint
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 MEDIUM
CISA KEV No
Public POC No
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

20
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +20
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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