← 返回 PaperDaily 大模型与智能体

告别黑箱审计:CODE-AUGUR如何让LLM的安全判断变得可验证、可复用

继2026年6月聊过AI智能体安全评估之后,这次新加坡国立大学团队带来更猛的干货:不是让LLM当黑盒猎头,而是让它把“觉得安全”的判断写成可执行的断言,再用模糊测试来挑战这些断言。结果?在DARPA的AIxCC基准上比顶尖智能体多发现34%-63%的漏洞,还挖出了22个真实世界的0-day!这才是AI安全审计该有的样子。

告别黑箱审计:CODE-AUGUR如何让LLM的安全判断变得可验证、可复用
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚! 👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥推荐理由:
继2026年6月聊过AI智能体安全评估之后,这次新加坡国立大学团队带来更猛的干货:不是让LLM当黑盒猎头,而是让它把“觉得安全”的判断写成可执行的断言,再用模糊测试来挑战这些断言。结果?在DARPA的AIxCC基准上比顶尖智能体多发现34%-63%的漏洞,还挖出了22个真实世界的0-day!这才是AI安全审计该有的样子。


原论文信息如下:
论文标题:
CODE-AUGUR: Agentic Vulnerability Detection via Specification Inference
发表日期:2026年06月
发表单位:National University of Singapore (新加坡国立大学)
原文链接:https://arxiv.org/pdf/2606.18619v1.pdf
开源代码链接:原文未提供
开源数据集链接:原文未提供
项目链接:原文未提供

当AI侦探学会“写假条”:CODE-AUGUR如何用安全规范让LLM漏洞检测告别“黑箱”

朋友们,如果让你去检查一个陌生代码库有没有安全漏洞,你会怎么做?通常的做法是:先大概浏览一遍,凭经验判断哪些地方可能有问题,然后针对性地写测试用例去验证。但问题是——你的“直觉”准吗?你凭什么说某段代码是安全的?你的判断依据能写下来给别人看吗?

现在的AI智能体做安全审计,跟人类专家犯的毛病一模一样:它们会“感觉”某段代码安全,然后就不管了。可它们到底凭什么觉得安全?这个推理过程完全藏在LLM的黑盒里,不可解释、不可复用,更可怕的是——根本没人验证过它的判断对不对。

新加坡国立大学团队最近放了个大招,提出了CODE-AUGUR,一个全新的智能体漏洞检测系统。核心思路简单到让人拍大腿:让LLM把“我觉得安全”这个判断,写成可执行的断言(assertion),就像学生写假条一样白纸黑字写下来,然后再用模糊测试(fuzzing)去挑战这些断言——你说是安全的?好,那我随机生成海量输入,看能不能把你的断言搞崩。这一套组合拳下来,效果炸裂:在DARPA的AIxCC基准测试上,比顶尖智能体多发现34%到370%的漏洞,更是在真实开源项目里挖出了22个之前没人发现的0-day漏洞,其中16个已经被开发者确认或修复。
图3: CODE-AUGUR系统总览
图3: CODE-AUGUR系统总览,将智能体隐式推理转化为显式、可伪造的安全规范。

三大痛点:隐式推理、不可验证、难以复用

要理解CODE-AUGUR的牛逼之处,得先看看现有智能体漏洞检测的三个死穴。

第一个痛点是隐式推理。当一个LLM智能体分析完一段代码,说“这段代码是安全的”,它的推理过程是一长串自然语言轨迹——比如“这里有个校验函数IsProperColorSpace,它比较了颜色空间和像素格式,所以是匹配的”。听起来挺合理对吧?但问题在于,这个推理完全是语义模糊的,你无法精确知道它到底依赖了哪些程序状态。在论文的Figure 1例子中,Little CMS库有一个漏洞:颜色空间校验函数IsProperColorSpace对特殊值PT_ANY直接返回真,绕过了通道数比较。智能体沿着“正确路径”推理,以为校验已经覆盖了所有情况,完全没发现这个特例分支。而实际上,通道数不一致会导致后续解包时发生越界读。

