ChatGPT 分享連結可在登入 session 執行腳本:私人對話被讀,賞金 US$5,000
2026 年 10 月 28 日,Parameter Labs 公開一條漏洞鏈:任何普通帳號發出的 ChatGPT 公開分享連結(/share/<id>),只要收件人已在瀏覽器登入 chatgpt.com,連結內容就可在該 session 內執行攻擊者指定的 JavaScript,並以受害者身分呼叫後端 API。OpenAI 已於 10 月 26 日修復(Parameter Labs,2026-10-28)。

一條公開連結,為何能在登入 session 內執行腳本
關鍵是執行位置,不是連結本身。對話文字沒有被當成 HTML 渲染,注入點是頁面上另一個看似無關的功能:一個可互動的數學圖表令主頁面載入 MathLive 排版函式庫,而同一段對話內助手輸出的 HTML 區塊,由 Preview 在獨立來源的沙箱框架渲染(Parameter Labs,2026-10-28)。攻擊者只需一個能發布公開分享的正常帳號。
機制拆解(一):MathLive 留在主頁面的監聽器
沙箱沒有被攻破,Preview 內的程式碼讀不到 parent.document。問題在沙箱之外:載入 MathLive 時,主頁面註冊了處理虛擬鍵盤協議的 message 監聽器,來源政策設為 none,接受任何來源的訊息,也沒有要求 update-setting 必須來自先前已認可的視窗(Parameter Labs,2026-10-28)。沙箱因此可向頂層頁面送出兩個 postMessage,帶入鍵盤版面;markup 欄位接受原始 HTML,MathLive 拼成字串後指派給 innerHTML;createHTML 只是 Trusted Types 包裝,原樣放行。
機制拆解(二):srcdoc 繼承 chatgpt.com 的來源
用 innerHTML 插入的 script 不會執行,載荷改為插入沒有 sandbox 屬性的 iframe,內容放在 srcdoc。srcdoc 觸發全新文件解析,文件由主頁面建立,因此繼承 https://chatgpt.com 來源,可直接存取父頁面(Parameter Labs,2026-10-28)。
機制拆解(三):CSP 經 YouTube oEmbed 繞過
CSP 仍攔住行內腳本,但政策允許 www.youtube.com 的 script-src-elem。YouTube 的 oEmbed 端點以 JSONP 式回應,在驗證前就把 callback 反射到開頭,以 ;void 收尾中和後面附加的錯誤物件,同一 URL 於是既是合法指令碼,又送上任意 JavaScript(Parameter Labs,2026-10-28)。載荷經計算:callback 5,533 字元、URL 7,309、script 元素 7,337、srcdoc 標記 7,390。
已證實:讀到從未分享的私人對話
研究者自家兩個帳號間的受控測試有截圖與請求記錄支持:JavaScript 以 chatgpt.com 來源執行;讀取 #client-bootstrap 取得 session token 與 account ID;以 Bearer 權杖與 ChatGPT-Account-ID 標頭呼叫 /backend-api/conversations?limit=20,列出最近 20 段對話,再取出從未分享的一段(Parameter Labs,2026-10-28)。外送是把回應中小片段當圖片請求送出,記錄顯示 source=chatgpt-private-chat-v3,時間 2026-10-20 01:08:42。

推論:帳號接管是說法,不是示範過的動作
報告標題「我們如何接管 ChatGPT 帳號」是研究者對同源 API 可達範圍的概括:程式碼既以 chatgpt.com 身分執行,能力就「本質上不限於示範所用的對話端點」(Parameter Labs,2026-10-28)。但示範過的只有讀取:沒有密碼或電郵變更、沒有 MFA 操作、沒有付款、沒有建立 API 金鑰。流程圖列出「讀取私人對話與檔案、變更帳號」,正文只證明對話。
token 可在頁面內讀到,實際外送的卻是對話中的小片段,能否異地重放並未示範。準確講法是:公開分享連結可在已登入的瀏覽器內讀取該帳號的私人對話並外送內容;「所有用戶都被接管」不是已證事實,也沒有受影響人數統計。
時序與賞金:10 月 18 日報告,26 日修復,US$5,000

10 月 13 日確認 MathLive 由訊息到 HTML 的路徑可在正式版重現;14 日經正常介面重現整條鏈;16 日確認公開分享可跨帳號傳遞;17 日確認分享頁可自動開啟 Preview;18 日提交報告(Parameter Labs,2026-10-28)。19 日補上私人對話證明;21 日 OpenAI 重現問題,嚴重度由 P2 升至 P1;22 日一個前端修好;23 日 CSP 攔住部分鏈路;26 日兩個前端都拒絕跨框架訊息,賞金合計 US$5,000(The Hacker News,2026-10-31)。Simon Willison 稱「對這個嚴重程度的漏洞來說便宜了一點」(2026-10-31)。
為何沒有 CVE 反而值得注意
截至 2026 年 11 月 1 日,NVD 以 MathLive 與 ChatGPT 查詢均無記錄,OpenAI 未發布公告或 CVSS 向量(NIST NVD,2026-11-01 查詢)。P1 是賞金計畫內部分級,不是 CVSS 分數。
沒有 CVE 不代表問題輕微,而是這類廠商自行修復的網頁漏洞通常只留在賞金記錄裡。防守方因此看不到它:資產清單、軟件物料清單與掃描器都不會出現這一項。上游 MathLive 的 commit cf4eccc 為沙箱模式下的 MessageEvent 加上 origin 屬性,但雙方都沒把該 commit 與本報告連結(GitHub arnog/mathlive)。
讀者自查清單
以下與本次修補無關(修補已在伺服器端完成),而是針對同類手法:
- 不要打開來源不明的 /share/ 連結,尤其是聲稱示範「隱藏功能」的分享。
- 分享前檢視內容,確認沒有內部連結、客戶名稱或個人資料。
- 定期查看分享記錄,撤銷不再需要的公開連結。
- 企業 workspace 應限制公開分享,敏感工作改用獨立瀏覽器設定檔。
常見問題
打開過別人的分享連結,需要改密碼嗎?
不需要。修補在伺服器端完成,亦無證據顯示憑證外洩;token 雖可在頁面內讀取,但示範中的外送只含對話片段。
是否所有 ChatGPT 用戶都受影響?
沒有這個說法。條件是已登入並打開內含特定 HTML 區塊的公開分享連結;研究者做的是自家帳號間的受控測試。
這是對話內容的 XSS 嗎?
不是。對話文字沒有被當成 HTML 渲染,注入點是主頁面的 MathLive 監聽器,腳本由沒有 sandbox、繼承主站來源的 srcdoc 框架執行。
為何有 P1 卻沒有 CVE?
P1 是 OpenAI 賞金計畫內部分級,CVE 須由廠商或協調機構申請。OpenAI 未發布公告,NVD 亦無記錄,也不應借用其他 MathLive 漏洞的編號。
分享連結的便利,來自它把你的登入狀態一併帶上。你會先看清內容才按下打開,還是見到「AI 隱藏功能」就直接點?
分類:AI
標籤:ChatGPT · OpenAI · 資訊安全 · 漏洞披露 · Parameter Labs · 賞金計畫 · 網頁安全





