io_uring 已經成為谷歌的頭疼問題,他們決定在他們的產品中禁用它

io_uring

io_uring是一個Linux內核系統調用接口,用於存儲設備的異步I/O操作

谷歌最近通過一篇博客文章公佈了它有 決定在 ChromeOS、Android 和服務器上默認禁用 生產, 異步接口 io_uring,這是由於 io_uring 中糟糕的安全狀況。

在分析“漏洞賞金計劃”的結果時 從 2020 年開始實施的 kCTF 來看,該計劃收到的申請中有 60% 都利用了新出現的漏洞,而且這種情況並沒有隨著時間的推移而改變,這已經成為一個漏洞點,這非常令人擔憂。

總共支付了大約 1 萬美元的賞金。 通過功績 與 io_uring 有關,而在該計劃存在期間為 Linux 內核中的漏洞支付的賞金總額為 1,8 萬美元,其中 42 個漏洞利用尚未修復(最高報酬 - 133 萬美元)。

由於 Linux 內核不僅是谷歌的關鍵組件,也是互聯網的關鍵組件,我們開始在這一領域投入大量資金。 我們在 2021 年擴大了 VRP 範圍和最高獎勵(至 50 美元),然後在 000 年 2022 月再次擴大(至 91 美元),最後在 000 年 2022 月(至 133 美元)。 000 年,我們還在食譜中總結了迄今為止的經驗教訓,並介紹了針對最常見挖礦技術的實驗性緩解措施。

去年, 提高內核安全性 參考環境中使用的 Linux,其中產生了獲得獎項的漏洞, 谷歌應用了額外的調整和補丁來阻止典型的利用方法. 例如在Freelist結構中加入了腐敗保護,禁止對slab越界寫,實現了緩存共享相關的阻斷攻擊等。 但這些變化並沒有影響利用 io_uring 漏洞的能力,這導致谷歌停止在其產品中支持 io_uring。

雖然 io_uring 提供性能優勢並通過全面的安全修復(例如將 5.15 反向移植到 5.10 穩定樹)對安全問題做出快速反應,但它是內核中一個相當新的部分。 因此,io_uring 繼續積極開發,但仍受到嚴重漏洞的影響,並且還提供強大的利用原語。 由於這些原因,我們目前認為它僅對受信任的組件是安全的。

在 ChromeOS 上,編譯內核時禁用 io_uring 支持 (內核配置中的 CONIFG_IO_URING)。 Android 暫時使用基於 seccomp-bpf 的過濾器來阻止對 io_uring 的訪問,併計劃在未來版本中使用 SELinux 選擇性地將對 io_uring 的訪問限制為受信任的系統組件。

因此,谷歌並沒有對 io_uring 接口, 自 5.1 版以來由 Linux 內核提供,因為它提到了它的優點, 因其對 I/O 輪詢的支持以及使用或不使用緩衝的能力而脫穎而出, 但因此它仍然足夠強大,可以繼續承擔風險,最重要的是,繼續投資修復不斷出現的錯誤和漏洞。

通過 io_uring API,內核開發人員試圖解決舊 aio 接口的缺點。

在性能方面 io_uring 非常接近 SPDK,並且明顯優於 libaio 啟用輪詢時。 例如,在 libuv 庫中使用 io_uring 導致性能提高 8 倍,在 XFS 文件系統中包含基於 io_uring 的異步寫入緩衝導致延遲減少 80 倍,數據傳輸增加 2,7 倍速度。

值得一提的是,谷歌正在考慮在 GKE AutoPilot (Google Kubernetes Engine) 中默認禁用 io_uring 的可能性。

最後,如果你有興趣了解更多,可以諮詢詳情 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。