关于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
工具下载
广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/google/oss-fuzz-gen.git
然后使用下列命令创建一个虚拟环境,激活环境后使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:
cd oss-fuzz-gen python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
LLM访问
Vertex AI
访问Vertex AI模型需要一个启用了Vertex AI的Google云项目(GCP)。
然后完成GCP身份认证:
gcloud auth login gcloud auth application-default login gcloud 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> 即可查看。
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取
读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)
同时每个成长路线对应的板块都有配套的视频提供:
大厂面试题
视频配套资料&国内外网安书籍、文档
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。