2025.11.4
报告围绕“如何利用更细粒度的覆盖信息提升模糊测试效果”这一主题,分别从传统程序、智能合约、TCP协议栈以及库测试驱动生成四类场景出发,引入FunFuzz、TCP-Fuzz与PromeFuzz等代表性工作,目标是在有限资源下提升代码覆盖率、状态探索深度与真实漏洞发现能力。
传统灰盒模糊测试多以边覆盖率为唯一反馈,容易忽略执行代码的“重要性”,导致种子能量分配粗糙;智能合约漏洞高度集中于少数高风险函数,TCP协议栈中大量缺陷为难以捕捉的语义错误,而现有覆盖导向工具难以有效触及;在库测试中,驱动代码高度依赖隐式API约束,现有LLM生成方法易出现“幻觉”与大量误报,亟需结合结构化知识与深度语义理解的增强方案。
报告重点介绍了四条方法线索: 1)FunFuzz通过构建调用图并利用Katz中心性度量函数重要性,动态计算种子的重要性分数,以FS导向的功率调度替代单纯“谁覆盖多谁更重要”; 2)面向智能合约的FunFuzz进一步结合字节码与ABI分析,识别“风险函数”,设计基于距离的种子选择、能量分配与类型感知的自适应变异策略,将搜索聚焦于高风险调用序列; 3)TCP-Fuzz针对协议栈的二维输入与复杂状态机,引入依赖感知的测试序列生成、以“分支转换”为核心的新型覆盖指标,以及多实现差分检查器以系统性捕获语义错误; 4)PromeFuzz则构建代码与文档级知识库,量化API相关性,由调度器选择API组合,结合LLM生成与净化器的闭环修复,在知识驱动下自动生成高质量模糊测试驱动代码。
在实现层面,FunFuzz通过元数据提取器与插桩器构建调用图并收集运行时调用计数,配合双共享内存与惰性FS计算,将动态函数重要性评估的开销控制在可接受范围内;智能合约FunFuzz基于EVM执行环境实现风险模式识别与距离度量。TCP-Fuzz使用Clang插桩收集分支与分支转换覆盖,以依赖规则约束Packetdrill脚本的变异生成,并结合ASan、差分检查器与数据验证器组成多层错误检测链路。PromeFuzz则利用Clang AST构建元数据依赖图与消费者调用图,通过RAG获取API语义约束,调度器基于覆盖率与多维相关性打分选择API集合,再由生成器与净化器形成“生成—编译—运行—分析—修复”的闭环流程。
实验结果表明:基于函数重要性的FunFuzz在多真实世界目标上显著提升代码覆盖率与独立崩溃数量,相比AFL++发现更多独有漏洞;智能合约FunFuzz在高复杂度合约上能够更快、更稳定地触发真实漏洞,尤其在多交易、状态依赖场景中优势明显;TCP-Fuzz在多个TCP协议栈中发现了大量此前未知的语义错误,验证了依赖感知生成与转换引导覆盖的有效性;PromeFuzz则在覆盖率与真实漏洞数量上均明显优于现有LLM与传统基线工具,以更少的假阳性在成熟开源库中发现多例新漏洞。整体来看,报告展示了“从覆盖量到覆盖质、从代码路径到状态转换、从浅层提示到知识驱动”的模糊测试演进方向。
本次组会内容下载链接