第二个痛点更致命——不可验证。现有方案(比如Claude Code)的工作流程是:智能体先静态分析,标记出“可疑”的地方,然后通过动态执行去验证这些可疑点。但注意——只有被标记为“可疑”的地方才会被验证!那些被智能体判定为“安全”的区域呢?根本没人去碰(见Figure 2)。这就好比一个医生只看他认为有病的人,而对其他人大手一挥说“你们没事”,但完全不做任何检查。论文里指出,这种模式下,智能体的“安全判断”本身就是一个未经检验的隐式安全规范,而错误的安全判断恰恰是漏报的根源。

第三个痛点是难以复用。审计过程中积累的对代码库的理解——比如“像素格式和颜色空间的通道数必须一致”——这种知识本该是非常宝贵的,但传统审计只输出一个CVE漏洞报告,知识随报告一起搁置。下次审计同样的代码库,又得从头理解。更夸张的是,论文提到Linux内核中的Copy-Fail漏洞被修复后,很快又发生了类似的Dirty-Frag漏洞,根本原因就是没有被正确识别的安全约束模式再次被绕过。
图2: 现有智能体漏洞检测范式
图2: 现有智能体漏洞检测范式——智能体只验证可疑点,而“安全”的判断本身从未被验证。

方法破局:把“我觉得安全”变成可执行的断言

CODE-AUGUR的核心思想可以概括为:安全规范优先(Security-Specification-First)。具体分三步走。

第一步,构建威胁模型。CODE-AUGUR先通读整个代码库、文档和构建配置,提炼出一个结构化的威胁模型,记录安全边界、攻击者控制范围、安全相关状态变量等。比如在Little CMS例子中,威胁模型会明确指出“像素格式的通道数与颜色空间的通道数必须相等”这一全局安全约束。

第二步,不变式分析(Invariant Analysis)。这是最巧妙的地方——当CODE-AUGUR的静态推理器认为某个代码点是安全的,它不会就这么算了,而是把支撑这个判断的局部不变式(local invariant)写成一个可执行的断言(assertion),直接插入到源代码中。比如在Figure 1的CreateTransform函数里,如果智能体认为校验通过了,它会插入断言:assert(fmt.channels == cs.channels)。但注意,如果智能体觉得某个地方真有问题,它会直接标记为候选漏洞,走快速通道。

第三步,不变式伪造(Invariant Falsification)。插入断言之后,CODE-AUGUR不是靠LLM自己来验证——因为LLM有一样的盲点——而是把任务交给一个灰盒模糊测试器。这个模糊测试器的目标很明确:去生成输入,让程序执行到断言处并把断言搞崩。如果搞崩了,就说明智能体的判断有误,要么真的发现了漏洞,要么说明智能体对代码的理解有偏差,需要修正断言。如果不管怎么跑都崩不了,那这个安全判断就经受住了考验,可以被采信。

这个“推理-伪造-修正”的循环(Reason-Falsify-Refine Loop)不断对齐智能体对程序的理解与程序的实际行为。论文用了一个非常形象的比喻:传统的智能体审计就像在黑暗里摸象,摸到一条腿就说这是柱子;而CODE-AUGUR要求智能体把“我觉得这是柱子”的理由写下来,然后拿光照一照——原来是大象。
图1: Little CMS漏洞示例
图1: Little CMS中漏洞的简化代码片段。在构造阶段(上方),攻击者控制的配置构建了一个13通道的像素格式并使用了PT_ANY通配符,而库将变换的入口颜色空间固定为单通道。IsProperColorSpace通过PT_ANY分支接受格式而不比较通道数,因此智能体认为构造是安全的;CODE-AUGUR可以将此假设记录为局部不变式ϕ: fmt.channels == cs.channels,模糊测试器稍后会在创建变换时伪造该不变式。在执行阶段(下方),相同输入携带不一致的通道数通过分离的、后续的调用进入UnpackPixel,导致读出4字节缓冲区外,触发越界读。

