Published: Jan 22, 2026
2025 年,我们的系统已经在主流开源仓库自动发现了超过 60 个真实世界的安全漏洞。半数以上都是高危漏洞。回顾这段历程,我反复体会到一个现象:我们之所以能走到今天,并非因为某个单一技术的突破,而是因为正确把握了 AI 演进的范式,并将最新技术与自身创新方法相结合。我们在论文阅读时也观察到,有相当一部分工作未能及时适应范式转换——即便曾在顶会发表,也逐渐因 AI 的快速发展而被边缘化。
这让我想起科学哲学家托马斯·库恩在《科学革命的结构》中提出的「范式转换」理论。库恩观察到,科学的进步并非知识的线性积累,而是经历一次次根本性的框架重构。托勒密的地心说曾经是天文学的正统范式,为了解释行星逆行等现象,天文学家们不断添加「本轮」和「均轮」,模型越来越复杂却越来越笨拙;直到哥白尼提出日心说,整个解释框架被彻底替换,那些精心构建的本轮体系一夜之间失去了意义。
AI 自动化漏洞挖掘领域正在经历类似的过程。2025 年初行之有效的方法,到 2026 年初可能已彻底被放弃——不是因为技术本身有问题,而是整个范式已经转移。理解这一点,对于把握未来方向至关重要。这一观察促使我写下这篇文章。我将系统分析自动化漏洞挖掘的技术演进历程,帮助读者把握大趋势,做出能够适应当前范式甚至跨越范式的研究,共同推动整个领域的进展。
本文将按时间线展开,分为三个部分:第一部分将简单回顾一下前 LLM 时代的漏洞挖掘方法;第二部分将详细分析 2022 至 2025 年间的自动化漏洞挖掘主流方法,并分析发生在其间的 3 次范式转变;第三部分展望自动化漏洞挖掘的未来,从而帮助大家更好地规划未来的研究。
在 LLM 出现之前,自动化漏洞挖掘主要依赖以下几种技术路线:Fuzzing、以静态污点分析为代表的代码分析、以及以符号执行与形式化验证为代表的形式化方法。它们各有所长,但都面临难以逾越的天花板。
Fuzzing 在发现内存安全问题方面表现卓越。配合各类 Sanitizer——AddressSanitizer 检测 UAF 和溢出、ThreadSanitizer 发现数据竞争、UndefinedBehaviorSanitizer 捕获整数溢出和空指针解引用——fuzzing 已经成为发现内存 corruption 类漏洞的首选方法。AFL、libFuzzer 等覆盖率引导工具能在数小时内探索数百万条执行路径,这种自动化规模是人工审计无法企及的。Google 的 OSS-Fuzz 项目已在开源生态中发现超过一万个安全缺陷,足以说明工业界对这项技术的依赖程度。
然而,fuzzing 的局限性同样明显:
污点分析的核心思想很直观:标记不可信输入为「污点」,追踪它如何在程序中流动,当污点数据到达敏感操作时报警。CodeQL 和 Joern 等工具基于代码属性图(CPG)实现了这一范式,允许研究员用声明式查询语言描述漏洞模式。
对于模式清晰的漏洞类型——SQL 注入、命令注入、路径遍历——污点分析确实有效。用户输入是 source,数据库查询或系统调用是 sink,两者之间缺少过滤即为漏洞。这类规则容易编写,检测也相对准确。
但污点分析面临一系列工程与理论层面的挑战:
解决以上每一个问题都需要海量的工程投入,而这些投入往往只在特定语言、特定框架下有效。
更根本的局限在于:污点分析只能发现那些能被抽象为「source 到 sink 的数据流」的漏洞。考虑一个权限绕过场景:管理员接口本应检查用户角色,但开发者遗漏了这个检查。这里没有污点数据流向危险函数,只是缺少了一段本该存在的校验代码——污点分析无法发现「不存在的东西」。类似地,业务逻辑漏洞往往不涉及危险数据流,而是合法操作在错误的上下文中被执行。

符号执行试图用约束求解器探索所有可行路径,但路径爆炸问题使其难以应对真实规模的代码库。KLEE、angr 等工具在小型程序或特定模块上表现尚可,面对百万行级别的项目则力不从心。
形式化验证在协议分析、密码学实现等特定领域展现了价值——seL4 微内核的完整验证是典范——但其所需的规约编写成本和专业门槛使其难以规模化应用。
至于手工编写的特定漏洞扫描器,它们永远在追赶新的漏洞模式,本质上是将安全研究员的知识硬编码为规则,既无法泛化也难以维护。

