Kasper 是一款针对 Linux 内核中推测性代码执行问题的扫描器,现已推出

阿姆斯特丹自由大学的一组研究人员发布了 Kasper 工具包,旨在识别 Linux 内核中的代码片段,这些代码片段可用于利用处理器上推测性代码执行引起的 Spectre 级漏洞。 该工具包的源代码根据 Apache 2.0 许可证分发。

让我们回想一下,为了执行诸如 Spectre v1 之类的可以确定内存内容的攻击,需要在特权代码中存在特定的命令序列(小工具),从而导致指令的推测执行。 出于优化目的,处理器开始以推测模式执行此类小工具,然后确定分支预测不合理并将操作回滚到其原始状态,但推测执行期间处理的数据最终会出现在高速缓存和微架构缓冲区中,并且可以使用各种方法通过第三方渠道确定残留数据来从中检索。

以前用于扫描 Spectre 漏洞的小工具的工具,基于搜索典型模式,显示出非常高的误报率,同时遗漏了许多真实的小工具(实验表明,此类工具识别的 99% 的小工具无法用于攻击) ,并且 33% 的可能导致攻击的工作小工具未被注意到)。

为了提高识别有问题的小工具的质量,Kasper 对攻击者在执行 Spectre 类攻击的每个步骤中可以利用的漏洞进行了建模 - 对允许数据控制的问题进行建模(例如,将攻击者数据替换到微架构结构中,以影响后续的推测执行) LVI 类攻击)、获取机密信息(例如,超出缓冲区边界或使用释放后的内存时)以及泄露机密信息(例如,通过分析处理器缓存的状态或使用 MDS 方法)。

Kasper 是一款针对 Linux 内核中推测性代码执行问题的扫描器,现已推出

测试时,内核与 Kasper 运行时库链接并检查在 LLVM 级别运行。 检查过程模拟推测性代码执行,使用检查点恢复机制实现,该机制专门执行错误预测的代码分支,然后回滚到分支开始之前的原始状态。 Kasper还尝试模拟各种软件和硬件漏洞,分析架构和微架构效果的影响,并对可能的攻击者行为进行模糊测试。 为了分析执行流,使用了 Linux 内核的 D​​ataFlowSanitizer 端口,为了进行模糊测试,使用了 syzkaller 包的修改版本。

Kasper 是一款针对 Linux 内核中推测性代码执行问题的扫描器,现已推出

使用 Kasper 对 Linux 内核进行扫描,发现了 1379 个以前未知的小工具,这些小工具可能会在指令的推测执行期间导致数据泄漏。 值得注意的是,也许只有其中一些可能会带来真正的问题,但为了证明存在真正的危险,而不仅仅是理论上的危险,针对有问题的代码片段之一开发了一个漏洞利用的工作原型,从而导致信息从内核内存泄漏。

来源: opennet.ru

添加评论