【论文速读】|大语言模型是零样本模糊测试器:通过大语言模型对深度学习库进行模糊测试

图片

本次分享论文:Large Language Models are Zero-Shot Fuzzers: Fuzzing Deep-Learning Libraries via Large Language Models

基本信息

原文作者:Yinlin Deng, Chunqiu Steven Xia, Haoran Peng, Chenyuan Yang, Lingming Zhang

作者单位:University of Illinois at Urbana-Champaign, University of Science and Technology of China

关键词:大语言模型, 模糊测试, 深度学习库, 缺陷检测

原文链接:https://arxiv.org/pdf/2212.14834

开源代码:暂无

论文要点

论文简介:研究团队开发了一种名为TitanFuzz的创新模糊测试方法,利用大语言模型(LLMs)自动生成和修改程序输入以测试深度学习库。该方法首先生成程序的初始种子,再应用进化算法逐步产生新的代码片段,从而显著提高了测试的深度和广度。TitanFuzz不仅提高了TensorFlow和PyTorch库的API及代码覆盖率,还成功检测出了多个之前未知的软件缺陷,显著增强了深度学习库的安全性和可靠性。

研究目的:本研究旨在解决传统模糊测试技术应用于深度学习库时的局限性,例如效率低下和覆盖范围不足。本文通过开发名为TitanFuzz的工具,利用大语言模型(LLM)生成和变异程序输入,从而增强了测试的广度和深度。这一方法有效地提升了深度学习库的缺陷检测能力,实现了对复杂API和代码的更全面覆盖。

研究贡献:

1. 创新应用:首次将大语言模型(LLMs)应用于深度学习库的模糊测试中,这一实践展示了现代大语言模型在自动化生成和变异模糊测试方面的广泛潜力。该方法可扩展至多种软件系统的测试,例如编译器和数据库系统。

2. 技术实现:我们开发了一个名为TitanFuzz的全自动模糊测试工具。该工具整合了生成型LLM(Codex)、填充型LLM(InCoder)和进化算法,不仅能生成高质量的种子输入,还能指导生成独特的库API调用和多样化的程序代码。

3. 系统评估:我们对PyTorch和TensorFlow进行了广泛的评估。TitanFuzz在API和代码覆盖率上分别提高了24.09%和91.11%,以及50.84%和30.38%,成功地检测到了65个错误,其中41个是之前未知的。这一成果突显了LLMs在评估深度学习库安全性中的关键作用。

引言

随着深度学习库在众多关键领域的广泛应用,确保其稳定性和安全性显得尤为重要。然而,传统的模糊测试方法在应对这些库的高API复杂性和多样化输入时表现不佳。为此,我们引入了大语言模型(LLMs)作为测试工具,并开发了名为TitanFuzz的新型模糊测试方案。这一方案显著提高了代码和API覆盖率,有效增强了深度学习库缺陷的检测能力。此外,该方法不仅提升了测试效率,还扩大了模糊测试的适用范围。

研究背景

深度学习库,例如TensorFlow和PyTorch,已在图像处理和自然语言处理等领域中发挥核心作用。这些库的复杂性和普遍应用可能使内部错误导致严重后果。传统的模糊测试技术难以满足深度学习库对API和输入的复杂性要求,常因无法提供有效输入而未能覆盖复杂的代码路径,导致测试不全面。开发与这些高级功能匹配的新型测试方法,对提升软件的可靠性和安全性至关重要。

研究方法

在本研究中,我们开发了名为TitanFuzz的工具,该工具结合大语言模型(LLMs)来生成和优化程序输入。首先,利用生成型LLM(Codex)创建初步的种子程序;其次,通过结合填充型LLM(InCoder)和进化算法,指导程序输入的进一步变异和优化。这种方法不仅显著提升了代码和API的覆盖率,而且增强了对复杂深度学习库API使用情况的深入探索,有效地检测出潜在缺陷。

图片

研究评估

为了评估TitanFuzz的性能,我们对两个主流深度学习库——TensorFlow和PyTorch——进行了全面的测试。通过将TitanFuzz与其他先进的模糊测试工具进行比较,结果显示在API和代码覆盖率方面TitanFuzz均有显著提升。具体而言,与传统工具相比,TitanFuzz在TensorFlow和PyTorch的API覆盖率分别提高了24.09%和91.11%,代码覆盖率分别提升了50.84%和30.38%。此外,TitanFuzz还成功检测到了65个错误,其中包括41个之前未发现的新错误,从而进一步证明了该方法的有效性和实用性。

