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