| 方法 | 通用性 | 误报率 | 漏报率 | 自动化程度 | 计算成本 |
|---|---|---|---|---|---|
| Fuzzing | 低(主要覆盖内存安全) | 低 | 高 | 高 | 中 |
| 污点分析 | 中(强依赖规则覆盖) | 高 | 中 | 低 | 中 |
| 符号执行 | 低(受复杂度限制) | 低 | 低 | 高 | 高 |
| 形式化验证 | 低(特定领域) | 低 | 低 | 低(需规约) | 高 |
理想的自动化漏洞挖掘系统应该具备四个特质:
这四个目标在前 LLM 时代几乎不可兼得,工具设计者总是在它们之间艰难取舍。
然而 LLM 来临之后,这一切变得可期待。

语言模型的客观特点
2022 年的语言模型以 BERT 系列为主,具有以下特征:上下文窗口极其有限(通常 512–1024 tokens),缺乏真正的推理能力,主要依赖模式匹配和特征提取。这些模型本质上是「分类器」——给定输入,输出标签。

在这一技术条件下,最自然的范式是代码分类:将代码片段输入模型,输出「有漏洞/无漏洞」的二分类结果。这与传统机器学习在安全领域的应用一脉相承,只是用 transformer 替换了之前的特征工程。
代表性工作
Thapa 等人的 Transformer-Based Language Models for Software Vulnerability Detection(2022 年 4 月)正是这一范式的典型代表。他们展示了 transformer 在 C/C++ 漏洞检测上优于 BiLSTM 和 BiGRU,这在当时是有意义的增量贡献——证明了 transformer 架构在代码理解任务上的优势。这项工作建立的实验方法论和评估基准,为后续研究奠定了基础。
历史转折点
2022 年 11 月 30 日,ChatGPT 发布。
这一事件的意义在当时被严重低估:大多数研究者仍在用 transformer 做分类,而没有意识到一个全新的范式——LLM 作为推理引擎——即将颠覆整个领域。
LLM 的关键变化
2023 年的 LLM(GPT‑3.5/4、Claude 1/2)展现出三个可被利用的核心能力:
世界知识
模型在预训练阶段吸收了大量安全相关知识,包括常见漏洞模式、危险函数列表、协议规范等。这些知识可以用于识别 source/sink、理解 RFC 文档、判断函数行为。局限在于幻觉问题——模型可能自信地给出错误信息,需要外部验证机制。
代码片段理解
模型对函数级别的代码理解能力已经相当强,能够追踪变量流向、理解控制流、判断代码语义。但关键限制是无法处理仓库级分析——上下文窗口(4K–32K tokens)是硬约束,跨文件的复杂调用关系超出模型能力。
有限复杂度的代码生成与迭代修复
模型能够生成结构合理的代码,更重要的是能够根据编译错误、运行时反馈进行多轮修改。这使得「生成–验证–修复」的迭代流程成为可能。

准确利用能力的工作
真正有洞察力的研究者识别了这些能力边界,并把 LLM 放在它能发挥价值的位置。
Google OSS-Fuzz 团队的 AI-Powered Fuzzing(2023 年 8 月)开创性地使用 LLM 生成 fuzz target。这个工作的洞察在于:不要让 LLM 做它不擅长的事(完整的漏洞检测),而是让它增强已经有效的工具(fuzzing)。
LLM 擅长理解代码结构和生成代码,这正好解决了 fuzzing 的核心瓶颈——harness 编写。编译器提供的错误反馈,使得迭代修复成为可能。
之后的一系列工作延续了这一思路:
LATTE(Liu 等,2023 年 10 月,TOSEM 2025)是一个 LLM 驱动的静态二进制污点分析工具。它用 LLM 替代人工知识工程:自动识别 source/sink,自动生成污点传播规则。传统污点分析工具需要安全专家手动定制这些规则,LATTE 将这一过程自动化。在真实固件中发现 37 个新漏洞,其中 7 个获得 CVE 编号。这项工作展示了 LLM 世界知识的实际价值——只要后续有静态分析工具验证,幻觉不会直接变成漏报。
GPTScan(Sun 等,ICSE 2024)采用类似思路检测智能合约逻辑漏洞。GPT 负责理解代码语义、生成静态分析约束,静态分析工具负责精确验证。这种分工让 LLM 做它擅长的事(理解代码意图),把精确分析留给传统工具。
与此同时,大量工作在探索用 LLM 做端到端的漏洞分类:
这些工作为理解 LLM 在漏洞检测中的能力和局限提供了重要的实证基础。然而,随着 LLM 能力的快速演进,「输入代码片段、输出分类结果」的框架天花板逐渐显现——它没有充分利用 LLM 与环境交互和迭代验证的能力。
2023 年的教训
回顾 2023 年,核心教训是:成功与否取决于研究者是否正确识别了 LLM 的能力边界。
这些工作成功的原因是:LLM 在整个 pipeline 中承担它擅长的角色,其输出由可靠的外部机制验证。
相比之下,代码分类工作虽然建立了重要的评估基准,但这一范式本身存在结构性限制:它将 LLM 作为被动的判断器,而非主动的探索者。随着 Agent 范式的兴起,这一局限变得更加明显。