图片

结果分析

TitanFuzz在深度学习库的模糊测试中展现了卓越性能,特别是在增强API和代码覆盖率方面。通过自动生成和优化测试代码,这一工具不仅扩大了测试的范围和深度,也高效地揭示了潜在的软件缺陷。测试结果表明,TitanFuzz在侦测新错误方面表现突出,发现的41个未知错误突显了其在实际应用中的关键价值。此外,这些成果展示了大语言模型在提升软件测试的质量与效率方面的巨大潜力。

论文结论

TitanFuzz的研究成果不仅提升了深度学习库模糊测试的效率和有效性,还展示了大语言模型(LLMs)在软件测试领域的广泛应用潜力。未来的研究可以探讨将此方法扩展到其他类型的软件库和系统,从而进一步拓宽其应用领域和增强其影响力。

原作者:论文解读智能体

校对:小椰风

图片

图片

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+vant项目0-1快速发布到--钉钉应用

uniapp开发笔记----vue开发项目配置钉钉应用 一、 vuevant开发项目1. 自定义vuevant项目或者已经有的旧项目1. 自定义vuevant项目1. 创建vue项目2. 安装依赖3. 引入所有组件4. 使用一个组件/效果和代码如下: 2. git官网仓库,直接拉默认dome代码3. 打包项…

CTF如何学习?

