VirtFuzz:一款基于VirtIO的Linux内核模糊测试工具
关于VirtFuzz
VirtFuzz是一款功能强大的Linux内核模糊测试工具,该工具使用LibAFL构建,可以利用VirtIO向目标设备的内核子系统提供输入测试用例,广大研究人员可以使用该工具测试Linux内核的安全性。

工具要求
1、Rust;
2、修补的QEMU;
3、Linux虚拟机系统镜像;
4、修补的内核;
环境配置
修补的QEMU
针对VirtIO设备的QEMU构建命令如下(QEMU构建方式请参考这篇【文档】):
curl https://download.qemu.org/qemu-8.2.2.tar.xz -o qemu.tar.xztar xvJf qemu.tar.xzmv qemu-8.2.2 qemucd qemupatch -p1 < $SCRIPT_DIR/../qemu-patch.patchmkdir buildcd build../configure --target-list=x86_64-softmmumake -j$(nproc)
Debian虚拟机镜像
下列命令使用了Syzkaller的脚本,可以使用下列命令创建一个虚拟机访客镜像:
cd guestimage./create-image.sh -d stretch
修补的内核
最后,VirtFuzz的正常工作还需要一个修补的内核,因此,我们可以拉取一个内核版本并应用我们的补丁。参考命令如下:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gitcd linuxgit checkout v6.0../virtfuzz/kernel-patches/apply.sh# Depending on the target, apply the patches to annotate for a specific device../virtfuzz/kernel-patches/annotate-80211.sh# Make the configmake x86_64_defconfigmake kvm_guest.configscripts/kconfig/merge_config.sh -m .config ../virtfuzz/kernel-config/base.config# For example enable KASANscripts/kconfig/merge_config.sh -m .config ../virtfuzz/kernel-config/kasan.configmake olddefconfigmake -j$(nproc)
工具下载
广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/seemoo-lab/VirtFuzz.git
工具使用
项目克隆至本地后,我们将能够获取到下列工具组件:
1、virtfuzz-fuzz:模糊测试器
2、virtfuzz-proxy:代理
3、virtfuzz-replay:一些实用脚本
模糊测试器使用
下列命令可以查看工具的所有参数选项:
cargo run --release --bin virtfuzz-fuzz
比如说,我们可以使用下列命令对WLAN栈执行模糊测试:
export QEMU=PATH_TO-qemu-system-x86_64export IMAGE=guestimage/stretch.imgexport KERNEL=PATH_TO/linux/arch/x86/boot/bzImagecargo run --release --package virtfuzz-fuzz -- --device-definition device-definitions/hwsim-scan.json --cores 0-1 --stages standard
此时,模糊测试器会通过mac802.11_hwsim驱动程序对802.11栈运行两个测试实例。
下列命令可以查看工具的帮助信息:
cargo run --release --package virtfuzz-fuzz -- --help
模糊测试选项
在开发过程中,我们还提供了一些选项来支持自定义模糊测试任务。
选择一个目标
工具还支持使用--device-definition参数给模糊测试器传递一个包含了设备定义的JSON文件,如果想使用预构建的设备定义文件,可以直接使用--device参数:
-d, --device <DEVICE>
--device-definition <DEVICE_DEFINITION>
跟踪比较
--stages参数可以选择测试覆盖率,可选项为standard(AFL-Map风格)或cmplog(跟踪比较):
-s, --stages <STAGES>
其他
某些子系统(例如蓝牙子系统)可能会在处于完全可用状态之前进行初始化,并与硬件交换某些信息。为了提升模糊测试的速度,我们可以给工具提供一个包含了已记录初始化数据的PCAP文件:
--init-path <INIT_PATH>
下列命令可以在开始模糊测试前等待虚拟机发送第一帧:
--wait-for-rx
执行下列命令后,如果虚拟机发送了一个命令,模糊测试器会伪造一个命令执行完成的消息:
--bt-fake-cc
许可证协议
本项目的开发与发布遵循GPL-3.0开源许可协议。
项目地址
VirtFuzz:【GitHub传送门】
参考资料
GitHub - AFLplusplus/LibAFL: Advanced Fuzzing Library - Slot your Fuzzer together in Rust! Scales across cores and machines. For Windows, Android, MacOS, Linux, no_std, ...
CSDL | IEEE Computer Society
syzkaller/tools/create-image.sh at master · google/syzkaller · GitHub
相关文章:
VirtFuzz:一款基于VirtIO的Linux内核模糊测试工具
关于VirtFuzz VirtFuzz是一款功能强大的Linux内核模糊测试工具,该工具使用LibAFL构建,可以利用VirtIO向目标设备的内核子系统提供输入测试用例,广大研究人员可以使用该工具测试Linux内核的安全性。 工具要求 1、Rust; 2、修补的Q…...
统计学一(术语,正态)
目录 一,常用术语 二,正态分布(Normal Distribution) 三,中心极限定理(Central Limit Theorem) 一,常用术语 population(族群):要统计的总的 populationSize(族群数量):要统计的总…...
CleanMyMac X for Mac系统优化垃圾清理软件卸载 工具(小白轻松上手,简单易学)
Mac分享吧 文章目录 效果一、准备工作二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、启动台显示软件图标,表示安装成功 三、运行测试1、打开软件,配置2、授权,允许完全磁盘访问 安装完成&a…...
从0开始开发一个简单web界面的学习笔记(HTML类)
文章目录 什么是HTML页面vscode 开放工具搭建第一个HTML页面编写vscode 如何快速生成代码框架html标签——注释、标题、段落、换行标签格式化标签img 标签(src 属性01)img 属性02(alt、title、width/height、border)a标签href属性a标签target属性表格标签01 基本属性表格标签02…...
【机器学习】对大规模的文本数据进行多标签的分类处理
1. 引言 1.1. NLP研究的背景 随着人工智能技术的飞速发展,智能助手、聊天机器人和虚拟客服的需求正呈现出爆炸性增长。这些技术不仅为人们提供了极大的生活便利,如日程管理、信息查询和情感陪伴,还在工作场景中显著提高了效率。聊天机器人凭…...
C++之std::type_identity
目录 1.简介 2.C20的std::type_identity 3.使用 type_identity 3.1.阻止参数推导 3.1.1.模板参数推导过程中的隐式类型转换 3.1.2.强制显式实例化 3.2.阻止推断指引 3.3.类型保持 3.4.满足一些稀奇古怪的语法 4.示例 5.总结 1.简介 std::type_identity 是 C17 引入的…...
头歌资源库(10)拼数字
一、 问题描述 二、算法思想 初始化一个长度为10的数组count,用于记录卡片中每个数字的数量。 从1开始依次尝试拼出正整数,直到无法拼出下一个数为止。 对于每个尝试拼出的正整数,遍历其每一位的数字,检查该数字在count中是否还…...
虚谷数据库-定时作业
虚谷数据库提供定时作业机制,用于定时、定期、自动的进行某些操作,可通过系统包 dbms_scheduler 进行定时作业创建、调度、查看、删除等。 DBMS_SCHEDULER 系统包封装了以下过程/函数:ENABLE、DISABLE、SET_JOB_ARGUMENT_VALUE、DROP_JOB、R…...
AWD攻防比赛流程手册
AWD简单介绍: AWD:Attack With Defence,即攻防对抗,比赛中每个队伍维护多台服务器(一般两三台,视小组参赛人数而定),服务器中存在多个漏洞(web层、系统层、中间件层等&am…...
Golang的json解析--Gjson库的使用举例
目录 简介 安装 原生的json解析 Gjson使用举例 基本使用 键路径 使用示例 其他资源 简介 在 Golang 中,解析 JSON 数据是一项非常常见的任务。Go提供了标准的JSON包,可以轻松地将JSON数据序列化和反序列化。但是,在使用标准JSON包…...
基于Langchain构建本地大型语言模型(LLM)问答系统的经验分享
基于Langchain构建本地大型语言模型(LLM)问答系统的经验分享 https://download.csdn.net/download/xziyuan/89334371?spm1001.2101.3001.9500 最近,我一直在探索如何利用Langchain来构建一个本地的大型语言模型问答系统。在这个过程中&…...
对抗式生成模仿学习(GAIL)
目录 1 预先基础知识 1.1 对抗生成网络(GAN) 1.1.1 基本概念 1.1.2 损失函数 1.1.2.1 固定G,求解令损失函数最大的D 1.1.2.2 固定D,求解令损失函数最小的G 1.2 对抗式生成模仿学习特点 2 对抗式生成模仿学习(…...
信息系统项目管理师 | 新一代信息技术
关注WX:CodingTechWork 物联网 定义 The Internet of Things是指通过信息传感设备,按约定的协议,将任何物品与互联网连接,进行信息交互和通信,以实现智能化识别。定位、跟踪、监控和管理的一种网络。物联网主要解决…...
安全宣传咨询日活动向媒体投稿记住这个投稿好方法
在信息爆炸的时代,作为单位的信息宣传员,我肩负着将每一次重要活动,特别是像“安全宣传咨询日”这样的公益活动,有效传达给公众的重任。这份工作看似简单,实则充满了挑战,尤其是在我初涉此领域时,那段曲折而又难忘的投稿经历,至今记忆犹新。 初探投稿之海,遭遇重重困难 起初,我…...
第7章:系统架构设计基础知识-软件架构风格
由于历史原因,研究者和工程人员对Sofiware Architecture(简称SA)的翻译不尽相同,其软件的“体系结构”和“架构”具有相同的含义。 系统架构其实就是系统的结构,系统架构设计其实就是要给相关利益方说清楚通过什么样的结构来解决需求中功能和…...
自制调色小工具给图片加滤镜,修改图片红、绿、蓝通道及亮度,修改图片颜色
上篇: 上篇我们给地图添加了锐化、模糊等滤镜,这篇来写一个小工具给图片调色。 调色比锐化等滤镜要简单许多,直接拿到像素值修改即可。不需要用到卷积核。。。(*^▽^*) 核心原理就是图像结构,使用context.getImageData获取图像像…...
【Redis】java客户端(SpringData和jedis)
https://www.oz6.cn/articles/58 https://www.bilibili.com/video/BV1cr4y1671t/?p16 redis官网客户端介绍:https://redis.io/docs/latest/develop/connect/clients/ jedis maven引入依赖 <dependencies><!--引入Jedis依赖--><dependency><…...
大数据安全经典面试题及回答(上)
目录 一、大数据安全的主要挑战及应对策略 二、大数据安全中的“五个V”及其影响 三、在Hadoop集群中实施数据加密的步骤和注意事项 四、在大数据环境中实施访问控制和身份认证 五、大数据环境中数据备份和恢复的策略 六、大数据处理过程中保护用户隐私的策略 七、大数据…...
vi/vim使用命令
你是否在编辑文件时以为键盘坏了,为什么不能删除呢,为什么不能敲代码呢,当你初识vi,会觉得这个东西设计很难用,这篇教程带你熟练得用上这款经典的工具,当你熟练了这款工具就会真正体会到高效率打码 Vi 是在…...
webpack打包gz文件,nginx开启gzip压缩
wepback配置 webpack4配合"compression-webpack-plugin": "^6.1.2"打包压缩gz chain.plugin("compression").use(new CompressionPlugin({test: /\.js$|\.html$|\.css$/,threshold: 10240, // 超过10KB的压缩deleteOriginalAssets: false,// 保…...
EfficientViT-GazeSAM完整部署指南:在RTX 4070上实现实时注视分割
EfficientViT-GazeSAM完整部署指南:在RTX 4070上实现实时注视分割 【免费下载链接】efficientvit EfficientViT is a new family of vision models for efficient high-resolution vision. 项目地址: https://gitcode.com/gh_mirrors/ef/efficientvit Effici…...
华为交换机-跨Vlan通信的实战配置指南
1. 华为交换机跨VLAN通信的核心原理 第一次接触跨VLAN通信时,我也被那些专业术语搞得一头雾水。直到把整个流程拆解成生活场景,才真正理解其中的奥妙。想象一下,VLAN就像公司里的不同部门,财务部、技术部、市场部各自在独立的办公…...
MoviePy + Pygame实战:给你的游戏加个酷炫开场动画
MoviePy Pygame实战:打造游戏开场动画的完整指南 1. 为什么游戏需要专业级开场动画? 在游戏开发领域,第一印象往往决定了玩家是否会继续探索你的作品。一个精心设计的开场动画能够: 建立游戏世界观:通过视听语言快速传…...
嵌入式系统错误处理机制与实现
嵌入式系统中的错误处理机制深度解析1. 错误概念与分类1.1 错误分类体系在嵌入式系统开发中,错误处理是确保系统可靠性的关键环节。从严重性维度分析,程序错误可分为两类:致命性错误:系统无法执行恢复操作,典型处理方式…...
6表单全链路工程化AI开发体系使用方案
6表单全链路工程化AI开发体系使用方案 一、体系整体概述 核心定位与价值 本方案对应的6个表单,是一套覆盖项目启动→需求收敛→标准前置→开发执行→风险管控→验收闭环全流程的工程化AI人机协同管控体系,核心解决AI辅助开发中「需求模糊→AI输出偏离→反复返工→交付失控」的…...
STM32用KEIL调试总进不了main?可能是printf重定向惹的祸(附完整解决方案)
STM32调试卡在SystemInit?深入解析printf重定向与半主机模式陷阱 调试STM32时遇到程序卡在SystemInit函数而无法进入main函数的情况,往往会让开发者陷入长时间的排查困境。这种现象背后可能隐藏着多种原因,但其中最容易被忽视却又频繁出现的&…...
从“机器会思考”的执念说起,聊聊神经网络到底是个啥(下篇)
一、神经网络的类型:别被名字搞晕,核心就几种 现在叫“神经网络”的东西五花八门,但绝大多数都是从下面这几类衍生出去的。 1. 前馈神经网络(FNN)—— 最朴素的直筒子 数据从输入层进,经过若干隐藏层&am…...
嵌入式WiFi开发 | 基于wireless_tools的交叉编译实战与移植指南
1. 嵌入式WiFi开发入门:为什么需要wireless_tools? 在嵌入式Linux开发中,网络连接能力往往是刚需。想象一下你的智能家居设备需要自动连接路由器,或者工业传感器需要通过WiFi上传数据——这些都离不开可靠的无线网络配置工具。这就…...
技术赋能B端拓客:号码核验行业的破局与价值重塑,氪迹科技法人股东号码筛选系统,阶梯式价格
2026年,B端拓客正式迈入智能内卷时代,“精准获客、降本增效”成为企业突破业绩瓶颈的核心关键词,而号码核验作为拓客流程的前置过滤环节,直接决定了线索质量与人力效能,成为影响拓客投入回报比的关键变量。当前&#x…...
WSL 下 Debian 系统 apt 源切换国内镜像的完整指南
1. 为什么需要切换WSL Debian的apt源? 如果你在Windows Subsystem for Linux(WSL)中安装了Debian系统,可能会遇到软件包下载速度慢的问题。这主要是因为默认的软件源服务器位于国外,网络延迟较高。我刚开始用WSL时&…...
