out-of-tree v1.0.0 - 用于开发和测试漏洞和 Linux 内核模块的工具


out-of-tree v1.0.0 - 用于开发和测试漏洞和 Linux 内核模块的工具

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

添加评论