Ghost: Stored XSS via Bookmark Card Images
### Impact When creating a bookmark card, Ghost could store non-image files fetched from an external website as bookmark icons or thumbnails. This allowed any staff user, including Contributors, to host arbitrary HTML on the site's domain, possibly resulting in compromise of other staff users' admin sessions. ### Vulnerable versions This vulnerability is present in Ghost from v5.94.0 up to v6.64.0. ### Patches v6.64.0 contains a fix for this issue. ### How to update For self-hosters using Docker, find [Docker's official Ghost image here](https://hub.docker.com/_/ghost). Updating a Docker-based Ghost instance [is documented here](https://docs.ghost.org/install/docker#updating-ghost). If your Ghost is a Ghost-CLI install see our documentation on [updating it to the latest version here](https://docs.ghost.org/update). ### References Ghost thanks [Thai Son Dinh](https://github.com/sondt99) of VinSOC Labs and [白墨](https://github.com/5255fgh) for disclosing this vulnerability responsibly. ### For more information If you have any questions or comments about this advisory, email us at [security@ghost.org](mailto:security@ghost.org).
- Products
- ghost
- Affected versions
- Not specified
- Fixed versions
- 6.64.0
- CVEs
- CVE-2026-104413, CVE-2026-105651
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 09:02 UTC · Revision 1
Source evidence
### Impact When creating a bookmark card, Ghost could store non-image files fetched from an external website as bookmark icons or thumbnails. This allowed any staff user, including Contributors, to host arbitrary HTML on the site's domain, possibly resulting in compromise of other staff users' admin sessions. ### Vulnerable versions This vulnerability is present in Ghost from v5.94.0 up to v6.64.0. ### Patches v6.64.0 contains a fix for this issue. ### How to update For self-hosters using Docker, find [Docker's official Ghost image here](https://hub.docker.com/_/ghost). Updating a Docker-based Ghost instance [is documented here](https://docs.ghost.org/install/docker#updating-ghost). If your Ghost is a Ghost-CLI install see our documentation on [updating it to the latest version here](https://docs.ghost.org/update). ### References Ghost thanks [Thai Son Dinh](https://github.com/sondt99) of VinSOC Labs and [白墨](https://github.com/5255fgh) for disclosing this vulnerability responsibly. ### For more information If you have any questions or comments about this advisory, email us at [security@ghost.org](mailto:security@ghost.org).
osv:GHSA-347q-26qq-h2p6
ghost
Fixed versions: 6.64.0
Complete source record
{
"id": "f7a2d4d7b647923a21227c6d1838dd5bc9b90fe4f1001c011497de6adb6a6d6b",
"url": "https://osv.dev/vulnerability/GHSA-347q-26qq-h2p6",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Ghost: Stored XSS via Bookmark Card Images",
"summary": "### Impact When creating a bookmark card, Ghost could store non-image files fetched from an external website as bookmark icons or thumbnails. This allowed any staff user, including Contributors, to host arbitrary HTML on the site's domain, possibly resulting in compromise of other staff users' admin sessions. ### Vulnerable versions This vulnerability is present in Ghost from v5.94.0 up to v6.64.0. ### Patches v6.64.0 contains a fix for this issue. ### How to update For self-hosters using Docker, find [Docker's official Ghost image here](https://hub.docker.com/_/ghost). Updating a Docker-based Ghost instance [is documented here](https://docs.ghost.org/install/docker#updating-ghost). If your Ghost is a Ghost-CLI install see our documentation on [updating it to the latest version here](https://docs.ghost.org/update). ### References Ghost thanks [Thai Son Dinh](https://github.com/sondt99) of VinSOC Labs and [白墨](https://github.com/5255fgh) for disclosing this vulnerability responsibly. ### For more information If you have any questions or comments about this advisory, email us at [security@ghost.org](mailto:security@ghost.org).",
"evidence": "osv:GHSA-347q-26qq-h2p6",
"products": [
{
"name": {
"value": "ghost",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "6.64.0",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "GHSA-347q-26qq-h2p6",
"aliases": [
"BIT-ghost-2026-104413",
"BIT-ghost-2026-105651",
"CVE-2026-104413",
"CVE-2026-105651",
"GHSA-347q-26qq-h2p6"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "5.94.0"
},
{
"fixed": "6.64.0"
}
]
}
],
"package": {
"name": "ghost",
"purl": "pkg:npm/ghost",
"ecosystem": "npm"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-347q-26qq-h2p6/GHSA-347q-26qq-h2p6.json"
}
}
],
"modified": "2026-10-13T08:26:11.116541794Z",
"provider": "osv",
"references": [
"https://github.com/TryGhost/Ghost/security/advisories/GHSA-347q-26qq-h2p6",
"https://nvd.nist.gov/vuln/detail/CVE-2026-105651",
"https://github.com/TryGhost/Ghost/issues/30761",
"https://github.com/TryGhost/Ghost/pull/30761",
"https://github.com/TryGhost/Ghost/commit/b41fe3f2c399cef058e6b487782a0b2263e86c03",
"https://github.com/TryGhost/Ghost",
"https://github.com/TryGhost/Ghost/releases/tag/v6.64.0"
],
"provider_metadata": {
"cwe_ids": [
"CWE-434",
"CWE-79"
],
"severity": "HIGH",
"github_reviewed": true,
"nvd_published_at": "2026-10-05T20:17:14Z",
"github_reviewed_at": "2026-10-07T20:27:41Z"
}
},
"related_cves": [
{
"value": "CVE-2026-104413",
"evidence": "/aliases"
},
{
"value": "CVE-2026-105651",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 307514,
"published_at": "2026-10-07T20:27:41+00:00"
}