[论文阅读] 人工智能 | 用大语言模型抓虫:如何让网络协议实现与RFC规范对齐

news2025/6/7 15:14:43

用大语言模型抓虫:如何让网络协议实现与RFC规范对齐?

论文信息

arXiv:2506.01249
SysLLMatic: Large Language Models are Software System Optimizers
Huiyun Peng, Arjun Gupte, Ryan Hasler, Nicholas John Eliopoulos, Chien-Chou Ho, Rishi Mantri, Leo Deng, Konstantin Läufer, George K. Thiruvathukal, James C. Davis
Subjects: Software Engineering (cs.SE); Performance (cs.PF)

一、研究背景:传统方法抓不住的“语义虫子”

想象你是一位厨师,手里拿着一本菜谱(RFC文档)准备做菜(开发网络协议)。菜谱里写着“煎蛋时要先热锅再放油”,但你的代码可能漏了“热锅”这一步,导致煎蛋粘锅——这就是功能漏洞:代码实现与规范不一致,但不会立刻报错,可能引发路由故障、认证绕过等隐患。

传统抓虫方法的困境

  • 模糊测试(Fuzzing):像往锅里乱撒调料,通过大量随机输入触发崩溃。但功能漏洞可能不崩溃,比如漏做“热锅”步骤,程序仍能运行,只是结果不对。
  • 差异分析:对比多个厨师的菜谱执行结果,但依赖存在多个高质量实现,且无法直接验证是否符合原始菜谱。
  • 形式验证:用数学公式严格证明菜谱执行正确,但需要把菜谱翻译成复杂的形式语言,耗时费力,现实中很少有人这么做。

为什么需要LLM?

RFC文档是用自然语言写的“菜谱”,代码是“做菜步骤”,两者之间的语义鸿沟难以跨越。比如RFC说“当失去可行路由时,需发送序列号请求”,代码中可能分散在多个函数里,传统工具无法理解自然语言描述的逻辑,而LLM擅长理解文本和代码语义。

二、主要贡献:给代码做“语义体检”的LLM侦探

1. 首个LLM驱动的协议漏洞检测工具:RFCSCAN

  • 准确率高:在6个真实协议中发现47个功能漏洞,准确率81.9%,其中20个已被开发者确认或修复。
  • 碾压传统基线:对比Copilot+Claude/GPT-4,RFCSCAN的误报率更低(18.1% vs. 77.5%),找到的漏洞更多。

2. 让漏洞无所遁形的“两步走”策略

  • 第一步:给代码编一本“语义字典”(索引代理)
    把代码按文件、函数分层,用LLM生成自然语言摘要,比如“route.c:管理路由表;route_lost函数:处理路由丢失”。就像给图书馆的每本书写目录,方便快速定位。
  • 第二步:按图索骥找漏洞(检测代理)
    根据RFC描述,先用“语义字典”定位相关函数,再逐步检索其调用的函数(如找“route_lost”调用的“find_best_route”),对比代码逻辑是否符合规范,像侦探根据线索逐步排查。

三、创新点:告别“暴力搜索”,让LLM更聪明地工作

1. 分层语义索引:从“大海捞针”到“按图索骥”

传统方法扫描整个代码库,如同在大海里找一根针。RFCSCAN先给代码建立“语义索引”,比如通过函数名和LLM摘要快速定位到“路由丢失处理”相关的函数,缩小搜索范围。

2. 按需检索:缺什么信息,就查什么信息

检测时,如果当前函数的信息不足以判断是否符合RFC,LLM会自动调用工具查询:

  • Query(name):查变量/结构体定义(如“unfeasible路由的定义”);
  • Query_Callee(call):查被调用函数(如“route_lost调用了find_best_route,它的逻辑是什么?”);
  • Query_Caller(fun):查调用者(如“哪些函数会触发route_lost?”)。

3. 自我批判:减少LLM“幻觉”

LLM可能“脑补”不存在的漏洞,RFCSCAN通过“自我批判”机制,用检索到的真实代码验证推理结果,将误报率从64.3%降至18.1%。

四、核心方法:像人类专家一样审计代码

