oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架
关于oss-fuzz-gen
oss-fuzz-gen是一款基于LLM的模糊测试对象生成与评估框架,该工具可以帮助广大研究人员使用多种大语言模型(LLM)生成真实场景中的C/C++项目以执行模糊测试。

该工具基于Google的OSS-Fuzz平台实现其功能,并对生成的目标执行基准测试。
工具架构
工具运行流程如下:

工具会根据生产环境中的最新数据,使用四个指标来评估生成的模糊测试目标:
1、可操作性;
2、运行时崩溃;
3、运行时覆盖率;
4、与OSS-Fuzz中现有的人工编写的模糊目标相比,运行时行覆盖率存在的差异;
下图显示的是该工具与297个开源项目进行的1300+基准测试结果:

支持的模型
Vertex AI code-bison
Vertex AI code-bison-32k
Gemini Pro
OpenAI GPT-3.5-turbo
OpenAI GPT-4
工具要求
Python 3.11
pip
python3.11-venv
Git
Docker
Google Cloud SDK
c++filt
clang-format
工具下载
广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/google/oss-fuzz-gen.git
然后使用下列命令创建一个虚拟环境,激活环境后使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:
cd oss-fuzz-genpython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
LLM访问
Vertex AI
访问Vertex AI模型需要一个启用了Vertex AI的Google云项目(GCP)。
然后完成GCP身份认证:
gcloud auth logingcloud auth application-default logingcloud auth application-default set-quota-project <your-project>
你还需要指定GCP项目和Vertex AI配额:
export CLOUD_ML_PROJECT_ID=<gcp-project-id>export VERTEX_AI_LOCATIONS=us-west1,us-west4,us-east4,us-central1,northamerica-northeast1
OpenAI
OpenAI的使用需要一个API密钥,获取到之后需要在一个环境变量中设置:
export OPENAI_API_KEY='<your-api-key>'
工具执行
下列命令可以生成并评估一个模糊测试对象,然后执行基准测试:
./run_all_experiments.py \--model=<model-name> \--benchmarks-directory='./benchmark-sets/comparison' \[--ai-binary=<llm-access-binary>] \[--template-directory=prompts/custom_template] \[--work-dir=results-dir][...]# E.g., generate fuzz targets for TinyXML-2 with default template and fuzz for 30 seconds.# ./run_all_experiments.py -y ./benchmark-sets/comparison/tinyxml2.yaml
其中的<model-name>可以是下列参数:
1、Vertex AI中Code Bison模型的vertex_ai_code-bison或vertex_ai_code-bison-32k;
2、Vertex AI中Gemini Pro的vertex_ai_gemini-pro;
3、OpenAI的gpt-3.5-turbo或gtp-4;
可视化结果
================================================================================*<project-name>, <function-name>*build success rate: <build-rate>, crash rate: <crash-rate>, max coverage: <max-coverage>, max line coverage diff: <max-coverage-diff>max coverage sample: <results-dir>/<benchmark-dir>/fixed_targets/<LLM-generated-fuzz-target>max coverage diff sample: <results-dir>/<benchmark-dir>/fixed_targets/<LLM-generated-fuzz-target>
生成报告
该工具还支持通过一个Web UI来查看结果:
python -m report.web <results-dir> <port>
<results-dir>为--work-dir的目录路径,默认值为./results。执行完成后,直接访问http://localhost:<port> 即可查看。
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可证协议。
项目地址
oss-fuzz-gen:【GitHub传送门】
参考资料
GitHub - google/oss-fuzz: OSS-Fuzz - continuous fuzzing for open source software.
https://github.com/google/oss-fuzz-gen/blob/main/benchmark-sets/all
https://cloud.google.com/vertex-ai/docs/start/cloud-environment
https://cloud.google.com/resource-manager/docs/creating-managing-projects#console
相关文章:

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架
关于oss-fuzz-gen oss-fuzz-gen是一款基于LLM的模糊测试对象生成与评估框架,该工具可以帮助广大研究人员使用多种大语言模型(LLM)生成真实场景中的C/C项目以执行模糊测试。 该工具基于Google的OSS-Fuzz平台实现其功能,并对生成的…...

