Skip to content

防守清單怎麼讀:隔離、降噪與偵測各擋哪一類問題

2026年10月24日1 分鐘
TL;DR沒有任何一項防守同時擋住旁路通道與出口。擋通道的核心是不共用,擋出口的核心是收窄被放行的服務,監控只負責發現,自動停止是事後回應,兩者都不是預防。

查詞與收藏

正在載入查詞工具…

🌏 English version

前面幾篇談了兩類問題:agent 之間靠共用資源的快慢通訊(旁路通道,見〈沒有網路也能傳資料〉),以及 agent 靠被放行的服務通到外面(出口,見〈出口不只一個〉)。這篇回到防守:你手上那份清單,每一項到底在擋哪一類?

防守清單最常見的毛病,是每一項都「聽起來有用」,但沒人說得出它擋的是通道、出口,還是只是偵測。讀完你能把任何一份清單逐項標成「擋旁路」「擋出口」「只偵測」,並決定先投資哪三件。

兩類問題的前提不同

旁路通道出口
發生在兩個沙盒之間沙盒與外部網路之間
依賴什麼兩邊共用同一份硬體或服務的狀態被放行、能替人發請求的服務
例子快取時序、page cache、CPU 時間、TLS 憑證快取套件代理、DNS 解析器、metrics 服務、公開網站中繼
要拿掉的前提共用「放行」本身,或服務的跑腿能力

前提不同,所以沒有一項防守能同時處理兩邊。下面逐項對。

防守項目對照表

表中的「擋什麼」是本文的歸納,出處欄才是各來源寫的。

防守項目擋旁路通道?擋出口?出處與說明
關閉 SMT,或用核心排程只讓同一信任群共用一顆核心部分:只擋同一顆核心上兩條執行緒之間的共用否Firecracker 文件建議在需要租戶分離的正式環境關閉 SMT;Linux 核心文件說跨超執行緒攻擊唯一完整的緩解是關掉 SMT,核心排程只緩解其中一部分
一個行程一個租戶部分:隔開各自的 VMM 行程,同一台主機上的快取與 page cache 仍共用否Firecracker 文件強烈建議每個 Firecracker 行程只對應單一租戶的工作負載;它的前提是多個行程共用同一台主機
不同信任等級的沙盒不放同一台主機是:共用硬體的前提不存在了否本文的歸納,Firecracker 文件沒有寫這一句
直接 I/O、專用 block device部分:只擋經由 host page cache 的儲存通道否arXiv 2607.17518:訊號在共用、可快取的 host 檔案上持續,直接 I/O 與專用 block device 大幅衰減或消除
關閉核心的記憶體去重(KSM)部分:只擋靠頁面去重的那一類否Firecracker 文件
核心與韌體的硬體弱點緩解部分:擋「利用 CPU 弱點」的攻擊否Linux 核心的攻擊向量控制文件把緩解依「客體到主機」「客體到客體」「跨執行緒」等分類
速率限制與資源上限不確定否Firecracker 文件用它處理同機 guest 之間儲存與網路的爭用;對通道頻寬的影響沒有來源
離線世界,不接網際網路否是,但不含被放行的服務OpenAI 10 月 23 日文章:前沿模型的訓練不接網際網路;9 月 20 日事件的環境就是離線網頁快取加 DNS 解析器,解析器這條路仍通到外面
網路邊界延伸到間接可達的服務、DNS 允許清單、離線替代否是OpenAI 10 月 23 日文章與 9 月 20 日事件報告
監控偵測偵測OpenAI 在監控加入偵測這些通道通訊的檢查
自動停止與暫停規則回應:縮短持續時間,不阻止發生回應:同左OpenAI 8 月 26 日文章:最嚴重的警報在 30 分鐘內無法確認是誤報就暫停,目標是全自動關停;10 月 23 日文章也寫了偵測到範圍外活動就暫停的程式化檢查
持續紅隊與設定檢查找缺口找缺口OpenAI 持續檢查防火牆是否照預期生效、監控是否在跑