1. 索引代理:构建代码的“语义地图”

  • 函数级:用LLM生成每个函数的一句话摘要,如“send_update_resend:发送路由更新消息”。
  • 文件级:汇总函数摘要,生成文件功能描述,如“route.c:负责路由表维护和路由丢失处理”。
  • 目录级:汇总文件摘要,描述模块功能,如“babeld/目录:实现Babel路由协议核心逻辑”。

2. 检测代理:四步揪出漏洞

以Babel协议的“避免路由饥饿”漏洞为例:

  1. 定位:根据RFC“丢失可行路由时发送序列号请求”,通过索引找到“route_lost”函数。
  2. 初检:发现代码中未检查“未过期的不可行路由”,直接跳过发送请求。
  3. 检索:查询“route_lost”调用的“find_best_route”和“send_update_resend”,确认前者只搜索可行路由,后者未发送序列号请求。
  4. 验证:对比RFC规范,确认漏洞存在,生成报告。

五、总结:LLM开启协议安全新时代

RFCSCAN就像一个不知疲倦的“代码审计专家”,能快速理解RFC规范和代码语义,精准定位功能漏洞。虽然目前局限于网络协议,但其“分层索引+按需检索”的思路可能启发其他领域(如操作系统、分布式系统)的自动化审计。未来,随着LLM能力提升,或许能实现更复杂的语义推理,让软件漏洞无所遁形。

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

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

相关文章

浅析EXCEL自动连接PowerBI的模板

浅析EXCEL自动连接PowerBI的模板 之前我分享过:PowerBI链接EXCEL实现自动化报表 ,其中一个关键工具就是提到的EXCEL链接模板,即宏工作薄。 今天就大概来聊一聊这个宏工作簿的底层原理是啥,怎么实现的。 第一步: 打开…

java32

1.反射 获取类: 获取构造方法: 获取权限修饰符: 获取参数信息: 利用反射出来的构造器来创建对象: 获取成员变量: 获取成员方法: 综合练习: 动态代理:

【Redis】zset 类型

zset 一. zset 类型介绍二. zset 命令zaddzcard、zcountzrange、zrevrange、zrangebyscorezpopmax、zpopminzrank、zrevrank、zscorezrem、zremrangebyrank、zremrangebyscorezincrby阻塞版本命令:bzpopmax、bzpopmin集合间操作:zinterstore、zunionstor…

从Gartner报告看Atlassian在生成式AI领域的创新路径与实践价值

本文来源atlassian.com,由Atlassian全球白金合作伙伴——龙智翻译整理。 二十余年来,Atlassian始终是创新领域的领军者。凭借对团队协作本质的深刻理解,Atlassian在AI时代仍持续引领协作方式的革新。如今,这一领先地位再次获得权威…

Kafka 安装教程(支持 Windows / Linux / macOS)

一、下载 1、kafka官网下载地址:https://kafka.apache.org/downloads 根据实际情况下载对应的版本 2、JDK的版本最好是17+ JDK下载地址:https://www.oracle.com/java/technologies/javase/jdk17-0-13-later-archive-downloads.html 二、安装 前置条件 安装 Java(至少 Jav…

OpenCV种的cv::Mat与Qt种的QImage类型相互转换

一、首先了解cv::Mat结构体 cv::Mat::step与QImage转换有着较大的关系。 step的几个类别区分: step:矩阵第一行元素的字节数step[0]:矩阵第一行元素的字节数step[1]:矩阵中一个元素的字节数step1(0):矩阵中一行有几个通道数step1(1):一个元素有几个通道数(channel()) cv::Ma…

前端没有“秦始皇“,但可以做跨端的王[特殊字符]

前端各领域的 “百家争鸣” 框架之争:有 React、Vue、Angular 等多种框架。它们各有优缺点,开发者之间还存在鄙视链,比如 Vue 嫌 React 难用,React 嫌 Vue 不够灵活。样式处理: CSS 预处理器:像 Sass、Les…

mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制,ASIOSession和connection是循环接受客户端命令,状态转变流程是:State::Created 》 State::Source 》State::…

【数据分析】什么是鲁棒性?