LLM 的关键变化
2024 年是 LLM 能力显著增强的一年,四个变化对漏洞挖掘领域产生了深远影响:
上下文窗口大幅扩展
Claude 扩展到 100K+ tokens,GPT‑4 Turbo 达到 128K。这使得 Agentic 行为模式成为可能——模型可以在长对话中保持状态,记住之前的探索结果,进行多步骤复杂推理。
推理能力显著增强
2024 年 9 月 12 日 o1-preview 发布标志着推理模型的成熟。模型在代码片段上的深层分析能力接近天花板,能够追踪复杂的数据流、理解微妙的逻辑错误。
代码生成能力显著增强
Pass@1 明显提升,模型一次性生成正确代码的成功率大幅提高。这使 harness 生成、规则生成等任务更加可靠,不再需要大量迭代。
Agent 框架快速发展
2024 年 1 月 8 日 LangChain 首个稳定版发布,Agent with Tool Use 成为工程上可行的方案。6 月 20 日 Claude 3.5 发布,真正适合 Agentic 场景的模型开始可用。8 月 1 日 LangGraph 发布,复杂 agent 工作流的编排变得更加便捷。

代码分类范式在 2024 年继续繁荣,发表了大量研究成果。随着 Agentic 范式的兴起,这一方向的很多工作逐渐被时代所淘汰,不过其中用到的一些技术组件也确实在新的范式中保留了下来。
代码分类范式的根本挑战在于:它把一个可以主动探索、交互验证的智能体当作被动的分类器使用。到 2024 年,LLM 已经可以调用工具、执行代码、与环境交互,这些能力在分类框架内难以充分发挥。
这一方向在 2024 年取得了实质性成果,充分利用了 LLM 增强的能力。
Fuzzing 方向
Google OSS-Fuzz 的 Leveling Up Fuzzing(2024 年 11 月)是里程碑式的工作。LLM 自动生成 fuzz harness,通过 agent 循环修复编译错误、分类崩溃结果。在 272 个 C/C++ 项目中增加 37 万+ 行新代码覆盖,发现 26 个新漏洞,包括在 OpenSSL 中存在二十年的 CVE‑2024‑9143。这项工作证明了代码生成能力增强带来的实际收益——harness 生成的成功率和质量都大幅提升。
LIFTFUZZ(CCS 2024)用 LLM 生成汇编测试用例来测试二进制 lifter,在 LLVM、Ghidra、angr 等工具中发现了大量 bug;ProphetFuzz(CCS 2024)用 LLM 预测高风险的选项组合,72 小时 fuzzing 发现 364 个漏洞,获得 21 个 CVE。
静态分析方向
LLMDFA(NeurIPS 2024)是编译器无关的数据流分析框架,将问题分解为子任务,用 LLM 合成代码调用外部工具,用 tree-sitter 减少幻觉,达到 87.10% 精确率和 80.77% 召回率。IRIS 将 LLM 与 CodeQL 结合用于 source/sink 识别和误报减少;Enhancing Static Analysis for Practical Bug Detection(ACM PL 2024)用 LLM 过滤 UBITect 的结果;SmartLLMSentry 用 LLM 生成漏洞检测规则再用规则检测。
这些工作的共同洞察是:LLM 擅长语义理解和模式识别,传统工具擅长精确程序分析,两者结合可以互补短板。 这一方向在 2025 年仍然有效,尽管 Agentic 审计开始展现更大的潜力。
2024 年最具前瞻性的工作来自 Google Project Zero。
这两项工作准确捕捉到了 Agentic 审计的趋势。这个趋势在 2025 年真正爆发。
2024 年的教训
2024 年最大的教训是:在范式转换期,识别新趋势比优化旧范式更重要。
代码分类范式的工作在技术细节上做出了有价值的贡献,许多技术(RAG、CoT、多角色设计等)在新范式中得到了继承和发展。但这些工作的整体框架在 Agent 时代到来后逐渐显得局限。
LLM 辅助传统工具是正确的方向,这些工作在 2025 年仍然有效。OSS-Fuzz 的 26 个漏洞、ProphetFuzz 的 21 个 CVE 证明了这一方向的实际价值。
真正有远见的是 Naptime 和 Big Sleep——它们准确预判了 Agentic 审计将成为下一个主战场,而这一判断在 2025 年被证实。

