关于FirmAgent:一种利用模糊测试辅助LLM智能体进行物联网固件漏洞发现的新颖混合方法的研究报告
本文旨在向中文研究界介绍一项发表在网络安全顶级学术会议NDSS(网络与分布式系统安全研讨会)2026上的前沿研究工作。该研究由一支来自中国顶尖高校与企业研究机构的团队完成,提出并实现了一个名为“FirmAgent”的创新型混合分析框架,旨在高效、精准地发现物联网(IoT)设备固件中的安全漏洞。以下报告将系统性地阐述该研究的背景、方法、结果、结论及其重要价值。
一、 研究团队与发表信息
本研究的主要作者包括纪建安(Jiangan Ji,信息工程大学)、张超(Chao Zhang,清华大学网络科学与网络空间研究院)以及甘水韬(Shuitao Gan,高级计算与智能工程实验室)等,合作机构涵盖了信息工程大学、清华大学网络科学与网络空间研究院、清华大学网络空间安全科学与技术实验室以及广州科学城数字技术集团有限公司。研究论文《FirmAgent: Leveraging Fuzzing to Assist LLM Agents with IoT Firmware Vulnerability Discovery》已于2026年2月23日至27日在美国圣地亚哥举行的第NDSS研讨会上发表。
二、 学术背景与研究动机
主要科学领域:本研究属于物联网安全、二进制软件分析、漏洞挖掘领域,具体融合了动态分析(模糊测试,Fuzzing)、静态分析(污点分析,Taint Analysis)以及大语言模型(Large Language Model, LLM)三种技术范式。
研究背景与动因:物联网设备的爆炸式增长带来了严峻的安全挑战。这些设备通常运行着资源受限、定制化的固件,且普遍缺乏完善的安全机制,尤其是暴露网络服务的设备攻击面巨大。现有针对IoT固件的漏洞检测技术存在显著不足: 1. 动态分析(如模糊测试):优点在于能生成可导致程序崩溃或异常执行的输入(PoC,概念验证),直接证明漏洞存在。但其主要缺点是代码覆盖率有限,尤其在IoT固件中,大量条件分支与特定输入值或硬件状态紧密相关,导致模糊测试难以探索到深层代码路径,造成高漏报率(False Negative)。 2. 静态分析(包括基于LLM的分析):优点在于能够不执行程序而全面分析代码路径,理论上覆盖率广。但传统静态分析面临高误报率(False Positive)的难题,主要原因包括:源点(Source,即用户输入引入点)识别不准确、别名分析(Alias Analysis)不精确、难以理解代码语义(如净化函数,Sanitization)等。此外,纯静态分析通常无法自动生成PoC,需要大量人工验证。
研究目标:为了克服单一方法的局限,研究者们曾探索过混合模糊测试(Hybrid Fuzzing),但其在IoT固件场景下面临运行时约束收集困难、路径记录开销大等挑战。本研究团队通过实证观察发现了一个关键现象:模糊测试能够高效且准确地到达并识别固件中接收外部输入的代码点(源点),但在将这些污点数据传播到危险操作点(汇点,Sink)时受阻;而静态分析(特别是LLM驱动的分析)虽然源点识别不准,但在从已知源点出发进行彻底的路径探索和污点传播分析方面表现出色。基于此互补性观察,本研究提出了核心目标:设计并实现一个以模糊测试为辅助、LLM智能体为核心的新型混合解决方案(FirmAgent),旨在结合动态分析的精准源点定位优势与静态分析(LLM)的深度路径推理优势,在保证高精度的前提下,大规模发现IoT固件中的未知漏洞,并自动化生成PoC。
三、 详细研究流程与方法
FirmAgent的整体架构分为两个核心阶段,其工作流程体现了精心设计的协同机制。
第一阶段:模糊测试驱动的信息收集
此阶段的目标是利用轻量级的静态预处理结合运行时插桩,为后续分析提供精确的源点(论文中称为“csource”)和完整的调用图。
1. 预模糊测试分析:在启动动态测试前,首先对固件二进制文件进行静态分析,提取关键引导信息,以应对固件中服务处理函数难以触发的挑战(挑战C1)。 * 研究对象:目标固件中的Web服务二进制文件(通过binwalk等工具从固件镜像中提取)。 * 处理/实验方法: * 服务处理器检测:结合静态分析与LLM,从暴露的接口(如Web服务器配置、SOAP定义)中提取初始请求模式作为种子,利用LLM学习通用的请求处理模式,从而发现更多未文档化的服务处理器函数,扩大模糊测试的覆盖目标。 * 关键词字典构建:提出系统性的关键词提取框架。首先从与重托管固件交互的网络流量中获取种子关键词,然后在二进制代码中定位处理这些关键词的函数,通过数据流回溯分析,提取所有传递给这些函数的参数(硬编码字符串、.data段中的全局变量、动态拼接的字符串),构建一个全面的输入关键词字典。这为生成有效的测试用例提供了语义基础。 * 汇点范围与距离计算:通过模式匹配识别安全敏感的API函数(如system, strcpy等)作为汇点。对每个汇点进行反向可达性分析,确定所有可能到达该汇点的基本块范围,以此作为后续运行时监控的“作用域”,大幅降低开销。同时,利用Dijkstra算法在反向控制流图上计算每个基本块到最近汇点的最短距离,并结合该基本块在CFG中的深度,为每个基本块计算一个“分数”。这个分数将在模糊测试中用于指导种子突变,使其倾向于探索更接近汇点的代码区域。
2. 运行时监控:在基于Qemu的用户空间重托管环境(采用Greenhouse框架)中执行定向模糊测试,并实时收集信息。 * 研究对象:已重托管并可交互的固件Web服务。 * 处理/实验方法: * 突变策略:采用基于字典和距离引导的灰盒模糊测试。利用预分析阶段提取的服务处理器URI和关键词字典,系统地生成测试用例(替换请求模板中的参数)。在测试执行过程中,通过记录访问的基本块地址,利用预计算的“分数”来评估当前测试用例的质量(越接近汇点,分数越高)。高分种子被优先用于进一步突变,低分输入的参数值则被替换为字典中的其他关键词,以此引导模糊测试探索更多、更深的潜在源点。 * 信息收集:开发了轻量级、基于内存的污点检测机制作为Qemu插件。关键创新在于选择性插桩:仅监控落入预定义“汇点作用域”内的指令。当监控到内存写操作且目标地址从未污状态变为污状态时,即记录该指令地址为一个精确的运行时源点(csource)。这种方法避免了全程污点跟踪的巨大开销,高效且准确地识别了真正接收外部输入的代码点。同时,还收集运行时遇到的间接调用(Indirect Call)的目标地址,用于补全静态分析难以构建的调用图。
第二阶段:污点分析至PoC生成的智能体阶段
此阶段利用第一阶段收集的信息,部署两个专门的LLM智能体(基于DeepSeek-R1模型)进行精准的漏洞分析与验证,以应对传统静态分析精度不足和人工验证负担重的问题(挑战C3)。
1. 污点传播智能体: * 研究对象:第一阶段构建的从csource到汇点的“潜在漏洞路径”上的反汇编/反编译代码(主要使用IDA Pro生成)。 * 处理/实验方法: * 代码精炼:首先使用LLM对IDA反编译的输出进行精炼,修复缺失的函数参数、错误的控制/数据流结构等不精确之处,提升后续分析的可靠性。 * 精准污点分析:以函数为单位进行交互式、上下文感知的污点分析。研究者设计了特定的提示词模板,向LLM提供精炼后的反编译代码、相关的csource点和汇点信息。LLM被要求判断污点数据是否能从源点传播到汇点。分析过程是迭代的:对于过程内分析,直接在函数内判断;对于跨函数调用,LLM会识别调用点处被污染的参数,并将这些参数作为新的源点在目标函数中继续分析,直至到达汇点函数。 * 警报验证:由于LLM对固件特定语义理解可能不足,会引入误报。研究团队通过分析,总结了误报的主要场景(如对净化逻辑处理不当、误判间接数据依赖等),并引入了基于少样本提示的警报验证模块,对污点分析产生的每个警报进行二次验证,过滤假阳性。 * 缓存机制:为提升效率,实现了函数级别的缓存,存储LLM推理出的污点传播行为,避免对同一函数在不同调用链中的重复分析。
2. PoC生成智能体: * 研究对象:被污点传播智能体标记为“潜在漏洞”的警报,以及第一阶段模糊测试生成的、能够到达对应csource点的可达测试用例。 * 处理/实验方法: * 约束提取:在污点分析过程中,LLM会隐式地捕获到达漏洞汇点所需满足的语义约束(如条件分支、净化逻辑、特定输入格式)。这些约束被形式化提取为一个“中间漏洞抽象”。 * PoC合成:设计专门的提示词模板,将可达测试用例(提供有效的语法结构)与提取的约束(提供语义条件)一同输入给PoC生成智能体。LLM通过分析反编译代码和这些信息,推断出触发漏洞所需的具体参数值,并对原始测试用例进行增补和修改,最终自动化生成一个完整、可执行的PoC输入。
四、 主要研究结果
研究团队在14个真实世界的IoT固件样本上对FirmAgent进行了全面评估,并与多种最先进的工具进行了对比。
1. 漏洞检测性能对比(RQ1): * 总体结果:FirmAgent共报告了200个警报,经确认其中182个为真实漏洞,精确度高达91%。这些漏洞包括45个命令注入和137个缓冲区溢出漏洞。值得注意的是,其中包含140个先前未知的零日漏洞,并有17个已获得CVE编号。 * 与基线工具对比: * 静态分析工具:EmTaint报告27个警报,确认10个漏洞,精确度37%;HermesCan报告215个警报,确认71个漏洞,精确度33%。两者均存在高误报。 * 动态分析工具:Greenhouse报告20次崩溃,确认8个漏洞,精确度40%,显示了较低的覆盖率(高漏报)。 * 混合分析工具:Hy-FirmFuzz报告13次崩溃,确认13个漏洞,精确度100%,但发现的漏洞数量极少,表明其覆盖能力有限。 * 结论:FirmAgent在检测能力上显著超越所有对比工具,发现的漏洞数量是第二名(HermesCan)的2.6倍,同时保持了远超传统静态分析工具的高精度。分析表明,FirmAgent包含了其他工具发现的所有漏洞。
2. 源点识别的准确性与完整性(RQ2): * 准确性:FirmAgent通过运行时监控识别的所有csource点(平均每个固件101.7个)均为真实可接收外部输入的源点,准确率达到100%,彻底消除了传统静态分析因源点误判导致的误报根源。 * 覆盖率:相较于通过手动验证确定的所有真实源点,Fuzzing平均能够覆盖94.2%。未覆盖的源点主要属于死代码或位于需要复杂条件才能触发的路径上。由于后续的LLM污点分析会基于调用链对代码(包括这些未动态触发的函数)进行分析,并将其中符合条件的函数也视为源点进行推理,因此并未因动态覆盖不全而导致漏洞漏报。
3. 各模块贡献度分析(RQ3 - 消融实验): 研究者通过关闭或替换关键组件,评估了各模块的贡献: * csource与污点传播智能体:将FirmAgent的污点分析模块替换为EmTaint或HermesCan的核心(分别称为Firm-Emt和Firm-Her)。结果显示,虽然因使用了精准的csource而比原工具误报有所降低(如Firm-Her误报率从67%降至40.8%),但其精确度(44.1%, 59.2%)仍远低于FirmAgent(91%),证明了LLM智能体在语义理解和精准污点传播上的巨大优势。 * 定向模糊测试策略:禁用距离引导策略后,检测到的真实漏洞减少6个,证明了该策略对于探索深层次路径、发现更多源点的有效性。 * 间接调用解析:禁用动态收集的间接调用信息后,检测到的真实漏洞减少13个,这些漏洞的污点正是通过间接调用传递的,证明了动态解析对于构建完整数据流路径的必要性。 * LLM精炼与验证模块:禁用代码精炼和警报验证后,误报数增加42个,漏报数增加10个,精确度降至74.1%,凸显了这两个模块对于提升分析可靠性的关键作用。
4. PoC生成有效性(RQ4): * 在182个确认为真的漏洞中,FirmAgent自动生成的PoC有167个(91.8%)可以直接在真实设备上成功触发漏洞(E-PoC)。剩余的15个(H-PoC)仅需分析师进行极少量的手动调整(如调整命令注入的载荷格式)即可生效。没有生成有效PoC的均为已被确定为误报的警报。这极大地降低了漏洞验证所需的人工负担。
五、 研究结论与价值
结论:本研究系统分析了IoT固件漏洞检测中动态分析与静态分析各自的局限与互补性,创新性地提出了“利用模糊测试辅助LLM智能体”的混合架构FirmAgent。通过轻量级模糊测试精准定位运行时源点,并以此驱动LLM智能体进行上下文感知的污点传播分析和自动化的PoC生成,FirmAgent在真实世界固件数据集上实现了高精度(91%)、高召回率的漏洞发现,显著超越了现有技术。
科学价值: 1. 方法论创新:提出并验证了一种新的“动态引导静态”的混合分析范式,突破了传统“静态引导动态”或“并行混合”框架的思维定式,为软件安全分析领域提供了新的思路。 2. 技术融合示范:深度展示了如何将经典的动态分析技术(模糊测试)、程序分析理论与前沿的AI能力(LLM)进行有机结合,为解决复杂工程问题(如二进制漏洞挖掘)提供了可复用的技术框架。 3. 对LLM应用的贡献:明确了LLM在二进制漏洞分析中的优势场景(语义推理、路径探索、约束理解)和当前局限(对缓冲区大小等低级语义理解不足),并设计了针对性的缓解策略(如精炼、验证模块),推动了LLM在安全领域的务实应用。
应用价值: 1. 提升安全分析效率与质量:为物联网设备制造商、安全研究人员和测评机构提供了一套自动化程度高、误报漏报率低的漏洞挖掘工具,能够有效发现深层次、未知的安全隐患。 2. 推动漏洞管理自动化:自动生成高可用PoC的能力,极大加速了从漏洞发现到验证、再到报告和修复的整个流程,降低了安全运营成本。 3. 增强物联网生态安全:通过大规模、高效地发现IoT设备中的漏洞,有助于提前防范潜在的大规模网络攻击,提升整个物联网基础设施的安全性。
六、 研究亮点
七、 其他有价值内容
研究团队也坦诚讨论了FirmAgent的局限性:首先,其能力依赖于底层固件重托管框架的成功率,目前对较新固件的支持有限,且仅限于分析单个服务二进制。其次,虽然误报率已大幅降低,但部分缓冲区溢出检测的误报仍源于LLM对内存大小关系推理的不精确。对此,作者提出了未来可能通过检索增强生成(RAG)或微调等策略来改进。此外,研究的伦理考量部分提到,所有发现的漏洞均已遵循负责任披露原则告知相应厂商,体现了规范的学术研究操守。论文代码已在GitHub开源,有利于学术界和工业界进一步研究、应用与改进。