前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架

作者头像
FB客服
发布2024-03-18 15:44:27
1100
发布2024-03-18 15:44:27
举报
文章被收录于专栏:FreeBufFreeBuf

关于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

工具下载

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

代码语言:javascript
复制
git clone https://github.com/google/oss-fuzz-gen.git
代码语言:javascript
复制

然后使用下列命令创建一个虚拟环境,激活环境后使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:

代码语言:javascript
复制
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身份认证:

代码语言:javascript
复制
gcloud auth login

gcloud auth application-default login

gcloud auth application-default set-quota-project <your-project>

你还需要指定GCP项目和Vertex AI配额:

代码语言:javascript
复制
export CLOUD_ML_PROJECT_ID=<gcp-project-id>

export VERTEX_AI_LOCATIONS=us-west1,us-west4,us-east4,us-central1,northamerica-northeast1
代码语言:javascript
复制

OpenAI

OpenAI的使用需要一个API密钥,获取到之后需要在一个环境变量中设置:

代码语言:javascript
复制
export OPENAI_API_KEY='<your-api-key>'

工具执行

下列命令可以生成并评估一个模糊测试对象,然后执行基准测试:

代码语言:javascript
复制
./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
代码语言:javascript
复制

其中的<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;

可视化结果

代码语言:javascript
复制
代码语言:javascript
复制
================================================================================

*<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>
代码语言:javascript
复制

生成报告

该工具还支持通过一个Web UI来查看结果:

代码语言:javascript
复制
python -m report.web <results-dir> <port>

<results-dir>为--work-dir的目录路径,默认值为./results。执行完成后,直接访问http://localhost:<port> 即可查看。

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

oss-fuzz-gen

https://github.com/google/oss-fuzz-gen

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • oss-fuzz-gen是一款基于LLM的模糊测试对象生成与评估框架,该工具可以帮助广大研究人员使用多种大语言模型(LLM)生成真实场景中的C/C++项目以执行模糊测试。
  • 工具运行流程如下:
  • 广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
  • Vertex AI
    • OpenAI
    • 下列命令可以生成并评估一个模糊测试对象,然后执行基准测试:
      • 可视化结果
        • 生成报告
        • 本项目的开发与发布遵循Apache-2.0开源许可证协议。
        • oss-fuzz-gen:
        • https://github.com/google/oss-fuzz-gen
        相关产品与服务
        腾讯云服务器利旧
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档