淄博怎么做网站,做网站造假,微商系统软件开发,旅游营销推广方案关于Buzzer
Buzzer是一款功能强大的模糊测试工具链#xff0c;该工具基于Go语言开发#xff0c;可以帮助广大研究人员简单高效地开发针对eBPF的模糊测试策略。 功能介绍
下面给出的是当前版本的Buzzer整体架构#xff1a; 元素解析#xff1a; 1、ControlUnit#xff1a…关于Buzzer
Buzzer是一款功能强大的模糊测试工具链该工具基于Go语言开发可以帮助广大研究人员简单高效地开发针对eBPF的模糊测试策略。 功能介绍
下面给出的是当前版本的Buzzer整体架构 元素解析 1、ControlUnit通过命令行标志--fuzzing_strategy启动指定的FuzzingStrategy 2、eBPFGenerationLibrary包含生成 eBPF 程序的逻辑 3、ExecutionUnitFFI 层与 eBPF Syscall 交互并加载/执行 eBPF 程序 4、FuzzingStrategy所有策略必须实现的接口 模糊测试策略是eBPF 程序的生成方式和错误检测方式的结合。
目前Buzzer 有三种可能的策略 1、PointerArithmetic生成随机 ALU 和 JMP 操作然后尝试对映射指针进行指针算术运算并写入它。如果写入的值在用户空间不可见则假设我们写入了 OOB 2、VerifierLogParser生成随机 ALU 操作并解析 eBPF 验证程序日志的输出。在程序运行时寄存器的值会被存储然后与验证程序通过日志公开的假设进行比较 3、Playground这里没有进行真正的模糊测试此策略只是为了帮助试验 eBPF Buzzer 还具有一个集成的指标服务器能够呈现覆盖率信息该组件的架构如下所示 每当ExecutorUnit验证一个程序时都会将下列信息传递给MetricsUnit 1、程序是否通过验证 2、kcov 收集的任何覆盖信息如果启用 MetricsUnit税后便会处理这些信息然后将 kcov 地址解析为代码位置并在 Web 界面中显示这些信息。 工具要求 Go运行时环境 bazel clang 工具安装
由于该工具基于Go语言开发因此我们首先需要在本地设备上安装并配置好最新版本的Go运行时环境。然后按照步骤安装好bazel和clang并配置好正确的CC和CXX环境变量 export CCclangexport CXXclang 接下来广大研究人员可以直接使用下列命令将该项目源码克隆至本地 git clone https://github.com/google/buzzer.git 然后切换到项目目录中运行Buzzer cd buzzerbazel build :buzzer 以root权限运行Buzzer sudo ./bazel-bin/buzzer_/buzzer 或使用CAP_BPF运行Buzzer sudo setcap CAP_BPFeip bazel-bin/buzzer_/buzzer./bazel-bin/buzzer_/buzzer 工具使用
按照syzkaller 的说明设置运行 Debian 映像的虚拟机请确保在编译 Linux 内核时启用 BPF。
生成bullseye镜像 ./create-image.sh -d bullseye 运行syzkaller生成的虚拟机 qemu-system-x86_64 \-m 20G \-smp 2 \-cpu host \-kernel PATH_TO_KERNEL_REPO/arch/x86/boot/bzImage \-append consolettyS0 root/dev/sda nokaslr earlyprintkserial net.ifnames0 \-drive filePATH_TO_DEBIAN_IMAGE/bullseye.img,formatraw \-net user,host10.0.2.10,hostfwdtcp:127.0.0.1:10022-:22,hostfwdtcp:0.0.0.0:8080-:8080 \-net nic,modele1000 \-enable-kvm \-nographic \-pidfile vm.pid \21 | tee vm.log 将vmlinux镜像传输到VM中 scp -i PATH_TO_DEBIAN_IMAGE/bullseye.id_rsa -P 10022 PATH_TO_KERNEL_REPO/vmlinux rootlocalhost:~/ 传输到您想要覆盖的源文件 mkdir /root/sourceFiles 然后将您想要 fuzzer 可视化覆盖信息的任何源文件例如验证器源代码传输到该目录中在运行 scp -i PATH_TO_DEBIAN_IMAGE/bullseye.id_rsa -P 10022 PATH_TO_KERNEL_REPO/kernel/bpf/verifier.c rootlocalhost:~/sourceFiles 运行Buzzer并访问指标服务器 scp -i PATH_TO_DEBIAN_IMAGE/bullseye.id_rsa -P 10022 PATH_TO_BUZZER rootlocalhost:~/./buzzer 此时如果你在主机上访问 localhost:8080你应该能够看到指标服务器 许可证协议
本项目的开发与发布遵循Apache-2.0开源许可协议。
项目地址
Buzzer【GitHub传送门】
参考资料 The Go Programming Language https://bazel.build/ Clang C Language Family Frontend for LLVM bpf: Fix incorrect verifier pruning due to missing register precision taints - kernel/git/torvalds/linux.git - Linux kernel source tree Linux Kernel: Vulnerability in the eBPF verifier register limit tracking · Advisory · google/security-research · GitHub