CVE-2026-70593
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-70593 is a path traversal vulnerability in Ghost, the Node.js content management system, titled "Theme Upload Path Traversal." It affects Ghost versions from 0.10.0 up to (but not including) 6.54.1, and was disclosed on July 30, 2026, with the GitHub Advisory Database entry published on August 4, 2026. The vulnerability allows a staff-level authenticated user to write files outside the intended uploads directory via a crafted custom theme upload. It carries a CVSS v3.1 base score of 6.6 (Moderate) (Github Advisory, Ghost Advisory).

Technical details

The root cause is improper path validation (CWE-22) in two components: LocalStorageBase.ts, which handles file storage, and storage.js in the themes service, which processes theme names. An attacker can craft a theme archive with a malicious name containing path traversal sequences (e.g., ../../) that, when processed by getUniqueFileName and passed to the file system, resolve to a location outside the designated uploads directory. The fix introduced a regex check (/^[./]*$/) to reject theme names composed solely of path elements, and added a path.resolve-based prefix check in LocalStorageBase to ensure the resolved filename stays within the target directory (Ghost Advisory, Patch Commit).

Impact

Successful exploitation allows a staff user to write arbitrary files to locations outside the uploads directory on the Ghost server, which could be used to overwrite application configuration files, inject malicious scripts, or otherwise alter the behavior of the Ghost installation. The integrity impact is rated High with a changed scope, meaning the effect can extend beyond the Ghost application itself to the underlying server environment. Availability is partially impacted (Low), and there is no direct confidentiality impact. No lateral movement or data exfiltration capability is directly implied, but file write primitives can be leveraged for persistent access or further compromise (Github Advisory).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported as of the advisory date. The vulnerability requires high privileges (staff-level account) and high attack complexity, limiting its practical exploitability. The EPSS score is approximately 0.29% (21st percentile), indicating a low near-term exploitation probability. The NVD SSVC assessment classifies exploitation as "none" and the attack as not automatable. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. The vulnerability was responsibly disclosed by Stephen Sims of Off By One Security (Github Advisory, Ghost Advisory).

Exploitation steps

  1. Obtain Staff Access: Acquire a Ghost staff-level account on a vulnerable instance (Ghost >= 0.10.0, < 6.54.1) through legitimate credentials, phishing, or credential compromise.
  2. Craft Malicious Theme Archive: Create a ZIP archive containing a theme with a name or internal file paths that include path traversal sequences (e.g., ../../config.production.json) to target files outside the uploads directory.
  3. Upload Theme via Admin Panel: Navigate to the Ghost Admin interface (typically /ghost/#/settings/design) and upload the crafted theme ZIP file through the custom theme upload feature.
  4. Trigger File Write: The vulnerable LocalStorageBase.ts and storage.js components process the theme name without adequate sanitization, causing the file to be written to the attacker-controlled path outside the uploads directory.
  5. Achieve Objective: Overwrite sensitive configuration files, inject malicious content into server-side scripts, or plant a web shell to achieve persistent access or further compromise of the installation (Ghost Advisory, Patch Commit).

Indicators of compromise

  • Logs: Ghost application logs showing theme upload requests with names containing ../, ./, or URL-encoded equivalents (%2e%2e%2f); errors referencing BadRequestError: Cannot save to the given filename on patched systems (indicating attempted exploitation).
  • File System: Unexpected files written outside the Ghost content/themes/ or content/images/ directories, particularly in configuration directories or application root; modification timestamps on config.production.json or other config files coinciding with theme upload events.
  • Network: HTTP POST requests to Ghost Admin theme upload endpoints (e.g., /ghost/api/admin/themes/upload) with unusually named or encoded theme archive filenames from staff user sessions.
  • Process: Unexpected file creation events by the Ghost Node.js process in directories outside the content path, detectable via file integrity monitoring tools.

Mitigation and workarounds

The fix is available in Ghost version 6.54.1. Self-hosters using Docker should update to the official Ghost Docker image tagged 6.54.1 or later; Ghost-CLI users should follow the standard CLI update procedure. No configuration-based workaround is documented — upgrading to v6.54.1 is the recommended and only confirmed remediation. Restricting staff-level account access to trusted users reduces the attack surface in the interim (Ghost Advisory, Ghost Release).

Community reactions

The vulnerability was responsibly disclosed by Stephen Sims of Off By One Security, credited in the official Ghost advisory. No significant broader media coverage or notable researcher commentary beyond the advisory itself has been identified. Community reaction has been minimal, consistent with the moderate severity rating and the requirement for privileged access to exploit (Ghost Advisory).

Additional resources


SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-49473HIGH8.8
  • JavaScript logoJavaScript
  • @cedar-policy/authorization-for-expressjs
NoYesAug 13, 2026
CVE-2026-47717HIGH7.5
  • JavaScript logoJavaScript
  • fuxa-server
NoYesAug 12, 2026
CVE-2026-47718MEDIUM5.5
  • JavaScript logoJavaScript
  • fuxa-server
NoYesAug 12, 2026
CVE-2026-73425LOW3.7
  • JavaScript logoJavaScript
  • @astrojs/netlify
NoYesAug 12, 2026
CVE-2026-73427LOW2.1
  • JavaScript logoJavaScript
  • action_text-trix
NoYesAug 12, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management