out-of-tree 的第一個 (v1.0.0) 版本已發布,這是一個用於開發和測試漏洞程式和 Linux 核心模組的工具包。
out-of-tree 可讓您自動執行一些例行操作,以創建調試內核模組和漏洞利用的環境、生成漏洞利用可靠性統計數據,並且還提供輕鬆整合到 CI(持續整合)中的能力。
每個核心模組或漏洞利用檔案 .out-of-tree.toml 進行描述,該檔案指定有關所需環境的資訊以及(如果是漏洞利用)在存在某些安全緩解措施的情況下對操作的限制。
該工具包還可讓您識別受漏洞影響的特定核心版本(使用 --guess 命令),並且還可用於簡化特定提交的二進位搜尋。
以下是自 v0.2 版本以來的變更清單。
添加者
-
實現了限制生成的(樹外內核自動生成)內核數量(基於 .out-of-tree.toml 中的描述)並使用 —max= 檢查運行(樹外 pew)的能力X 參數。
-
新的 genall 命令,可讓您產生特定發行版和版本的所有核心。
-
所有日誌現在都儲存在 sqlite3 資料庫中。 實作了簡單、頻繁需要的查詢的命令,以及將資料匯出為 json 和 markdown。
-
實現了成功操作機率的計算(基於先前的發射)。
-
能夠保存建置結果(樹外 pew 指令的新 --dist 參數)
-
支援為主機系統上安裝的核心產生元數據,以及直接在主機上建置。
-
支援第三方核心。
-
樹外調試環境現在會自動搜尋主機系統上的調試符號。
-
新增了在偵錯期間透過啟用/停用標誌 KASLR、SMEP、SMAP 和 KPTI 管理安全緩解措施的功能。
-
在樹外 pew 測試命令中新增了 --threads=N 參數,該參數可用於指定建置/執行和測試漏洞利用程式和核心模組的執行緒數。
-
能夠設定將記錄在日誌中的標籤,然後可用於計算統計資料。
-
新增了不使用正規表示式指定內核版本的功能。
-
新的 pack 命令,用於對子目錄中的漏洞和核心模組進行大規模測試。
-
在漏洞利用和核心模組的配置 (.out-of-tree.toml) 中,新增了停用 KASLR、SMEP、SMAP 和 KPTI 的功能,以及指定所需的核心和記憶體數量。
-
現在,當核心 autogen 運行時,映像(rootfs)會自動載入。 不再需要引導程式。
-
支援 CentOS 核心。
變化
-
現在,如果沒有所需版本的發行版的映像(rootfs),out-of-tree 將嘗試使用最接近版本的映像。 例如,Ubuntu 18.04 的 Ubuntu 18.10 映像。
-
現在,如果缺少內核模組的測試,則不會將其視為失敗(沒有測試 - 沒有錯誤!)。
-
現在,如果任何核心上的至少一個階段(建置、啟動或測試)失敗,樹外將傳回負錯誤碼。
-
該專案已改用 Go 模組,現在首選使用 GO111MODULE=on 進行建置。
-
新增了預設測試。
-
如果 ${TARGET}_test 中的組件未在 Makefile 中實現,現在將預設使用 Test.sh。
-
在運行核心模組或漏洞之前,不再清除核心日誌。 一些漏洞利用 dmesg 中的核心基礎洩漏來繞過 KASLR,因此清理可能會破壞漏洞的實作邏輯。
-
qemu/kvm 現在使用主機處理器的所有功能。
刪除
-
核心工廠 由於基於增量更新的 Dockerfile 的核心產生的實作而完全刪除。
-
bootstrap 不做任何其他事情。 該命令將在下一個版本中刪除。
已更正
-
在 macOS 上,不再需要執行 GNU coreutils。
-
由於某些系統上 docker 內部安裝錯誤,臨時檔案已移至 ~/.out-of-tree/tmp/。
來源: linux.org.ru