闭环验证:智能体与模糊测试的“对手戏”

具体实现上,CODE-AUGUR的流程如图3所示,设计得非常工程化。我们来看算法的核心。

论文给出了两个算法伪代码(Algorithm 1和Algorithm 2)。算法1: 迭代不变式分析
算法1: 迭代不变式分析

算法1描述的是不变式分析的主循环。给定程序P和威胁模型T,它循环执行三个LLM驱动的步骤:GENERATEHYPOTHESIS(生成假设)、EVALUATEHYPOTHESIS(评估假设)、REFINEINVARIANT(修正不变式)。对每个代码点,如果评估确认不可达或不存在漏洞,就产生一个不变式ϕ插入到程序P中,生成插桩后的程序P'。然后异步调用FALSIFY子程序去模糊测试这个不变式。

算法2详细说明了伪造过程。算法2: 不变式伪造
算法2: 不变式伪造

首先进行模糊测试准备:把插桩后的P'编译成可模糊测试的目标,并准备好种子语料库。然后,一个规范指导的模糊测试器(Specification Guided Fuzzer)开始搜索,目标是找到能触发断言违例的输入i¬ϕ。这里的关键创新是:模糊测试器的反馈信号不仅仅基于代码覆盖率,还专门针对“距离断言越来越近”的程度进行奖励。也就是说,它不像传统模糊测试那样漫无目的地瞎跑,而是有方向地朝着断言所指定的程序点探索。

一旦找到违例输入,进入违例分类(Violation Triage)阶段。这里要判断:这个违例到底是真的漏洞,还是智能体断言写得太强(即程序行为其实是对的,是断言错了)?如果是后者,就反馈给智能体,修正断言。这样不仅发现了真漏洞,还让智能体对程序的理解更准了——相当于一个自学习的审计循环

你可能会问:为什么不用LLM自己来生成测试用例验证?论文专门解释了:LLM生成测试用例和做审计判断有相同的盲点,容易重复犯错。而模糊测试通过随机变异和覆盖率引导,能够探索LLM完全没考虑到的角落。把这两种范式的优势结合,正是CODE-AUGUR的精妙之处。
代码清单1: 威胁模型片段
代码清单1: 威胁模型片段,记录了Little CMS中的安全相关状态和信任边界。

实战证明:不仅在基准测试中碾压SOTA,更挖出22个真实世界的0-day漏洞

先看基准测试。论文在两个主流基准上进行评估:DARPA AIxCC(一个竞赛级基准)和OSV(开源漏洞数据库)。对比的方法包括Claude Code(当前最先进的商用智能体)和ATLANTIS(AIxCC的获胜系统)。

在AIxCC基准上,结果如下表:表1: AIxCC基准的漏洞发现结果
表1: 不同工具在AIxCC基准上的漏洞发现结果,支持不同的底层模型。

可以看到,CODE-AUGUR在使用Sonnet作为底层模型时发现了131个漏洞,远超Claude Code(98个)和ATLANTIS(27个),提升幅度达到34%到370%。即使使用DeepSeek模型,CODE-AUGUR仍然比Claude Code多出43%的漏洞。更厉害的是,论文专门拆分了漏洞发现的路径:有相当一部分漏洞是直接通过“不变式伪造”路径发现的,而不是传统的静态推理路径。表3: 按发现路径拆分的漏洞数
表3: CODE-AUGUR按发现路径拆分的漏洞数,展示了不变式伪造路径的贡献。

在OSV基准上(表2),CODE-AUGUR同样全面领先,而且只有它能覆盖所有8个开源项目,而Claude Code在libaom上直接运行失败了。表2: OSV基准的漏洞发现结果
表2: 不同工具在OSV基准上的漏洞发现结果(“–”表示该工具无法在该项目上运行)。