深度神经网络 基本知识 记录
资料:https://www.bilibili.com/video/BV1K94y1Z7wn/?spm_id_from333.337.search-card.all.click&vd_source14a476de9132ba6b2c3cbc2221750b99 计划:3~4天 杂 人工智能包括ML,ML包括DL机器学习需要人工大量参与,DL模拟人的…...

基于Springboot免费搭载轻量级阿里云OSS数据存储库(将本地文本、照片、视频、音频等上传云服务保存)
一、注册阿里云账户 打开https://www.aliyun.com/,申请阿里云账户并完成实名认证(个人)。这种情况就是完成了: 二、开通OSS服务 点击立即开通即可。 三、创建Bucket 申请id和secert: 进去创建一个Accesskey就会出现以…...

RK3568 Android12 适配抖音 各大APP
RK3568 Android12 适配抖音 各大APP SOC RK3568 system:Android 12 平台要适配抖音和各大APP 平台首先打开抖音发现摄像头预览尺寸不对只存在右上角,我将抖音APP装在手机上预览,发现是全屏 一开始浏览各大博客 给出的解决方法是修改framework 设置为全屏显示: framewo…...

[渗透教程]-022-内网穿透的高性能的反向代理应用
frp 简介 frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 项目地址 https://github.com/fatedier/frp安装 linux 配置方式见如下链接🔗 frp安装配置…...

【计算机网络】深度学习HTTPS协议
💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【计算机网络】深度学习HTTPS协议 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 一:HTTPS是什么二:HTTPS的工作过程三:对称加密四:非对称加密五:中间人攻击1…...

C盘新建的文件夹内需要管理员权限才能新建和删除解决问题记录
命令行输入命令gpedit.msc 如果执行成功那么直接看第二步 如果出现不存在此文件 那么用记事本将一以下代码粘贴进去,后缀命名为cmd。文件名无所谓,双击运行 echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-Gr…...

2024年【道路运输企业安全生产管理人员】考试报名及道路运输企业安全生产管理人员免费试题
题库来源:安全生产模拟考试一点通公众号小程序 道路运输企业安全生产管理人员考试报名参考答案及道路运输企业安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及道路运输企业安全生产管理人员操作证已考过的学员汇总,相对有效帮助道路运…...

四面体单元悬臂梁的Matlab有限元编程 | 实体单元 | Matlab源码 | 理论文本
专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…...

BurpSuite2024.2.1
1.更新介绍 此版本引入了特定的API 扫描功能,并将 Bambdas 合并到 Logger 捕获过滤器中。我们还改进了 DOM Invader 和 Burp Suite 导航记录器的功能,并进行了许多其他改进和错误修复。 API扫描 我们引入了特定的 API 扫描功能。您现在可以上传 OpenAP…...

【投稿优惠|火热征稿】2024年计算机技术与自动化发展国际会议 (ICCTAD 2024)
2024年计算机技术与自动化发展国际会议 (ICCTAD 2024) 2024 International Conference on Computer Technology and Automation Development (ICCTAD 2024) 【会议简介】 2024年计算机技术与自动化发展国际会议( ICCTAD 2024)将在中国武汉盛大开幕!这是一场在自动化…...

LeetCode.232. 用栈实现队列
题目 232. 用栈实现队列 分析 先了解一下栈和队列的特点: 栈:先进后出队列:先进先出 想用栈实现队列的特点,就需要使用两个栈。因为两个栈就可以将列表倒序。 假设第一个栈 s1 [1,2,3],第二个栈 s2 [] 。若循环…...

SpringBoot集成ElasticSearch(ES)
ElasticSearch环境搭建 采用docker-compose搭建,具体配置如下: version: 3# 网桥es -> 方便相互通讯 networks:es:services:elasticsearch:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/elasticsearch:7.14.1 # 原镜像elasticsearch:7.…...

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示应用
基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍TM1638键盘数码管模块概述TM1638键盘数码管…...

Qt插件之输入法插件的构建和使用(一)
文章目录 输入法概述输入法插件实现及调用输入键盘搭建定义样式自定义按钮实现自定义可拖动标签数字符号键盘候选显示控件滑动控件手绘输入控件输入法概述 常见的输入法有三种形式: 1.系统级输入法 2.普通程序输入法 3.程序自带的输入法 系统级输入法就是咱们通常意义上的输入…...

