Linux內核tty子系統漏洞利用技術被公開

谷歌零項目團隊的研究人員發布了一種利用 Linux 內核 tty 子系統的 TIOCSPGRP ioctl 處理程序實現中的漏洞 (CVE-2020-29661) 的方法,並詳細檢查了可以阻止此類攻擊的保護機制漏洞。

導致該問題的 bug 早在去年 3 月 5.9.13 日就已在 Linux 內核中得到修復。 該問題出現在 2020 版之前的內核中,但大多數發行版都在去年提出的內核包更新中解決了該問題(Debian、RHEL、SUSE、Ubuntu、Fedora、Arch)。 在 TIOCGSID ioctl 調用的實現中同時發現了一個類似的漏洞(CVE-29660-XNUMX),但也已在各處修復。

該問題是由導致 drivers/tty/tty_jobctrl.c 代碼中的競爭條件的鎖定錯誤引起的,該代碼可用於創建通過 ioct 調用 TIOCSPGRP 從用戶空間利用的釋放後使用內存訪問條件。 一個有效的漏洞已經被證明可以在具有內核 10-4.19.0-amd13 的 Debian 64 上進行權限提升。

同時,在已發表的文章中,重點不是創建有效漏洞利用的技術,而是內核中存在哪些工具可以防止此類漏洞。 結論並不令人鼓舞,在堆中對內存進行分段和釋放後控制內存訪問等方法在實踐中沒有使用,因為它們會導致性能下降,並且基於 CFI(控制流完整性)的保護,阻止漏洞利用在攻擊的後期階段,需要改進。

當考慮什麼從長遠來看可能會有所不同時,在狀態檢查器的構建階段使用高級靜態分析器或使用內存安全語言,例如 Rust 和帶有豐富註釋的 C 方言(例如 Checked C)脫穎而出。鎖、對象和指針。 在保護方法中,還提到了啟用panic_on_oops模式、將內核結構轉移到只讀模式以及使用seccomp等機制限制對系統調用的訪問。

來源: opennet.ru

添加評論