linux-startup

https://github.com/google/syzkaller/blob/master/pkg/report/README.md

漏洞评分

在进行分类之前,我们并不真正了解漏洞的影响。但我们可以从漏洞标题中了解到很多信息。

Syzbot 评分基于我们对历史上哪些漏洞类别影响更严重的理解。它可以用于确定分类队列的优先级。

启发式规则

KASAN > KMSAN > KCSAN

KASAN 检测到的漏洞通常比 KMSAN 检测到的漏洞更危险。而 KMSAN 检测到的漏洞通常比 KCSAN 检测到的漏洞更危险。

释放后使用写入 > 无效释放(双重释放)> 释放后使用读取

KASAN 写入 > KASAN 读取

KASAN 写入表示越界或释放后使用的写入操作。对内核内存的任何不受控制的写入都极其危险,因为它可能损坏数据或代码指针,使其成为极具价值的攻击目标,并可能导致系统被攻陷。KASAN 读取表示越界或释放后使用的读取操作。这通常不太严重,可能会导致系统崩溃(拒绝服务)或泄露敏感数据,但不会为攻击者提供直接执行自己代码的途径。

内存安全漏洞 > 拒绝服务漏洞

该启发式规则在两类主要漏洞之间建立了广泛的优先级,基于它们的最终影响。

内存安全漏洞:此类包括上述所有问题——释放后使用、双重释放、越界读写等。这些被认为更严重,因为它们可能导致系统被攻陷。成功的利用可以使攻击者提升权限,并完全控制内核和整个系统。

拒绝服务(DoS)漏洞:此类包括内核挂起、崩溃或资源耗尽(如内存泄漏)等漏洞。虽然它们很严重,因为会破坏系统可用性,但通常不允许攻击者执行代码或窃取数据。影响通常是暂时的,重启系统即可解决。它们会干扰服务,但不会损害其完整性。

信息泄露 > 拒绝服务(DoS)

KMSAN 信息泄露和其他泄露内核内存的漏洞通常比典型的拒绝服务漏洞更严重。这些泄露可用于绕过诸如内核地址空间布局随机化(KASLR)之类的安全缓解措施,从而使利用其他漏洞变得更加容易。

并发问题 > 简单拒绝服务

像数据竞争(DataRace)和锁依赖漏洞(LockdepBug)这样的漏洞可能比标准的拒绝服务漏洞更严重。数据竞争可能导致不可预测的行为,包括内存损坏,而这可能是可被利用的。

锁依赖漏洞(LockdepBug)表明存在潜在的死锁,可能导致比资源耗尽型拒绝服务更严重的系统挂起。

KFENCE 报告具有高优先级

KFENCE 是一种比 KASAN 更轻量级的内存安全检测器。虽然它的性能开销可能更低,但它发现的漏洞(释放后使用、越界)与 KASAN 发现的漏洞具有同等高影响性质。因此,KFENCE 检测到的漏洞应与 KASAN 报告受到同等程度的紧急处理。

UBSAN 报告需要仔细评估

未定义行为检测器(UBSAN)可以检测广泛的问题。它们的严重程度差异很大:

  1. 越界移位或数组索引越界问题如果导致内存损坏,可能会非常严重。
  2. 整数溢出如果导致绕过安全检查并引发缓冲区溢出,也可能很关键。
  3. 其他 UBSAN 问题可能不太严重,但仍表明存在潜在的漏洞,可能会变得有问题。

原子上下文中的 LockdepSleeping 是一个关键缺陷

AtomicSleep 是一个严重的漏洞,可能导致系统范围的挂起和不稳定。这是因为在持有自旋锁或处于其他原子上下文时睡眠可能会导致死锁。

这些通常比典型的拒绝服务更严重。

内存泄漏是拒绝服务的一种形式

内存泄漏(MemoryLeak)漏洞是一种拒绝服务类型,内核会逐渐耗尽内存。虽然通常不如内存损坏严重,但可由非特权用户触发的快速内存泄漏可能是一个高影响的拒绝服务向量。

读写操作中的空指针解引用

它们可能是可被利用的(参见证明),但利用的可能性尚不明确。由于这种不确定性,它们被放在高优先级漏洞的底部。