LLM 的关键变化
2025 年的 LLM 发生了质的变化。

2025 年 6 月 1 日,我们的系统发现第一个漏洞 CVE‑2025‑53358——kotaemon(24k stars 的 RAG 工具)的任意文件读取漏洞。
2025 年 10 月 30 日,OpenAI 发布 Aardvark,正式进入漏洞挖掘领域。
2025 年 12 月,我们累计发现 60+ 漏洞。
范式格局的确立
到 2025 年,范式格局已经清晰:

工业界在 2025 年全面拥抱 Agentic 审计:
学术界同样跟进:
这一方向在 2025 年继续取得实质性成果。
Fuzzing 方向
DARPA AIxCC 竞赛催生了多个重量级系统。Trail of Bits 开源的 Buttercup(2025 年 8 月)获得竞赛第二名,使用 LLM 生成种子和补丁,发现并修复了真实开源项目中的漏洞;All You Need Is A Fuzzing Brain(2025 年 9 月)获得竞赛第四名,使用 LLM 作为 fuzzing 编排器,采用 CWE-based prompting 引导输入生成朝向特定漏洞类型,自主发现 28 个漏洞(包括 6 个 0‑day)并成功修复 14 个。
deepSURF(IEEE S&P 2025)使用 LLM 为复杂 Rust API 交互生成 harness;Unlocking Low Frequency Syscalls in Kernel Fuzzing with Dependency-Based RAG 使用 LLM 生成低频系统调用测试种子,配合 syzkaller 进行内核 fuzzing。
静态分析方向
LLM-Driven SAST-Genius: A Hybrid Static Analysis Framework使用 LLM 将 Semgrep 误报从 225 个压缩到 20 个(减少 91%),并生成 exploit 验证漏洞。QLPro: Automated Code Vulnerability Discovery 使用 LLM 生成 source/sink 识别规则和 CodeQL 规则,在 10 个开源项目中检测到 41 个漏洞(CodeQL 只检测到 24 个),发现 6 个未知漏洞,其中 2 个确认为 0‑day。
STaint(ASE 2025)使用 LLM 识别 source/sink 并进行双向污点分析,检测 PHP 应用中的二次漏洞;Artemis: Toward Accurate Detection of Server-Side Request Forgeries(OOPSLA 2025)使用 LLM 辅助过程间路径敏感污点分析,在 250 个 PHP 应用中发现 106 个真实 SSRF 漏洞,其中 35 个是新发现的,24 个获得 CVE。
AutoBug(OOPSLA 2025)使用 LLM 增强符号执行约束求解,提出基于路径分解的推理方法,使小模型也能在消费级硬件上进行有效分析;Towards More Accurate Static Analysis for Taint-style Bug Detection in Linux Kernel(ASE 2025)使用 LLM 减少 CodeQL 和 Suture 等传统工具的误报。
一些 2025 年发表的工作仍沿用代码分类框架。这些工作在技术上做出了贡献,但其核心范式已不再是研究前沿。
这些工作的技术贡献可以在新范式中得到复用,但整体框架——「输入代码片段、输出分类标签」——已经不是最有效利用 LLM 能力的方式。在 LLM 已经可以主动探索代码库、调用工具验证假设的 2025 年,将其作为被动分类器使用,未能充分发挥其潜力。
无论范式如何变化,知识工程始终是核心价值点:
2025 年的洞察

