Buzzer 是一个模糊测试工具链,允许编写 eBPF 模糊测试策略。
模糊测试策略是一种生成随机 eBPF 程序并验证它们不会 出现意外行为的方法。
要运行该模糊测试器,请按照以下步骤操作:
安装 bazel。
安装 clang
设置正确的 CC 和 CXX 环境变量
export CC=clang
export CXX=clang++
运行
bazel build :buzzer
以 root 身份运行 buzzer:
sudo ./bazel-bin/buzzer_/buzzer
或者使用 CAP_BPF:
sudo setcap CAP_BPF=eip bazel-bin/buzzer_/buzzer
./bazel-bin/buzzer_/buzzer
你使用 Buzzer 发现了很酷的漏洞吗?请通过 pull request 告诉我们! 我们希望在本节下收录所有使用该框架发现的问题。
CVE-2023-2163: eBPF 验证器分支剪枝逻辑中的一个错误可能导致不安全路径未被探索。 被剪枝的不安全路径实际上是运行时执行的路径,这导致验证器认为的某些 寄存器值与其实际值不一致。这种不一致可被利用,通过将混淆的寄存器用作 内存操作的基础寄存器,来实现内核中的任意内存读写。
CVE-2024-41003: 验证器寄存器限制跟踪中的一个漏洞允许攻击者欺骗验证器,使其认为某个 寄存器保存的值为 0,而运行时该寄存器可能取值为 1。这随后可被利用来 实现任意的内核内存读写,并导致本地权限提升或容器逃逸。