文章总结: 奇安信星图实验室发布暴风(storm)自动化fuzz工具,基于agent与大模型自动生成fuzzdriver,两个月内在25个主流开源项目中挖出54个真实漏洞,其中8个已获厂商确认修复。该工具覆盖静态分析盲区,分支覆盖率远超现有方案,且仅需24GB显存笔记本即可部署,实现全自动漏洞挖掘,为供应链安全提供低成本评估方案。
综合评分: 92
文章分类: 安全工具,ai安全,漏洞分析,安全开发
暴风(Storm):让漏洞自己”跑”出来
星图实验室
星图实验室
奇安信技术研究院
2026年9月21日 11:04
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
两个月,54 个漏洞
两个月,25 个最新版本的主流开源项目,54 个真实漏洞。
这 54 个漏洞全部经人工复核确认,并已提交对应项目厂商:其中 8 个已获得厂商确认并完成修复,其余正处于厂商审核与漏洞编号分配流程中,完整清单见文末附录。
值得强调的是,这 25 个项目并非缺乏测试的”软柿子”。libssh2、OpenCV、Exiv2 等项目均已接入 Google OSS-Fuzz——全球规模最大、运行最久的工业级模糊测试平台——被持续测试三到五年。在这样常年被”轰炸”的代码上仍能不断挖出新漏洞,说明 Storm 挖掘到的,是现有人工编写的Fuzz Driver从未覆盖过的执行路径:OSS-Fuzz 测得到维护者写过的入口,而 Storm 自动生成的新 driver,去的是连维护者都没写过的地方。
而这些结果的产出者,不是某个安全专家团队,而是一套全程无人介入的自动化系统。更意外的是,驱动它的,是一个可以装进笔记本的小模型。
先从一场”跨时空竞赛”说起。
差一天,就赢过官方
7月16日晚,Storm 在对 libssh2 的基于Fuzz Driver进行的模糊测试中挖掘到一个 off-by-one 越界读漏洞。
这个漏洞的触发条件极为隐蔽:当 known_hosts 文件的最后一行缺少换行符时,解析函数 libssh2_knownhost_readline() 在循环结束后,会错误地向缓冲区外多读取一个字节,同时还可能漏读密钥的最后一个有效字符。
团队整理报告,准备第二天上报。然而次日清晨打开libssh2仓库时,一个意外发现打破了原计划——就在7月17日早上7点,官方刚刚合并了修复补丁(PR),修复的正是这个漏洞。值得一提的是,该 PR 上明确标注着 “Reported by GitHub Code Quality”——即由 GitHub 自家的静态代码分析工具发现。
尽管没能跑在官方前面,但这恰恰是对 Storm 能力最直接的检验:它挖到的,不是可有可无的噪声,而是核心开发者与头部平台在同一时间窗口内都认定必须立即修复的真实问题。
读代码看不见的漏洞
libssh2 案例印证了 Storm 的”准确性”,但 Storm 的真正能力边界远不止于此——它还能覆盖静态分析方法完全失效的区域,即那些代码读起来完全正常、只有跑起来才会暴露的漏洞。
以 LibRaw 缓冲区溢出漏洞(Github issue)为例:只需构造一张宽度小于 4 像素的 Bayer 格式图片,open_bayer() 接口在后续插值中,memcpy 的长度参数就会因整数下溢变成一个天文数字,直接击穿堆内存边界。这段代码没有任何显式的危险函数调用,问题根源藏在边界条件下的算术细节里,也就是说不实际执行这段代码,仅通过读代码几乎不可能审计出这个漏洞。
再看 OpenCV 中的一个越界读案例(Github issue):在其 TSDF(截断符号距离函数)三维重建模块中,一个在正常算法流程中因浮点数特性自然产生的 NaN(非数)值,在后续被用于边界检查。由于 IEEE 754 浮点数标准规定,任何包含 NaN 的大小关系比较结果均为 false,这个检查被悄然绕过,最终导致内存越界访问。这段代码的每一项操作都”合法”——没有危险的指针转换,也没有违反语法规则,只是一系列标准的 API 调用与计算。静态审计能识别的只是”一个浮点数与一个阈值的比较”,它无法预知 NaN 这个特殊值会在运行时出现,并欺骗所有边界判断。
这再次印证了 Storm 的核心理念:有些漏洞,只有让程序在复杂的执行流中真正跑起来,才能被发现。
请 GPT-5 也来挖一遍
为了进一步验证,我们设计了对比实验——如果换成当前最强的 AI 安全工具来挖,能否发现这些漏洞?
我们使用 Codex Security 0.1.24 及 GPT-5.6-sol,提供相同版本的完整项目源码,基于官方 Skills 及运行指令对这些项目进行了安全扫描。
实验结果表明:54 个漏洞中,仅 10 个被 Codex Security 找到;而官方已确认的 8 个,Codex Security 零检出。
这不是工具的水平问题,而是路径的分野。当前的 AI 漏洞挖掘工具,本质上是”读”代码:理解语义、分析逻辑、判断哪里写得有问题。它们像原子弹,对语义层面的目标有着毁灭性的覆盖力,可以基于已知漏洞模式快速找出存在风险的入口。
但有一类漏洞,原子弹炸不到:它们藏在复杂的程序执行路径里——需要构造特定的调用序列与数据转换、通过层层校验、在精确的位置才会触发。这类问题只出现在执行时的特定边界、特定数值、特定调用序列下,没有危险的函数调用,没有违反语法规则,逻辑链条独立看也并无缺陷,只有在真实场景下有效执行这些特定逻辑,才能基于崩溃信息进行识别。
顶级大模型再强,也有它够不着的地方。而那里,正是暴风的战场。
暴风:带着情报轰炸
Storm是奇安信星图实验室研发的基于 Agent 的全自动源码 Fuzz 工具。
Fuzzing 的原理并不新鲜:用海量随机与变异输入去”轰炸”程序,让漏洞在崩溃中现形。但传统 Fuzzing 有个死结——驱动程序(fuzz driver)要靠资深工程师手写,导致覆盖率瓶颈长期存在,大量核心代码路径始终游离在测试覆盖之外。
Storm 用 Agent 打通了这个死结。与 OSS-Fuzz-Gen、PromeFuzz、SynapseFlow 等已有工作不同,Storm 全线以”语义理解 + Agent”实现目标选择、fuzz driver 自动生成与测试执行。区别于已有方案基于编译报错的迭代重试,Storm 首次将覆盖率数据回流用于下一轮 fuzz 目标的自动选择:
相当于一个永不下班、越挖越准的测试员——做的是有情报指引的增量轰炸,而不是漫无目的的乱枪打鸟。
实测数据也印证了这一点:在这 25 个项目上,Storm 的总体分支覆盖率达到 OSS-Fuzz-Gen 的 3.2 倍、PromeFuzz 的 2.6 倍、SynapseFlow 的 1.9 倍,亦超过由人工驱动程序构成的 OSS-Fuzz 平台本身(对比口径与配置见文末附注)。
大模型覆盖语义盲区,暴风覆盖语法盲区——两条路径,各司其职。
一台笔记本就够了
更让人意外的是:上述全部战果,均基于 Qwen3.6-27B 模型取得。
而在部署侧,门槛比想象中更低:一张 24GB 显存的消费级显卡(如 RTX 4090)即可流畅运行其 AWQ-INT4 量化版本。这意味着,Storm 可以被部署在轻便的终端设备上,一台笔记本就可以充当漏洞挖掘流水线。
能做到这一点,源于 Storm 的架构设计。团队汲取了在 SynapseFlow 上的经验,将复杂的漏洞挖掘任务拆解为若干基于 LLM Agent 的子任务,让小模型在每个子任务上都保持足够高的成功率——单点能力有限,组合起来却能完成大模型都做不到的事。这套设计极大降低了漏洞自动化挖掘的门槛与成本。
上传源码,然后不用管
使用 Storm,用户只需要上传目标 C/C++ 库的源码和编译指令,经过简单引导,之后的一切——目标分析、driver 生成、编译、测试、崩溃分析、增量迭代——全程无需人工介入。经验证,Storm Agent 结合 GDB 动态调试对崩溃成因的溯源与分析,准确率已达 95% 以上,大幅减少了传统自动化工具在漏洞验证过程中所需的专家知识与人力成本。
对于供应链安全管理而言,这意味着:开源组件引入前的自动化安全评估,第一次可以不依赖专家、不依赖云端 API,在企业内部低成本完成。
对于”让 Agent 碰生产代码”这件事,很多人最自然的担心是:它会不会失控删库?Storm 通过严格的权限管理解决了这个后顾之忧:Agent 在分析与生成阶段只具备读权限,不会修改项目源码,从而避免测试走向无效分支;编译、运行及崩溃分析任务均运行在独立的 Docker 容器中,与宿主机完全隔离。整个流程对用户的源码和系统环境不做任何修改,实时将生成的 fuzz driver、崩溃样本及 GDB 自动化调试分析报告、详细的覆盖率数据等结果导出至指定位置供用户查看。
当然,Storm 也有当前的边界:目前聚焦于可编译、入口明确的 C/C++ 库,对 Java、Go 等其他语言,以及强依赖外部环境(网络、数据库)的目标,支持仍在完善中——这正是我们后续更新的重点方向。
结语
大模型不是 Storm 的对手,而是这个时代的底座。我们想做的,不是和它比谁更聪明,而是补上它够不着的那块拼图。
原子弹负责摧毁看得见的目标;而那些炸不到的角落,交给暴风。
附注:对比实验口径
附录:漏洞清单
详细内容可咨询:[email protected]
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:奇安信技术研究院 星图实验室
星图实验室《暴风(Storm):让漏洞自己”跑”出来》