2025 年,一个深刻的变化正在发生:执行代码的成本和生成代码的成本都在急剧下降。
想象一下,三年前让 LLM 写一个完整的 fuzz harness,可能需要反复调试十几轮;今天,一次生成就能编译通过的概率已经大幅提升。三年前跑一轮大规模 fuzzing 需要精打细算云计算预算;今天,同样的预算可以覆盖十倍的测试规模。
当「能不能做」不再是问题,真正的瓶颈就变成了「要做什么」。工具在手,方向在哪? 这个问题的答案,决定了谁能在下一轮竞争中胜出。
基础模型的能力提升还没有停下来。模型越来越强,价格越来越低,但与此同时,范式的有效周期也越来越短。
这意味着什么?一个残酷的现实是:你今天开始的研究项目,可能在完成之前就已经被新范式淘汰。2023 年有人花一年时间精心设计代码分类器的特征工程,2024 年底 Agentic 审计兴起后,这些工作的价值就大打折扣。不是技术不好,而是范式变了。
因此,选择方向的能力,正在变得比执行能力更稀缺。我们需要回答三个问题:
在模型能力趋同的当下,Agent 与 Agent 之间的差距可以有多大?
答案是:比人与狗的差距还大。
同样是 Claude 4.5,一个设计拙劣的 Agent 可能项目规模稍大一点就无法完成;而 Cursor 却展示了,一个精心编排的 Agent 系统,可以持续运行超过 1 周,并从零开始写出一个 100 万行代码的浏览器。差距不在模型,在编排。
工具集怎么设计?多 Agent 如何协作?反馈循环怎么构建?错误恢复机制如何实现?这些工程层面的决策,往往决定了系统能力的上限。在基础模型能力趋于同质化的今天,编排能力可以极大提升 Agent 的上限。
但当前的 Agent 有一个根本性的局限:它们不会学习。
人类在反复做一类事情时,会越做越熟练,甚至触类旁通——修过十个 SQL 注入漏洞后,第十一个往往一眼就能看出来。而现在的 AI Agent 恰恰相反:随着对话的推进、上下文的膨胀,它们反而会变得越来越「笨」。长上下文不是让模型更聪明,而是让模型更迷糊。
这是近两年 AI 圈重点关注的研究方向。无论是通过模型外部的知识库和上下文管理,还是通过模型架构本身的革新,一旦在持续学习上取得突破,影响将是颠覆性的。
想象一下:一个 Agent 在审计了一百个项目后,积累了对常见漏洞模式的「直觉」;它能记住上周在类似代码库中踩过的坑;它知道哪些告警通常是误报、哪些值得深挖。
这样的 Agent,和现在「每次对话都从零开始」的 Agent,其能力将会有根本性的改变。
持续学习问题的突破,必然会引发 Agent 设计范式的变革。
从 2022 年到 2025 年,我们见证了三次范式跃迁:从「LLM 做代码分类」,到「LLM 辅助传统工具」,再到「LLM 作为自主 Agent」。每一次跃迁,都把能力边界往外推了一大步。
那么,当前的边界在哪里?
但请注意:这些都是技术障碍,不是原理性限制。
路径爆炸曾经被认为是符号执行的「原理性限制」,但今天我们用 LLM 来选择性探索路径,部分绕过了这个问题;上下文长度曾经被认为是 transformer 的「原理性限制」,但今天百万 token 的上下文已经成为现实。技术障碍的特点是:它们会被突破,只是时间问题。
随着模型能力的提升、工具集成的深化、知识库的积累,乃至 AI 架构的持续演进,AI 在漏洞挖掘中的能力边界将不断外扩。
AGI,有很大概率会真正实现。
而媲美人类专家的自动化漏洞挖掘系统,同样有很大概率会真正实现。也许不是明年,也许不是后年,但它正在来的路上。
过去三年的发展给我们的最大启示是:游戏规则在快速改变。
研究的回报模式正在变化。一年前的 state-of-the-art,今天可能已经不再是最优解,因为底层范式已经转移。在这样的环境下,理解趋势、预见范式变得越来越重要;关注实际效果,而非仅仅追求论文发表,也变得越来越重要。我们能靠系统自动发现 60+ 个真实漏洞,是因为我们做工作并不是为了写论文,而是因为追问一个长期的问题:什么真正有效?
最后,感谢一路同行的同事与合作伙伴,也希望这篇文章能帮助你在接下来的几年里,做出更顺应范式、甚至引领范式的研究与工程决策。