CTF如何学习?打CTF有什么用 CTF本身有几个常见的领域 MISC WEB [逆向 密码学](https://www.zhihu.com/search?q逆向 密码学&search_sourceEntity&hybrid_search_sourceEntity&hybrid_search_extra{“sourceType”%3A"answer"%2C"sourc…

Hadoop 3.4.0+HBase2.5.8+ZooKeeper3.8.4+Hive+Sqoop 分布式高可用集群部署安装 大数据系列二

创建服务器,参考 虚拟机创建服务器 节点名字节点IP系统版本master11192.168.50.11centos 8.5slave12192.168.50.12centos 8.5slave13192.168.50.13centos 8.5 1 下载组件 Hadoop:官网地址 Hbase:官网地址 ZooKeeper:官网下载 Hive:官网下载 Sqoop:官网下载 为方便同学…

TypeScript学习日志-第二十六天(weakMap,weakSet,set,map)

weakMap,weakSet,set,map 一、set set 的基本用法如下: 二、map map 与 set 的 区别 就是 map 的 key 可以是引用类型 object array , map 的添加时使用 set 三、weakmap weakset weakmap和weakset 都是弱项 弱引用 其键必须是引用类型,不能是其它类…

弹幕游戏-压力测试 Python-Locust模拟送礼物

Hey,读者们!今天给大家带来一个Python性能测试的新玩法——使用Locust模拟发送礼物。是不是听起来就很酷?😎 🎯目标 想象一下,在直播平台上,你希望测试某个直播间的礼物发送功能。那么&#x…

有一个21年的前端vue项目,死活安不上依赖

在公司开发的时候遇到的一个很玄幻的问题,这个项目是21年开发的,现在我是24年中途二开增加新功能 这个项目经过多人之手,现在已经出现了问题------项目依赖安不上,我能启动完全是因为在23年的时候写这个项目的时候将依赖费九牛二虎之力下载好后打成了压缩包发给另外一个安不上依…

Qt学习笔记1.3.3QtCore-隐式共享

文章目录 概述隐式共享细节类列表 Qt中的许多c类使用隐式数据共享来最大化资源使用并最小化复制。隐式共享类作为参数传递时既安全又高效,因为只传递指向数据的指针,并且只有当函数写入数据时才会复制数据,即写时复制(copy-on-write)。 概述 …

【Node.js】事件循环

Node.js 中的事件循环是基于单线程的异步非阻塞模型。它是 Node.js 的核心机制,用于处理非阻塞的 I/O 操作和异步事件。 1. Node.js 事件循环介绍 Node.js 的事件循环是一个 Event Loop,通过异步回调函数的方式实现非阻塞的处理。事件循环会在主线程上…

信创替代后的设备处置

信创替代后的设备处置 在信创项目中替换下来的设备,如果从技术层面讲还具有较高的应用价值,如何处置呢? 一、数据处置 信创适配完成后,这些被替换下来的服务器上有大量的数据(包括结构化和非结构化)&…

NSSCTF中的1zjs、作业管理系统、finalrce、websign、简单包含、Http pro max plus

目录 [LitCTF 2023]1zjs [LitCTF 2023]作业管理系统 [SWPUCTF 2021 新生赛]finalrce exec()函数:php中exec介绍及使用_php exec-CSDN博客​​​​​​ 资料参考:RCE(远程命令执行)绕过总结_rce绕过-CSDN博客 [UUCTF 2022 新生赛]websign [鹏城杯 …

鱼哥好书分享活动第22期:《数字政府网络安全合规性建设指南》解锁数字政府网络安全新篇章

鱼哥好书分享活动第22期:《《数字政府网络安全合规性建设指南》》解锁数字政府网络安全新篇章 阅读对象:书籍目录:了解更多:赠书抽奖规则: 当今时代,数据已成为新型生产要素,不仅是个人、企业乃至国家的重要…

29、Qt使用上下文菜单(右键菜单)

说明:使用四种方式实现鼠标右击界面,显示出菜单,菜单上有两个动作,选择两个动作,分别打印“111”和“222”。 界面样式如下: 一、方法1:重写鼠标事件mousePressEvent .h中的代码如下&#xff…

ip addr 或 ip address 是 Linux 系统中的一个命令,用于显示或修改网络接口的地址信息。

ip addr 或 ip address 是 Linux 系统中的一个命令,用于显示或修改网络接口的地址信息。这个命令是 iproute2 软件包的一部分,通常在现代 Linux 发行版中都是预装的。 当你运行 ip addr 或 ip address 命令时,你会看到系统上所有网络接口的地…

不踩雷k8s部署

一、前提 服务器规划: 服务器要求: 建议最小硬件配置: 2核CPU、2G内存、20G硬盘。服务器可以访问互联网,能够联网下载镜像。时间进行同步!!! 软件环境: 软件版本操作系统> CentOS 7.5Docker最新 26.1.1K8Sv1.28.1…

react Effect副作用 - 避免滥用Effect

react Effect副作用 - 避免滥用Effect react Effect副作用基础概率什么是纯函数? 什么是副作用函数?纯函数副作用函数 什么时候使用Effect如何使用Effect 避免滥用Effect根据 props 或 state 来更新 state当 props 变化时重置所有 state将数据传递给父组件获取异步数据 react…

关于配置深度学习虚拟环境(conda)的一些概念和常用命令

一、概念 下面介绍显卡驱动(例NVIDIA GeForce)、CUDA、cuDNN 的概念和联系。 显卡驱动 显卡驱动是封装成软件的程序,硬件厂商根据操作系统编写的配置文件。安装成功后成为操作系统中的一小块代码。它是硬件所对应的软件,计算机有…

QT学习(1)——创建第一个QT程序,信号和槽,打开关闭窗口的案例

目录 引出规范和帮助文档创建第一个Qt程序对象树概念信号signal槽slot自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 打开关闭窗口案例 总结 引出 QT学习(1&#…

Android 集成Bugly完成线上的异常Exception收集及处理

文章目录 (一)添加产品APP(二)集成SDK(三)参数配置权限混淆 (四)初始化 (一)添加产品APP 一)在个人头像 -> 我的头像 -> 新建产品 二&…

如何在 Mac 上恢复已删除的文件

点击“删除”后立即后悔?不用担心。我们的教程介绍了如何恢复已删除的 Mac 文件、电子邮件、iTunes 音乐等,即使您没有 Time Machine 备份并且无需支付软件费用。 在 macOS 中丢失文件可能会非常痛苦,如果您是点击删除的人,情况会…

关于vs2019 c++ STL 中容器的迭代器的 -> 运算符的使用,以 list 双向链表为例

(1)如下的结构体 A ,若有指针 p new A() ;则可以使用 p->m , p->n 解引用运算符。 struct A { int m ; int n; } 对于 STL 中提供的迭代器,提供了类似于指针的功能。对迭代器也可以使用 -> 运算…