Severity by source
AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:L
AV:A and AC:H reflect the mandatory prerequisite same-domain vulnerability; UI:R required as victim must log in; PR:N since attacker is unauthenticated; C:H/I:H for full admin session takeover.
Primary rating from Vendor (https://github.com/TryGhost/Ghost).
CVSS VectorVendor: https://github.com/TryGhost/Ghost
Lifecycle Timeline
2DescriptionCVE.org
Impact
Ghost Admin did not invalidate existing sessions on login which could have allowed for session fixation attacks. Successful exploitation would have required another vulnerability on the same domain where Ghost Admin was hosted.
Vulnerable versions
This vulnerability is present in Ghost from v2.2.0 to v6.54.0.
Patches
v6.54.1 contains a fix for this issue.
How to update
For self-hosters using Docker, find Docker's official Ghost image here. Updating a Docker-based Ghost instance is documented here.
If your Ghost is a Ghost-CLI install see our documentation on updating it to the latest version here.
References
Ghost thanks meifukun for disclosing this vulnerability responsibly.
For more information
If you have any questions or comments about this advisory, email Ghost at [security@ghost.org](mailto:security@ghost.org).
AnalysisAI
Session fixation in Ghost Admin (v2.2.0-v6.54.0) allows an attacker who can plant a known session identifier in a victim's browser - via a secondary vulnerability on the same domain - to hijack an authenticated Ghost Admin session after the victim logs in. The root cause is that Ghost Admin's login flow did not call session regeneration, leaving the pre-login session ID valid post-authentication. Exploitation is chained and non-trivial, but the upstream fix (v6.54.1) is confirmed and straightforward to apply. No public exploit code and no CISA KEV listing identified at time of analysis.
Technical ContextAI
Ghost is a Node.js-based CMS distributed as an npm package (pkg:npm/ghost). The vulnerability exists in the session-service middleware at ghost/core/core/server/services/auth/session/session-service.js, which manages express-session lifecycles. CWE-384 (Session Fixation) occurs when an application accepts a user-supplied or pre-existing session token after authentication rather than issuing a fresh one. In Ghost's case, the createSessionForUser function reused the current req.session object without calling req.session.regenerate(), meaning any session ID established before login remained valid - and authenticated - after a successful login event. The fix introduces an explicit regenerate() call, carries forward only necessary non-sensitive session properties (MFA challenge data, prior user_id for verification state logic), and issues a new session ID to the client.
RemediationAI
Upgrade to Ghost v6.54.1 or later, which introduces session regeneration on login via req.session.regenerate() in session-service.js (patch commit 6b1c85c30dd0bacb4d5ffe64fc675ac9342d800c, PR #29634). For Docker-based installs, update using the official Ghost image at https://hub.docker.com/_/ghost following instructions at https://docs.ghost.org/install/docker#updating-ghost. For Ghost-CLI installs, follow https://docs.ghost.org/update. If immediate upgrade is not possible, the most effective compensating control is to ensure Ghost Admin is hosted on an isolated domain with no user-controllable content - this eliminates the prerequisite same-domain vulnerability needed to plant a session ID. Additionally, enforcing strict Content Security Policy and eliminating any XSS vectors on the same origin reduces the attack surface to near zero without requiring the Ghost upgrade, though these measures do not address the root cause.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
Vasion Print (formerly PrinterLogic) Virtual Appliance Host prior to version 25.2.169 and Application prior to version 2
Same weakness CWE-384 – Session Fixation
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-52978
GHSA-7mpp-r37j-x5wh