網路安全研究人員揭露了針對 Cloudflare Workers 的遠端 Spectre 攻擊細節,該攻擊從生產環境中與之共置的 Worker 竊取了 JSON Web Token (JWT),速率高達每秒 12 位元,比 2021 年展示的早期攻擊快了 360 倍。

該端對端實驗使用了一個攻擊者 Worker 和一個由研究人員控制的受害者 Worker,JWT 被故意放置在受害者的記憶體中。研究論文指出,並未存取任何客戶資料。

Cloudflare 表示,在改進了動態程序隔離 (DyPrIs)、整合了 V8 Sandbox 並部署了基於記憶體保護金鑰 (MPK) 的程序內隔離後,該攻擊已在生產環境中得到緩解,並補充說,在過去三年中未發現活躍利用的跡象。

「我們證明了 DyPrIs 的生產環境實施是不夠的,」研究人員在論文中說。

Cloudflare Workers 在同一作業系統進程內,於獨立的 V8 隔離區中運行多個租戶的程式碼,依賴語言級別的隔離而非嚴格的進程隔離來降低啟動延遲。

根據 Cloudflare 的說法,共享 Worker 進程中的記憶體讀取可能導致跨租戶洩漏。該攻擊要求攻擊者和受害者 Worker 必須共置於同一個 Worker 進程內的獨立 V8 隔離區中。

攻擊者控制著其自身隔離區內的有效程式碼。原生程式碼執行不在威脅模型之內,且該攻擊不依賴於 V8 軟體漏洞或沙箱逃逸。

Cloudflare 表示,Workers 在 CPU 執行期間透過凍結或粗化計時器來限制本地計時來源,並且不向 Worker 腳本暴露共享記憶體或多執行緒。

研究人員發現,WebSocket 通訊可以提供遠端計時來源,而 Durable Objects 可以讓單個 Worker 隔離區保持存活五到二十小時以上。

DyPrIs 在調用完成後將可疑腳本隔離到一個單獨的進程中,而研究人員發現,一個長存的 Durable Object 調用可以在隔離發生之前繼續運行。

研究人員還發現,大量 WebSocket 輸入/輸出 (I/O) 活動增加了指令轉換快取 (iTLB) 活動,從而降低了 DyPrIs 使用的歸一化分支錯誤預測信號,使其低於檢測閾值。

Cloudflare 將此問題描述為其 DyPrIs 實施中的一個限制,而論文則表示這兩個弱點反映了檢測方法的根本限制,而非實施上的疏忽。研究人員表示,穩健的檢測應該在執行期間進行,並使用無法被 I/O 活動壓制的信號。

論文指出,生產環境測試是在 Linux 伺服器上使用 AMD EPYC Zen 2 和 Zen 3 處理器進行的,研究人員故意在夜間進行測量,當時 CPU 利用率在 10% 到 25% 之間,以觀察最佳結果。

研究人員表示,系統負載越高,洩漏速率越低,儘管在負載較高時,較慢的攻擊仍然可行。

論文報告稱,洩漏速率高達每秒 12 位元,準確度為 99.16%,而早期攻擊的速率為每分鐘 2 位元。

此次披露發生在 Cloudflare 和 TU Graz 公佈研究報告近五年後,該報告展示了針對 Workers 的遠端 Spectre 攻擊,速率為每小時 120 位元,並引入了 DyPrIs 作為防禦措施。

早期的論文報告了 0.61% 的誤報率,並得出結論認為,對於當時評估的 Spectre 攻擊,DyPrIs 在統計上提供了與嚴格進程隔離相同的安全保證。

Cloudflare 在 2025 年 9 月發布了額外的 Workers 加固措施。Cloudflare 部署的緩解措施如下所示:

Cloudflare 在 2025 年 9 月的描述中提到,僅隨機分配 MPK 就會攔截約 92% 的跨隔離區訪問,因為兩個隔離區可能獲得相同的金鑰,並且使用更嚴格的輪換佈局來消除針對受保護的沙箱內威脅模型的差距。