Linux 核心的 io_uring 介面雖然在非同步 I/O 操作方面承諾帶來顯著的效能提升,但由於持續存在的安全問題,已成為技術社群激烈討論的話題。這項旨在簡化系統呼叫和改進 I/O 處理的創新功能,受到了主要科技公司和核心開發者的嚴格審查。
安全挑戰
io_uring 的實現自誕生以來就一直受到安全問題的困擾。像 Android 和 ChromeOS 這樣的主要平臺已經採取了完全停用該功能的極端措施,凸顯了這些安全問題的嚴重性。安全漏洞部分源於其在使用者空間和核心空間之間共享緩衝區的設計,這種設計雖然提供了效能優勢,但也成為了潛在的漏洞利用途徑。
我閱讀了許多 io_uring 的入門文章才發現,它在生產環境中並未得到廣泛使用(例如 Android 和 ChromeOS 都停用了它),因為它過去和現在都是造成數量驚人的安全問題的源頭。
主要安全性和實施問題:
- 由於安全問題在 Android 和 ChromeOS 中被停用
- 報告了多個 CVE 漏洞和本地使用者漏洞利用
- 使用者空間和核心之間的共享緩衝區設計被認為是潛在的安全風險
- 主要科技公司在生產環境採用方面存在分歧:
- Google :由於安全考慮通常避免使用
- Facebook :在某些服務中有限度地使用
行業採用與抵制
儘管面臨安全挑戰,但其採用情況仍然不一。雖然 Google 出於安全考慮一直避免使用 io_uring ,但 Facebook 已在某些生產服務中實施了它。這種採用模式的分歧反映了整個行業在權衡效能優勢和安全風險方面的廣泛爭議。
技術前景與現實情況
io_uring 的技術能力令人印象深刻,它為各種等待場景提供了統一處理方案,包括檔案操作、futex 和其他傳統上需要單獨處理機制的系統事件。該介面能夠減少系統呼叫並最佳化緩衝區管理,相比舊方法如 select() 和 epoll() 來說是重要的理論進步。
未來展望
社群討論表明,越來越多的人認為,雖然 io_uring 的核心理念很有價值,但其當前實現可能需要重新考慮。一些開發者主張完全重新實現,以吸取當前安全問題的經驗教訓,但也有人警告說,由於程式碼快速演進,任何新的實現可能都會面臨類似的早期安全挑戰。
關於 io_uring 的持續爭論提醒我們,即使是有前景的技術創新,在生產環境中也必須謹慎權衡安全考慮因素。隨著 Linux 社群繼續致力於改進 io_uring 的安全性,其未來的採用很可能取決於能否在保持效能優勢的同時成功解決這些基本的安全問題。