引入補丁以隨機化系統呼叫的 Linux 核心堆疊位址

Kees Cook 是kernel.org 的前首席系統管理員,也是Ubuntu 安全團隊的負責人,現在在Google 工作,負責Android 和ChromeOS 的安全,他發布了一組補丁,用於在處理系統調用時隨機化內核堆疊中的偏移量。 補丁透過改變堆疊位置來提高核心安全性,從而使對堆疊的攻擊變得更加困難且不太成功。 初始實作支援 ARM64 和 x86/x86_64 處理器。

該補丁的最初想法屬於 PaX RANDKSTACK 專案。 2019 年,英特爾工程師 Elena Reshetova 嘗試創建適合包含在主 Linux 核心中的這個想法的實作。 後來,Kees Cook 採取了這項舉措,他提出了一個適合內核主版本的實作。 這些補丁計劃作為 5.13 版本的一部分包含在內。 預設情況下該模式將被停用。 為了啟用它,建議使用核心命令列參數“randomize_kstack_offset=on/off”和 CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT 設定。 啟用該模式的開銷估計約為 1% 的效能損失。

所提出的保護的本質是為每個系統呼叫選擇一個隨機堆疊偏移量,這使得即使在接收位址資料之後也很難確定記憶體中的堆疊佈局,因為下一個系統呼叫將更改堆疊的基底位址。 與PaX RANDKSTACK 實作不同,在建議包含在內核中的補丁中,隨機化不是在初始階段(cpu_current_top_of_stack)執行的,而是在設定pt_regs 結構之後執行的,這使得無法使用基於ptrace 的方法來確定隨機偏移量在長時間運行的系統呼叫期間。

來源: opennet.ru

添加評論