她把客戶的合約條款、報價和產品企劃都丟進 ChatGPT 整理。今天同業群組有人貼來一則「超好用的 ChatGPT 對話」分享連結,她順手點開。
2026 年 10 月,一個資安研究團隊公開了他們在 ChatGPT 發現的漏洞。攻擊者先做一場惡意對話,再用 ChatGPT 正常的分享功能公開,最後把連結寄給受害者。受害者一點開,攻擊者的 JavaScript網頁裡負責讓畫面動起來、能主動做事的程式語言 就會以 chatgpt.com 的身分,跑在受害者「已登入」的狀態裡。
這不只是讓畫面彈出一個警告視窗。研究團隊證實,這段程式碼能列出受害者的對話清單,讀到從未分享給攻擊者的私人對話,還能把內容送到外部伺服器。它甚至能像受害者本人一樣呼叫 ChatGPT 的 API程式之間互相請求資料的正式窗口,網站自己的功能也是靠它運作,研究團隊因此說這等於接管了帳號。受害者不必安裝 App、不必貼程式碼、不必開開發者工具,唯一的動作就是打開連結。
整條攻擊鏈從兩個單獨看都無害的功能開始:一個互動圖表,和一個 HTML Preview(預覽)。ChatGPT 能把 HTML 程式碼區塊變成小網頁,因為這種網頁可能含任意程式碼,所以它被放進 沙盒一個被嚴格限制權限的隔離區,裡面的程式碰不到外面的東西 框架,而且放在另一個網址底下。瀏覽器把它當成「另一個網站」,所以它不能直接讀取外面那層已登入的 ChatGPT 頁面。
問題出在牆上有一個「信箱投遞口」。瀏覽器提供一個叫 postMessage讓兩個互相隔離的網頁框架仍能傳紙條給對方的瀏覽器功能 的機制,被關起來的預覽頁雖然走不進主頁面,卻還是能從投遞口丟訊息進去。這種機制只有在收件方檢查「寄件人是誰」時才安全。圖表載入的數學函式庫 MathLive 在主頁面裝了一個監聽器,而它對研究團隊鎖定的那個設定並沒有做這項檢查。OpenAI 在 10 月 26 日修補了漏洞,並把這份回報列為 P1最高等級之一的嚴重度分類,代表必須優先處理的重大問題。
| 環節 | 設計意圖 | 實際發生 |
|---|---|---|
| 預覽程式碼 | 放進另一個網址的受限框架,碰不到主頁面 | 隔離有效,讀不到 parent.document |
| 圖表函式庫 | 只負責畫圖與提供數學鍵盤 | 同時在主頁面裝了訊息監聽器 |
| 訊息收件 | 只接受可信寄件者的訊息 | 對關鍵設定沒有檢查寄件者 |
| 分享功能 | 讓人分享有趣的對話 | 成為惡意內容送達受害者的管道 |
以下是為了教學而簡化的示意寫法,不是 MathLive 的真實原始碼。它只用來說明「收訊息時有沒有檢查寄件者」的差別。
const TRUSTED = 'https://trusted.example';window.addEventListener('message', (event) => { // 有漏洞的寫法:直接相信訊息內容 if (event.origin !== TRUSTED) return; applySetting(event.data);});