Ghost 書籤卡片圖片處理函式庫漏洞,任何 staff 帳號可遠端執行指令
GitHub Advisory Database(TryGhost/Ghost) · 2026-10-07
Ghost 內建的圖片處理函式庫在解析 SVG 時有缺陷,使得「建立書籤卡片」這個本來只會抓網頁預覽的編輯功能,變成能在伺服器上執行任意指令的入口。編號為 CVE-2026-105642(GHSA-788w-68h3-cvxp),嚴重度 high,CVSS 3.1 分數 8.8,影響 Ghost v6.56.0 到 v6.65.0,修補版為 v6.67.0。
漏洞機制
書籤卡片(bookmark card)是 Ghost 編輯器裡的一種區塊:貼上一個網址,Ghost 會到該網站抓標題、描述與預覽圖,存成卡片。抓回來的圖片由 Ghost 伺服器端處理,這一步用到的是隨 Ghost 一起打包的圖片處理函式庫。
公告指出,這個函式庫在 SVG 處理上有漏洞。攻擊者只要自己架一個網站,讓它回傳惡意構造的圖片,再用任何 staff 帳號對這個網址建立書籤卡片,Ghost 就會去抓並處理那張圖,結果是伺服器上的任意指令被執行。公告歸類的弱點為 CWE-94(程式碼注入)與 CWE-1395(依賴有漏洞的第三方元件)。
公告沒有點名是哪一個函式庫,也沒有說明 SVG 內的哪個機制被利用,這些資訊在公告原文中未提供。因此本文無法說明具體的 payload 形式。
原本的問題
這類漏洞的麻煩在於攻擊面不在 Ghost 自己的程式碼。Ghost 對書籤網址做的是「伺服器去抓外部內容」,這件事本身就是一個信任邊界:外部內容完全由對方控制。只要處理外部內容的元件有解析漏洞,Ghost 的權限檢查再嚴謹也擋不住,因為觸發動作(建立書籤卡片)對 staff 而言是正常功能。
這也解釋了為什麼公告特別強調「包括 Contributor」。Contributor 是 Ghost 權限最低的 staff 角色之一,公告原文是「Any staff user, including Contributors」,也就是說不需要 Editor 或 Admin 權限就能觸發。
受影響版本
| 項目 | 內容 |
|---|---|
| 套件 | npm ghost |
| 受影響範圍 | >= 6.56.0, < 6.67.0 |
| 首個修補版本 | 6.67.0 |
| CVSS 3.1 | 8.8(AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) |
有一個細節值得注意。公告內文寫「present in Ghost from v6.56.0 up to v6.65.0」,但機器可讀的版本範圍是 < 6.67.0,中間的 v6.66.x 在內文裡沒有交代。保守做法是把所有低於 6.67.0 的版本都當成受影響,不要依內文上限判斷自己是否安全。
另外,CVSS 向量裡的 PR:N(不需要權限)和公告內文「需要 staff 帳號」並不一致,公告沒有解釋這個差異。評估風險時,建議以內文的前提為準:攻擊者要先取得 staff 帳號,或你的站台開放了 staff 註冊或邀請。
影響範圍
- 自架 Ghost 的站長:不論用 Docker 官方映像還是 Ghost-CLI 安裝,只要版本落在上述範圍都該升級。
- 多人協作的站台:作者、外部投稿者、承包商若持有 staff 帳號,每個帳號都等於一個可觸發點。帳號被盜(密碼重複使用、未開 2FA)的風險同樣會被放大成伺服器被控。
- Ghost 跑在有內網或雲端憑證的環境:指令執行發生在 Ghost 行程的權限下,環境變數中的資料庫密碼、郵件服務金鑰、雲端憑證都可能被讀取。公告沒有討論後續橫向移動,這是依一般 RCE 性質的推論,不是公告的結論。
公告沒有提到 Ghost 官方託管服務是否受影響,也沒有說明是否已有在野利用,這兩點在公告原文中未說明。NVD 記錄的發布時間為 2026-10-05,GitHub 公告頁的發布時間為 2026-10-07。
修補與緩解
修補方式是升級到 v6.67.0 或更新版本。公告給出的升級入口有兩條:Docker 使用者參考官方映像與其更新文件,Ghost-CLI 安裝則依官方更新說明操作。
# Ghost-CLI 安裝
ghost version # 確認目前版本
ghost update # 升級到最新版
# Docker 安裝
docker pull ghost:latest # 或指定 6.67.0 以上的 tag公告沒有提供不升級的緩解辦法(例如設定開關或停用書籤功能)。如果暫時無法升級,能做的是推論性的風險控管:先盤點並停用不必要的 staff 帳號、確認所有 staff 帳號都有強密碼與 2FA,並暫停對外開放的投稿或邀請流程。這些措施只是降低被觸發的機率,不能取代升級。
發現者為 Rafael B.,公告列為 reporter,並感謝其負責任揭露。
原始來源:GitHub Advisory GHSA-788w-68h3-cvxp、TryGhost/Ghost Security Advisory、NVD CVE-2026-105642