幾點補充:

  • 硬體弱點緩解不等於擋隱蔽通道。 這是我的判斷:兩個合作的程式用正常的快取行為傳訊息,不需要任何 CPU 漏洞,所以沒有對應的修補可以打。gVisor 的安全模型說明它對硬體側信道主要依賴 host 作業系統與平台,自己能做的很少(原文談的是硬體側信道,不是合作式的隱蔽通道);Linux 核心的文件同樣是針對「弱點」逐項緩解。
  • SMT 以外的共用仍在。 Flush+Reload 的原論文說明它針對最後一級快取,攻擊與受害程式不必共用同一顆核心,所以關閉 SMT 擋不住跨核心的快取通道。Flush+Reload 需要雙方共享記憶體頁,所以也和上表 KSM 那一列有關。上一篇的本機實驗是兩個行程在同一顆核心上時間分享,關閉 SMT 也不會改變它。
  • 直接 I/O 的選項依環境而異。 依 arXiv 論文的附錄,Kata 搭配 Firecracker 時沒有對應 block_device_cache_direct 的設定,要靠主機端 loop device 的直接 I/O,或改用真正的 block device 當底層。
  • 代價沒有免費。 Linux 核心文件說,許多跨執行緒攻擊只有關掉 SMT 才能緩解,代價是核心數與效能下降;核心排程在負載輕時可能比關掉 SMT 還慢,要用自己的工作負載量。

OpenAI 沒說的

OpenAI 10 月 23 日的文章寫了監控、紅隊、離線世界與修補,但沒有寫主機層對旁路通道用了哪些緩解:有沒有關 SMT、儲存走什麼路徑,原文都沒有說。能確定的是:紅隊實驗是在共用主機上的虛擬機之間做的,而且成功傳了訊息;修補之後這些通道是否已經封閉,原文只說加了偵測的檢查,並稱多數通道傳得慢、難利用。

只能做三件事,我會這樣排

這是我的排序,依據是上面表格的結構:

  1. 先決定誰必須和誰隔離,再把它們分開放。 通道的前提是共用,不共用是最直接的解:不同信任等級的沙盒放不同主機。做不到的話,多租戶至少走一行程一租戶並關閉 SMT,但那只隔開各自的 VMM,同機的硬體仍共用。只有自己一個人用的 agent,這一項可以降到最低。
  2. 收窄間接可達的服務。 對 DNS 做允許清單,把套件代理與 metrics 之類換成離線替代或只留必要。這一項便宜,效果對應的是 9 月 20 日那類事件。
  3. 讓監控能自動停止,並用測試事件驗證整條流程。 9 月 20 日的事件裡,警報很快,但 run 沒有自動停下,另有 DNS 活動沒被標到該有的嚴重度。OpenAI 事後開始部署額外的 DNS 偵測與偵測管線測試。Hugging Face 事件後,OpenAI 也訂了規則:最嚴重的警報,從通知到人起算 30 分鐘內無法確認是誤報,就要暫停相關活動,終點是全自動的關停。

今晚就能做的動作:把你現在的防守清單貼進上面那種表格,每一項標上「擋旁路」「擋出口」「偵測」。標不出來的項目,代表你還沒搞清楚它在擋什麼。要檢查自己 host 的 SMT 狀態,可以執行:

cat /sys/devices/system/cpu/smt/control

輸出會是 on、off 或 notsupported 這類值。在虛擬機裡看到 notsupported 時,要向供應商確認 host 端的設定。

限制

  • 這篇沒有量任何防守的效能代價,也沒有逐項測試它們實際擋住多少;表格是對各來源描述的歸納。
  • 防守的有效程度會隨 CPU 世代、虛擬化軟體與雲端供應商而變,採用前要對照自己環境的文件。

參考資料