慢SQL调优-索引详解
Mysql 慢SQL调优-索引详解 前言一、慢查询日志设置二、explain查看执行计划三、索引失效四、索引操作五、profile 分析执行耗时 前言 最新的 Java 面试题,技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linu…...

知乎语音下载(mediadown)
知乎语音下载(mediadown) 一、介绍 知乎语音下载,能够帮助你下载知乎知学堂课程中的语音和视频。它不能帮你越过会员权限,下载你没权限访问的语音和视频。 二、下载地址 本站下载:知乎语音下载(mediadown) 百度网盘下载:知乎语音下载(mediadown) 三、安装教程 …...

2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示:新入职如何快速配置 IntelliJ IDEA?
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

Linux 下安装 Git
Linux 下安装 Git 1 参考2 安装2.1 通过 yum方式安装(不推荐)2.2 通过源码编译安装(推荐) 3 配置SSH 1 参考 Linux 下安装 Git 2 安装 2.1 通过 yum方式安装(不推荐) 在Linux上安装git仅需一行命令即可…...

Manomotion 实现AR手势互动-解决手势无效的问题
之前就玩过 Manomotion ,现在有新需求,重新接入发现不能用了,不管什么办法,都识别不了手势,我记得当初是直接调用就可以的。 经过研究发现,新版本SDK改了写法。下边就写一下新版本的调用,并且实…...

第十五届蓝桥杯第三期模拟赛(Java)
1. 【问题描述】 请问 2023 有多少个约数?即有多少个正整数,使得 2023 是这个正整数的整数倍。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,…...

vscode中eslint插件不生效问题
case: 最近使用webpack打包js资源中使用到了VS Code中的eslint插件辅助eslint plugin对代码进行校验,在.eslintrc.js文件中以及webpack.config.js配置好后, 在控制台运行npx webpack可以读取到eslint plugin的检测结果 一、eslint插件读取项目中.eslint…...

Go程序是如何编译并运行起来的(图文详解)
Go程序是如何编译的 从hello RdrB1te开始 package main import "fmt" func main() { fmt.Println("hello RdrB1te") }不实际编译它,只输出它的编译过程: go build -n简单的编译过程分析: 上面的过程确认了两个…...

程序员如何选择职业赛道
程序员的职业赛道就像是一座迷宫,有前端的美丽花园,后端的黑暗洞穴,还有数据科学的神秘密室。你准备好探索这个充满挑战和机遇的迷宫了吗?快来了解如何选择职业赛道吧! 方向一:自我评估与兴趣探索 选择适合…...

GOWIN软件使用
1、管脚复用 根据自己需求把复用管脚勾选上,管脚当普通管脚使用 JTAG设置成普通管脚,下载程序时候JTAGEN管脚需要上拉高电平(可以在下载器线上上拉个电阻,下载后把下载线拔走,否则JTAG管脚无法使用,管脚充…...

Ajax (1)
什么是Ajax: 浏览器与服务器进行数据通讯的技术,动态数据交互 axios库地址: <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> 如何使用呢? 我们现有个感性的认识 <scr…...

Python基础语法:基本数据类型(数字类型和布尔类型)
在我们的日常生活中,经常会用到数字,所以数字(numbers)是 pytthon 中的一个基本数据类型。在 python 里面啊,numbers 这种数据类型是一个大类,在 numbers 这个大类下面有整型、浮点型(小数&…...

springboot 下载 Excel 文件的 Controller 层案例
环境 pom.xml 中 springboot版本: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.15</version></parent>Excel 文件依赖: &l…...

RabbitMQ队列
RabbitMQ队列 1、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到broker或者直接到queue里了,consumer 从 queue取出消息进行消…...

Day12:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
目录 开源-CMS指纹识别源码获取方式 闭源-习惯&配置&特性等获取方式 闭源-托管资产平台资源搜索监控 思维导图 章节点 Web:语言/CMS/中间件/数据库/系统/WAF等 系统:操作系统/端口服务/网络环境/防火墙等 应用:APP对象/API接口/微…...