当前位置: 首页 > news >正文

【论文速读】| 大语言模型引导的协议模糊测试

图片

本次分享论文为:Large Language Model guided Protocol Fuzzing

基本信息

原文作者:Ruijie Meng, Martin Mirchev, Marcel Böhme, Abhik Roychoudhury

作者单位:新加坡国立大学,MPI-SP,莫纳什大学

关键词:大语言模型,协议模糊测试,网络安全

原文链接:

https://dx.doi.org/10.14722/ndss.2024.24556

开源代码:

https://github.com/ChatAFLndss/ChatAFL

论文要点

论文简介:研究团队提出了一种由大语言模型(LLM)引导的协议模糊测试的新颖方法,旨在提升网络协议安全测试的效率和成效。这种方法通过使用预先训练好的大语言模型来提取协议的机器可读信息,以指导模糊测试的过程。这不仅显著增加了状态和代码的覆盖率,而且还发现了多个之前未被发现的漏洞。

图片

研究背景:作为互联网核心枢纽的网络协议,对于维护整个网络体系的安全性发挥着至关重要的作用。但是,网络协议的自然语言非正式定义限制了自动化测试的有效性与效率。

研究贡献:

1.开发了一种新的协议模糊测试方法,通过整合大语言模型,利用这些模型对协议深入的理解来生成测试用例;

2.创建并演示了一个原型工具ChatAFL,该工具证明了本方法在具体网络协议测试中的有效性;

3.与其他技术(例如AFLNET和NSFUZZ)相比,该方法在提高状态和代码覆盖率方面取得显著进步,并且能够发现更多之前未知的漏洞。

引言

本文探讨了开发自动化漏洞识别工具对于网络协议实现的必要性及其重要性。研究者认为,虽然协议实现在软件系统中极易遭受攻击,但由于缺少机器可解析的规范,自动化产生有效测试用例面临挑战。该研究通过应用预训练的大语言模型(例如ChatGPT)来抽取协议的机器可解析信息,从而指导模糊测试流程,以提升测试效率和成效。

背景知识

本节讨论了协议模糊测试的基本原理、面临的挑战及大语言模型(LLM)应对这些挑战的潜力。通过与LLM系统互动,借助其理解和生成自然语言的能力,可以提升模糊测试的覆盖范围和漏洞发现效率。

论文方法

理论基础:深入探讨了大语言模型的功能,尤其是它们在解析复杂协议规范和产生遵循协议要求的消息方面的能力。

实现方法:

1.语法引导变异:与LLM互动以提取协议消息的机器可解析语法,并以此来引导测试消息的变异;

2.丰富测试种子:利用LLM扩展测试种子消息序列的多样性与有效性;

3.突破测试覆盖率瓶颈:当传统方法无法进一步提升覆盖率时,利用LLM产生能够触发新状态转移的消息。

实验

a.实验设计:

在若干真实世界协议(如RTSP和FTP)上设置实验环境,并将ChatAFL与现有技术进行比较

图片

b.实验结果:

比较显示,ChatAFL在状态和代码覆盖率上显著优于现有技术(如AFLNET和NSFUZZ),且成功识别了多项先前未知的漏洞。

图片

论文结论

本研究证实,融合大语言模型的协议模糊测试方法显著提升了网络协议安全测试的效率和成效。借助LLM的高级功能,可以更深入地理解和测试协议实现,识别潜在安全漏洞。此外,本方法的成功应用为未来利用AI技术提升软件测试效果提供了宝贵的借鉴。

原作者:论文解读智能体

润色:Fancy

校对:小椰风

图片

相关文章:

  • 【Java探索之旅】运算符解析 算术运算符,关系运算符
  • 我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
  • 【完美实现】VITE + VUE3 + SVG图片解析+element-plus开发环境初始化(基于macos)
  • 面试宝典-【redis】
  • ECharts饼图图例消失踩的坑
  • 电玩城游戏大厅计时软件怎么用,佳易王计时计费管理系统软件定时语音提醒操作教程
  • mineadmin 快速安装部署(docker环境)
  • Go Zero微服务个人探究之路(十六)回顾api服务和rpc服务的本质
  • Avalonia之ListBox模版设置
  • SpringBoot 过滤器和拦截器的区别
  • 【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】
  • 修复Jenkins fossa扫描的时候报错的问题
  • PostgreSQL数据优化——死元组清理
  • 前端框架的发展史可以追溯到早期的静态网页时代
  • 寄存器(内存访问)
  • AWS实战 - 利用IAM对S3做访问控制
  • Git学习与使用心得(1)—— 初始化
  • Java Agent 学习笔记
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Linux各目录及每个目录的详细介绍
  • ng6--错误信息小结(持续更新)
  • php面试题 汇集2
  • Python 基础起步 (十) 什么叫函数?
  • React-Native - 收藏集 - 掘金
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 初探 Vue 生命周期和钩子函数
  • 你不可错过的前端面试题(一)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何实现 font-size 的响应式
  • 删除表内多余的重复数据
  • 思维导图—你不知道的JavaScript中卷
  • 我是如何设计 Upload 上传组件的
  • 无服务器化是企业 IT 架构的未来吗?
  • 小试R空间处理新库sf
  • ​Java并发新构件之Exchanger
  • !!Dom4j 学习笔记
  • #if和#ifdef区别
  • $ git push -u origin master 推送到远程库出错
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2015)JS ES6 必知的十个 特性
  • (6)STL算法之转换
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (三)c52学习之旅-点亮LED灯
  • (十一)手动添加用户和文件的特殊权限
  • (四)Controller接口控制器详解(三)
  • (四)图像的%2线性拉伸
  • (转)Oracle存储过程编写经验和优化措施
  • (转)VC++中ondraw在什么时候调用的
  • .NET BackgroundWorker
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件