跳到主要內容
AI News HubLIVE
站內改寫2 分鐘閱讀

Parameter Labs 披露接管 ChatGPT 賬戶的攻擊鏈

文章摘要

Parameter Labs 發現 ChatGPT 的 HTML 預覽(原 Canvas)功能存在複雜攻擊鏈,可導致跨使用者資料洩露或賬戶操作,OpenAI 已修復並支付 5,000 美元賞金。

Parameter Labs 披露接管 ChatGPT 賬戶的攻擊鏈
回報錯誤

更正管道尚未開通,可先複製下方文章資訊留存。

查看更正說明
直接讀正文

Parameter Labs 披露了一條針對 ChatGPT 產物(artifacts)機制的完整攻擊鏈。所謂產物機制,指的是在沙箱 iframe 中展示可互動的自定義 HTML 應用。OpenAI 早期將這一功能稱為 Canvas,而最新版本似乎改名為 HTML 預覽。由於這些 HTML 應用直接執行在 ChatGPT 的主頁面環境中,一旦沙箱隔離不夠嚴密,不受信任的程式碼就可能與 OpenAI 的 API 互動,讀取使用者的私有資料。因此,嚴格的沙箱邊界是這項功能安全性的核心前提。

Parameter Labs 發現的攻擊鏈相當複雜,並非單點漏洞,而是多個看似無害的設計細節串聯起來的結果。第一步,OpenAI 在圖表支援中使用了 MathLive JavaScript 庫,而該庫自帶一個虛擬鍵盤元件。這個鍵盤可以被父頁面中的程式碼觸發,觸發方式正是來自沙箱 iframe 的 postMessage() 訊息。

問題出在接收這條訊息的程式碼:它使用 innerHTML 把收到的內容寫入父頁面,這意味著任何能夠傳送訊息的一方都可以向父頁面注入自定義 HTML。更關鍵的是,當時沒有任何機制阻止其他沙箱幀去呼叫這個方法,包括 HTML 預覽幀本身。於是,iframe 中的不受信任程式碼獲得了向父頁面插入 HTML 的能力。雖然 innerHTML 不會直接執行 script 元素,但攻擊者可以利用它注入一個新的、不帶沙箱限制的 iframe,從而繞過原有的隔離。

接下來要解決的是指令碼執行問題。OpenAI 的內容安全策略(CSP)完全禁止內聯指令碼,並且只允許從少數幾個域名載入指令碼,YouTube 正是其中之一。攻擊者發現,YouTube 的 oEmbed 端點可以被用來反射 JavaScript,並讓其在頁面中執行。這樣,攻擊鏈的最後一塊拼圖也補齊了。

一旦攻擊者在 ChatGPT 頁面上取得 JavaScript 執行許可權,後續操作就變得非常簡單:他們可以呼叫 API 獲取使用者的私有資料,再透過圖片引用將資料外洩。最終效果是,攻擊者可以構造一個 ChatGPT 分享連結,當另一名已登入使用者訪問該連結時,其私有資料就可能被竊取,或者攻擊者能夠以該使用者的名義執行操作。

OpenAI 在收到報告後修復了這個漏洞,並支付了 5,000 美元的漏洞賞金。Simon Willison 認為,對於如此嚴重的安全問題,這個金額略顯偏低。該事件也提醒人們,在整合第三方庫、使用 postMessage 通訊以及配置 CSP 白名單時,任何一處疏忽都可能被組合利用,形成影響使用者賬戶安全的完整攻擊路徑。

展開要點與分析

文章情報

工程師中級

要點

  • 攻擊利用 MathLive 虛擬鍵盤的 postMessage 處理器,該處理器使用 innerHTML 並接受來自沙箱 iframe 的訊息。
  • 透過注入無沙箱 iframe 並藉助 YouTube oEmbed 反射執行 JavaScript,繞過 CSP 限制。
  • 最終可構造惡意共享連結,在已登入使用者訪問時竊取私有資料或代表其執行操作。
  • OpenAI 修復漏洞並支付 5,000 美元賞金,但研究者認為獎勵偏低。

要點與分析由自動化流程生成,可能有誤,請結合原始來源核實。