引言 —— 为什么我们需要“抗折腾”的系统? 当你乘坐的飞机穿越雷暴区时机体剧烈颠簸,自动驾驶汽车在暴雨中稳稳避开障碍物,或是手机从口袋摔落后依然流畅运行——这些场景背后,都藏着一个工程领域的“隐形守护者”:…

Qt/C++学习系列之QGroupBox控件的简单使用

Qt/C学习系列之QGroupBox控件的简单使用 前言样式使用代码层面初始化控件事件过滤器点击事件处理 总结 前言 最近在练手一个项目,项目中有不同功能的划分,为了功能分区一目了然,我使用到QGroupBox控件,也是在界面排版布局中最常用…

如何轻松地将数据从 iPhone传输到iPhone 16

对升级到 iPhone 16 感到兴奋吗?恭喜!然而,除了兴奋之外,学习如何将数据从 iPhone 传输到 iPhone 16 也很重要。毕竟,那些重要的联系人、笔记等都是不可或缺的。为了实现轻松的iPhone 到 iPhone 传输,我们总…

开源供应链攻击持续发酵,多个软件包仓库惊现恶意组件

近期在npm、Python和Ruby软件包仓库中相继发现多组恶意组件,这些组件能够清空加密货币钱包资金、安装后删除整个代码库并窃取Telegram API令牌,再次印证了开源生态系统中潜伏的多样化供应链威胁。 多平台恶意组件集中曝光 Checkmarx、ReversingLabs、S…

量子计算+AI:特征选择与神经网络优化创新应用

在由玻色量子协办的第二届APMCM“五岳杯”量子计算挑战赛中,来自北京理工大学的Q-Masterminds团队摘取了银奖。该团队由北京理工大学张玉利教授指导,依托玻色量子550计算量子比特的相干光量子计算机,将量子计算技术集成到特征选择和神经网络剪…

光伏功率预测新突破:TCN-ECANet-GRU混合模型详解与复现

研究背景 ​背景与挑战​ 光伏发电受天气非线性影响,传统方法(统计模型、机器学习)难以处理高维时序数据,预测误差大。​创新模型提出​ 融合时序卷积网络(TCN)、高效通道注意力(ECANet)和门控循环单元(GRU)的混合架构。​方法论细节​ TCN:膨胀因果卷积提取长时序特…

C# 用户控件(User Control)详解:创建、使用与最佳实践

在C#应用程序开发中,用户控件(User Control)是一种强大的工具,它允许开发者将多个标准控件组合成一个可复用的自定义组件。无论是Windows Forms还是WPF,用户控件都能显著提高UI开发的效率,减少重复代码&…

OpenWrt 搭建 samba 服务器的方法并解决 Windows 不允许访问匿名服务器(0x80004005的错误)的方法

文章目录 一、安装所需要的软件二、配置自动挂载三、配置 Samba 服务器四、配置 Samba 访问用户和密码(可选)新建 Samba 专门的用户添加无密码的 Samba 账户使用root账户 五、解决 Windows 无法匿名访问Samba方案一 配置无密码的Samba账户并启用匿名访问…

【 Redis | 完结篇 缓存优化 】

前言:本节包含常见redis缓存问题,包含缓存一致性问题,缓存雪崩,缓存穿透,缓存击穿问题及其解决方案 1. 缓存一致性 我们先看下目前企业用的最多的缓存模型。缓存的通用模型有三种: 缓存模型解释Cache Asi…

AI数据集构建:从爬虫到标注的全流程指南

AI数据集构建:从爬虫到标注的全流程指南 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 AI数据集构建:从爬虫到标注的全流程指南摘要引言流程图:数据集构建全生命周期一、数据采…

AI破局:饿了么如何搅动即时零售江湖

最近,即时零售赛道打的火热,对我们的生活也产生了不少的影响。 美女同事小张就没少吐槽“他们咋样了我不知道,奶茶那么便宜,胖了五六斤不说,钱包也空了,在淘宝买奶茶的时候,换了个手机还买了不少…

04 APP 自动化- Appium toast 元素定位列表滑动

文章目录 一、toast 元素的定位二、滑屏操作 一、toast 元素的定位 toast 元素就是简易的消息提示框,toast 显示窗口显示的时间有限,一般3秒左右 # -*- codingutf-8 -*- from time import sleep from appium import webdriver from appium.options.an…