首页 > 其他分享 >Buzzer:一款针对eBPF的安全检测与模糊测试工具

Buzzer:一款针对eBPF的安全检测与模糊测试工具

时间:2024-09-06 09:51:24浏览次数:14  
标签:Buzzer buzzer eBPF bazel 测试工具 PATH root

关于Buzzer

Buzzer是一款功能强大的模糊测试工具链,该工具基于Go语言开发,可以帮助广大研究人员简单高效地开发针对eBPF的模糊测试策略。

功能介绍

下面给出的是当前版本的Buzzer整体架构:

元素解析:

1、ControlUnit:通过命令行标志--fuzzing_strategy启动指定的FuzzingStrategy;

2、eBPFGenerationLibrary:包含生成 eBPF 程序的逻辑;

3、ExecutionUnit:FFI 层与 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 CC=clang

export CXX=clang++

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/google/buzzer.git

然后切换到项目目录中,运行Buzzer:

cd buzzer

bazel build :buzzer

以root权限运行Buzzer:

sudo ./bazel-bin/buzzer_/buzzer

或使用CAP_BPF运行Buzzer:

sudo setcap CAP_BPF=eip 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 "console=ttyS0 root=/dev/sda nokaslr earlyprintk=serial net.ifnames=0" \

        -drive file=PATH_TO_DEBIAN_IMAGE/bullseye.img,format=raw \

        -net user,host=10.0.2.10,hostfwd=tcp:127.0.0.1:10022-:22,hostfwd=tcp:0.0.0.0:8080-:8080 \

        -net nic,model=e1000 \

        -enable-kvm \

        -nographic \

        -pidfile vm.pid \

        2>&1 | tee vm.log

将vmlinux镜像传输到VM中:

scp -i PATH_TO_DEBIAN_IMAGE/bullseye.id_rsa -P 10022 PATH_TO_KERNEL_REPO/vmlinux root@localhost:~/

传输到您想要覆盖的源文件:

mkdir /root/sourceFiles

然后将您想要 fuzzer 可视化覆盖信息的任何源文件(例如验证器源代码)传输到该目录中,在运行:

scp -i PATH_TO_DEBIAN_IMAGE/bullseye.id_rsa -P 10022 PATH_TO_KERNEL_REPO/kernel/bpf/verifier.c  root@localhost:~/sourceFiles

运行Buzzer并访问指标服务器:

scp -i PATH_TO_DEBIAN_IMAGE/bullseye.id_rsa -P 10022 PATH_TO_BUZZER  root@localhost:~/

./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

标签:Buzzer,buzzer,eBPF,bazel,测试工具,PATH,root
From: https://blog.csdn.net/FreeBuf_/article/details/141926818

相关文章

  • Jmeter 4.0压力测试工具安装及使用方法
    一、Jmeter下载1.网盘(官网下载贼慢):https://pan.xunlei.com/s/VO5ucfHW9SkAXN8Ns-a5oxoQA1?pwd=y4aw#2.选择进行下载,下载下来为一个压缩包,解压即可。3.我下载的是jmeter4.0版本,对应jdk1.8。然后就进行解压。个人认为要注意2点:1)对应的jdk版本不可太低,一般jmeter3.0的对应jdk......
  • 观测云核心技术解密:eBPF Tracing 实现原理
    前言eBPF是一种强大的内核技术,允许在内核中安全地执行自定义代码。通过eBPF,开发者可以在不修改内核源码的情况下,对内核功能进行扩展和监控。eBPFTracing利用这一技术,对系统调用、内核函数等进行跟踪,从而实现对应用行为的深入洞察。与传统的监控方式相比,eBPFTracing具有以下......
  • 安全渗透测试工具整理_vajra自动化渗透测试
    web端的在线漏洞扫描:https://github.com/Skycrab/leakScanhttps://github.com/zhangzhenfeng/AnyScanFuzzScanner: https://github.com/TideSec/FuzzScannerTrackRay: https://github.com/iSafeBlue/TrackRay自动漏洞扫描器,子域名爆破,端口扫描,目录爆破,常用框架漏洞检......
  • APP稳定性测试工具-monkey
    monkey是adbshell中的一个命令行工具,用于执行随机的用户事件(如触摸、点击、滑动、键盘输入等)来测试应用程序的稳定性。安装下载并安装AndroidSDK配置环境变量,将adb所在路径添加到系统环境变量中验证安装adbversion使用1.启动Android设备或模拟器查看已连接设......
  • rados bench性能测试工具介绍
    radosbench性能测试工具介绍radosbench介绍Ceph包含radosbench命令,用于在RADOS存储群集上执行性能基准测试。命令将执行写入测试,以及两种类型的读测试。在测试读取和写入性能时,--no-cleanup选项非常重要。默认情况下,radosbench命令会删除它写入存储池的对象。保留这......
  • 对于初创电商公司来说,选择API测试工具时应该考虑哪些因素?
    成本效益:初创公司通常预算有限,因此需要考虑工具的购买成本或订阅费用。寻找提供免费版本或社区版的工具,这些版本可能已经满足基本需求。易用性:选择学习曲线较低的工具,以便团队成员可以快速上手。界面友好和直观的工具可以减少培训时间和成本。功能性:确保所选工具支持所需......
  • 好用的电商API接口测试工具有什么推荐吗?
    电商API接口测试工具推荐:提升开发效率,保障数据质量在电商领域,API接口的稳定性和可靠性至关重要。选择合适的测试工具可以帮助开发者快速发现问题,优化接口性能,从而提升用户体验和业务效率。本文将推荐几款好用的电商API接口测试工具,并探讨它们的特点和优势。一、PostmanPostman......
  • Kubernetes v1.28.2 & Calico eBPF
    集群初始化简略步骤初始化集群kubeadminit\--skip-phases=addon/kube-proxy\--apiserver-cert-extra-sans=35.229.220.159,127.0.0.1,10.0.0.3,10.0.0.4,10.0.0.5,10.254.0.2\--control-plane-endpoint=apiserver.unlimit.club\--apiserver-advertis......
  • 基准测试工具JMH
    概述JavaMicrobenchmarkHarness,简称JMH,由OpenJDK开发,用来构建、运行和分析Java或其他JVM语言代码的微基准测试框架。适合于方法级别的细粒度测试,并不适用于系统之间的链路测试。为什么需要JMH,也就是需求产生死码消除:所谓死码,是指注释的代码,不可达的代码块,可达但不被使用的代......
  • 使用cilium开发ebpf程序
    使用go开发ebpf程序最常见的一个框架就是cilium。开发前需要了解ebpf,了解go语言的基础知识。在本地安装go之后下载bpf2gogogetgithub.com/cilium/ebpf/cmd/bpf2go从最简单的开发框架开始下载示例源码gitclonehttps://github.com/cilium/ebpf.git在ebpf/examples下是官方......