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

这篇具有很好参考价值的文章主要介绍了oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于oss-fuzz-gen

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

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架,工具,安全框架,模糊测试,人工智能,安全评估

该工具基于Google的OSS-Fuzz平台实现其功能,并对生成的目标执行基准测试。

工具架构

工具运行流程如下:

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架,工具,安全框架,模糊测试,人工智能,安全评估

工具会根据生产环境中的最新数据,使用四个指标来评估生成的模糊测试目标:

1、可操作性;

2、运行时崩溃;

3、运行时覆盖率;

4、与OSS-Fuzz中现有的人工编写的模糊目标相比,运行时行覆盖率存在的差异;

下图显示的是该工具与297个开源项目进行的1300+基准测试结果:

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架,工具,安全框架,模糊测试,人工智能,安全评估

支持的模型

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-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> 即可查看。

许可证协议

本项目的开发与发布遵循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文章来源地址https://www.toymoban.com/news/detail-838715.html

到了这里,关于oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 保姆级教程!教你打造自己的AI孙燕姿;全程使用AI工具设计一款桌游;搭建基于LLM的客服系统的实践 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 王咏刚,创新工场CTO,技术撰稿人,有数个知名出版作品。他结合自己在AI领域投资、深度孵化和创业的丰富经验,分享了自己对AI技术最新应用场景的思考。 第一部分围绕GPT等通用大语言模型,

    2024年02月06日
    浏览(53)
  • 小研究 - 基于解析树的 Java Web 灰盒模糊测试(二)

    由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建

    2024年02月14日
    浏览(39)
  • 小研究 - 基于解析树的 Java Web 灰盒模糊测试(一)

    由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建

    2024年02月14日
    浏览(39)
  • 基于Flutter的一款摸鱼APP的UI自动化测试实践

    最近想在全网找一个好用的摸鱼app,为了上班时摸摸鱼,毕竟一直摸鱼一直爽嘛。对比了网上几款摸鱼软件,最终选择这款应用——摸鱼kik。以往所用的RSS订阅在摸鱼kik中发挥到了极致,我们既可以订阅感兴趣的内容,也可以“二次聚合”我们想要的信息。 给大家截了几张图

    2023年04月11日
    浏览(41)
  • Galah:一款功能强大的LLM驱动型OpenAI Web蜜罐系统

    Galah是一款功能强大的Web蜜罐,该工具由LLM大语言模型驱动,基于OpenAI API实现其功能。 很多传统的蜜罐系统会模拟一种包含了大量网络应用程序的网络系统,但这种方法非常繁琐,而且有其固有的局限性。Galah则不同,Galah使用了完全不同的技术路线,利用了LLM大语言模型作

    2024年02月19日
    浏览(65)
  • 模糊测试面面观 | 模糊测试工具知多少

    自1988年威斯康星大学的Barton Miller首次提出模糊测试这一概念以来,模糊测试领域经历了持续长久发展。模糊测试作为一种软件测试方法,旨在通过向程序输入模糊、随机、异常的数据,探测和发现潜在的漏洞和错误。这种方法备受安全研究人员的青睐。随着时间的推移,这

    2024年02月09日
    浏览(39)
  • 聊聊模糊测试,以及几种模糊测试工具的介绍!

    以下为作者观点: 在当今的数字环境中,漏洞成为攻击者利用系统漏洞的通道,对网络安全构成重大威胁。这些漏洞可能存在于硬件、软件、协议实施或系统安全策略中,允许未经授权的访问并破坏系统的完整性。 根据 \\\"常见漏洞与暴露\\\"(Common Vulnerabilities and Exposures,CVE)

    2024年02月04日
    浏览(79)
  • 模糊测试面面观 | 模糊测试是如何发现异常情况的?

    协议模糊测试是一种用于评估通信协议、文件格式和API实现系统安全性和稳定性的关键技术。在模糊测试过程中,监视器扮演着关键角色,它们能够捕获异常情况、错误响应、资源利用等,为测试人员提供有价值的信息,有助于发现潜在漏洞和问题。本文将通过展开探讨监视

    2024年02月10日
    浏览(34)
  • 智能网联汽车网络安全测试:渗透测试,模糊测试详细讲解

    车内网络系统架构 随着智能网联汽车电子系统的复杂化,电子电气架构( Electrical/Electronic Architecture, EEA )由分布式向集中式架构演进,如图 2.1 所示。 在汽车 EEA 演进的同时,为了满足不同复杂程度的汽车功能对于通信性能的需求,车内总线协议也在不断发展。CAN 总线协

    2024年01月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包