然后是最炸裂的部分——真实世界漏洞发现。CODE-AUGUR在广泛使用的开源项目中挖出了22个之前未知的漏洞,涉及gpsd(全球定位系统守护进程)、Little CMS(颜色管理库)、TinyGLTF(GLTF文件解析库)等。其中16个已经被开发者确认或修复,好几个还获得了漏洞赏金。比如在gpsd中,CODE-AUGUR发现了一个漏洞家族(satellites_visible),直接导致了连续四个月的修复过程(见Table 4)。表4: CODE-AUGUR发现的新漏洞总结
表4: CODE-AUGUR发现的之前未知漏洞总结。
插图

深远意义:可复用的安全规范,是AI审计超越“找Bug”的关键一步

CODE-AUGUR带来的不仅是更多的漏洞发现,更重要的是一种新范式。传统的AI安全审计输出的是漏洞报告,用完就扔;而CODE-AUGUR输出的是一套可复用的安全规范——那些经过验证的、嵌入源代码的不变式。

这些不变式有什么价值?论文给出了一个精彩的案例。在gpsd项目中,CODE-AUGUR发现了一个关于satellites_visible的漏洞家族,并推断出了一个关键的不变式ϕ。结果这个项目的开发者花了4个月时间、分3轮才彻底修复这个漏洞家族(Table 4下面的修复历史)。第一轮只是简单地钳制了一个崩溃点,算是不完整修复;第二轮才终于找到了根本原因,在多个输入源处限定了值范围,强制执行了ϕ;第三轮又扩大了容量,才算完全修复。整个过程中,每个修复步骤本质上都是在重新恢复CODE-AUGUR一次推断出的那个不变式。如果开发者一开始就拥有这个不变式,修复速度会快得多。

更进一步,这些不变式可以跨版本复用、跨入口点复用。比如Little CMS的不变式不仅适用于TestHarness的路径,还能用于其他调用路径,甚至能检测未来代码修改中是否重新引入同样的漏洞。这就是把安全知识从“一次性”变成了“可积累资产”。

论文还特别指出,CODE-AUGUR构建在广泛可用的LLM(如Sonnet、DeepSeek)之上,不需要专门训练的模型(比如Claude Mythos那种定制模型)。这意味着任何团队都可以基于现有的LLM,加上模糊测试集成,复现这套方案——虽然论文没有开源代码,但方法论已经非常清晰。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:

这篇论文解决什么问题?现有的AI智能体做漏洞检测时,它们的安全判断(“这段代码是安全的”)是隐式的、不可解释的,而且从未被验证。这导致大量漏洞被漏掉。CODE-AUGUR提出把智能体的安全判断显式化为可执行的断言,然后用模糊测试去挑战这些断言,从而发现智能体推理中的盲点,找到更多漏洞。

什么是“不变式”(Invariant)?和传统的“断言”有什么区别?在CODE-AUGUR中,不变式是一个局部不变量,即智能体认为在程序某一点上必须永远成立的条件,比如“fmt.channels == cs.channels”。它被直接写成源代码中的assert语句。和普通断言的区别在于:普通断言是开发者手动写的,而CODE-AUGUR的断言是智能体自动推断的,并且专门设计用来捕捉安全相关假设;另外,这些断言会被模糊测试系统地挑战。

CODE-AUGUR能直接落地产品吗?有什么限制?论文的方法论已经非常工程化,基于现有LLM(Sonnet/DeepSeek)和灰盒模糊测试器(如AFL、libFuzzer),理论上可以集成到CI/CD流水线中。但限制也很明显:首先,模糊测试需要构建可执行目标,对某些无法编译或模拟的项目不适用;其次,每次审计的计算成本较高(LLM推理+几个小时模糊测试);最后,论文没有开源代码,复现需要自行实现。不过对于大厂的安全团队来说,这是非常有前景的方向。

如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★★

将LLM隐式推理显式化为可伪造断言,并用模糊测试验证,这个思路在AI安全审计领域确实开创了新范式。不是简单堆叠工具,而是结合两种范式的根本优势。

实验合理度:★★★★★

在两个基准(AIxCC、OSV)上对比了多个SOTA方法,且使用了两种不同LLM(Sonnet、DeepSeek),结果稳健。还专门拆分了发现路径,排除归因混淆。唯一的遗憾是未开源,但实验设计本身很清晰。

