沙盒隔離失效與 MathLive 函式庫的攻擊入口
ChatGPT 先前稱為 Canvas、現更名為 HTML 預覽的功能,會在一個受嚴格沙盒限制的 iframe 中顯示互動式自訂 HTML 應用程式。這種隔離機制旨在防止未經信任的程式碼與 OpenAI API 互動並存取隱私資料。
Parameter Labs 發現,OpenAI 在圖表支援功能中使用 MathLive JavaScript 函式庫,該函式庫包含一個虛擬鍵盤功能,可透過 postMessage() 從沙盒化的 iframe 觸發父頁面中的動作。
透過 innerHTML 注入無限制框架繞過 CSP
接收訊息的程式碼使用 innerHTML,這意味著任何發送訊息的來源都能向父頁面添加自訂 HTML。當時缺乏機制防止其他沙盒化框架(包括 HTML 預覽框架)呼叫該方法。
雖然 innerHTML 不會直接執行 script 元素,但攻擊者利用此特性注入了一個沒有沙盒限制的新 iframe。OpenAI 的內容安全政策 (CSP) 完全禁止內嵌腳本,僅允許從少數幾個網域載入腳本,其中包含 YouTube。
攻擊者利用 YouTube 的 oEmbed 端點將 JavaScript 反射回來並執行,從而成功在 ChatGPT 環境中取得 JavaScript 執行權限。
隱私資料外洩與修復結果
一旦攻擊鏈成功執行 JavaScript,攻擊者即可透過 API 獲取用戶的隱私資料,並透過圖片引用將這些資料外洩。最終結果是,攻擊者可建立一個 ChatGPT 分享連結,當其他已登入用戶瀏覽該連結時,其隱私資料可能被竊取或代表用戶執行操作。
OpenAI 已關閉此漏洞並支付 5,000 美元的錯誤獎金。Simon Willison 評論認為,對於如此嚴重的漏洞而言,這筆獎金金額偏低。