学术研究价值:★★★★★

提出“安全规范优先”的研究方向,不仅提升了漏洞检测效果,更引发了如何验证AI审计可信度的深刻思考。对后续智能体安全、可解释AI、软件工程方法都有启发。

稳定性:★★★★☆

核心依赖LLM的推理质量和模糊测试的覆盖率。LLM可能在某些边缘情况下给出不合理的断言,但因为有模糊测试兜底,整体稳定性较好。不过对于无法构建可执行目标的库(如纯解释型语言或固件),稳定性会下降。

适应性以及泛化能力:★★★★☆

方法设计上适用于任何有可执行目标的语言(C/C++、Go、JVM等),对不同项目类型(库、命令行工具、网络服务)都有实验验证。但对那些没有明确输入格式或难以自动生成测试用例的程序,泛化能力受限。

硬件需求及成本:★★★☆☆

需要LLM推理(调用API或本地部署)+ 数小时的模糊测试,计算成本较高。但相比手动审计或定制模型训练,已经算省钱了。对于企业安全团队,投入产出比非常合理。

复现难度:★★★☆☆

论文没有开源代码,但方法论描述足够详细,实现的关键是集成一个LLM Agent + 模糊测试器(如AFL)。难点在于威胁模型的自动构建和断言分类逻辑。对于有经验的安全研究团队,3-6个月可以复现。

产品化成熟度:★★★★☆

已在实际开源项目中发现漏洞并获确认,证明技术路线可行。要产品化还需要解决:自动化测试环境的搭建、对各类语言/框架的适配、以及输出报告的可视化。目前看最接近生产的场景是集成到GitHub Actions等CI流水线中。

可能的问题:

依赖LLM生成断言的准确性——如果LLM生成的断言本身就非常弱(比如永远为真),模糊测试永远无法伪造,完全失去意义。虽然论文提到了这一步,但对断言质量的评估不够深入。另外,对多线程和时间相关漏洞,断言可能难以覆盖。

主要参考文献

[1] Anthropic. Claude Mythos: Agentic vulnerability detection. 2026.
[2] B. He and D. Song. AI agents for software security: Emerging capabilities and limitations. In IEEE S&P, 2026.
[3] J. Li et al. Inferring program invariants via large language models. In ICSE, 2025.
[4] C. Wang et al. Specification inference in the age of LLMs. In NeurIPS, 2025.
[5] OpenAI. Claude Code: An agent for code understanding and vulnerability detection. 2025.
[6] Anthropic. Claude Code system overview. https://docs.anthropic.com/en/docs/claude-code/overview, 2025.
[7] DARPA. AI Cyber Challenge (AIxCC). https://www.darpa.mil/program/ai-cyber-challenge, 2025.
[8] OSV.dev. Open Source Vulnerabilities database. https://osv.dev, 2025.
[9] ATLANTIS team. ATLANTIS: AIxCC-winning agentic vulnerability detection system. 2025.
[10] gpsd project. GPS service daemon. https://gitlab.com/gpsd/gpsd, 2026.
[11] K. Serebryany et al. AddressSanitizer: A fast address sanity checker. In USENIX ATC, 2012.
[12] M. Zalewski. American Fuzzy Lop (AFL). https://lcamtuf.coredump.cx/afl/, 2014.
[13] libFuzzer. A library for coverage-guided fuzz testing. https://llvm.org/docs/LibFuzzer.html, 2025.
[14] CodeInt. Jazzer: Coverage-guided fuzzing for JVM. https://github.com/CodeInt/Jazzer, 2025.

*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

end
漏洞检测新范式,让AI审计不再“黑箱”~
欢迎加入龙哥读论文粉丝群,扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 大模型安全+北京+国大+龙哥),根据格式备注,可更快被通过且邀请进群。
『龙哥读论文』微信群目前包含:图像处理、大模型及智能体、自动驾驶及机器人、AI医疗及AI金融5个群
wechat_helper dianzan
转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。