← 最新论文
💻 computer science

Agentic Model Checking

本文介绍了“代理模型检测”,这是一种将用于规范推断与细化等语义任务的LLM代理与有界模型检测后端相结合的范式,旨在通过具有组合性且保证健全性的分析,严格验证LLM生成的系统代码。

原作者: Youcheng Sun, Jiawen Liu, Daniel Kroening, Jason Xue

发布于 2026-05-21
📖 1 分钟阅读☕ 轻松阅读

原作者: Youcheng Sun, Jiawen Liu, Daniel Kroening, Jason Xue

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你雇佣了一位非常快速、非常自信的机器人建筑师(一个大语言模型)来建造一台复杂的机器,比如汽车引擎或计算机操作系统。这位机器人在几分钟内写出了数千行代码。但问题在于:这位机器人擅长让事物看起来正确,却常常忘记加入安全护栏。它假设驾驶员永远不会试图把车开下悬崖,因此它没有建造护栏。

这篇论文介绍了一种检查这位机器人工作的新方法,称为代理模型检测。这就像一位创意侦探与一位冷酷法官之间的合作。

问题:“静默”的漏洞

当机器人为系统(如操作系统或编译器)编写代码时,它们经常将安全规则设为“隐式”。

  • 机器人的逻辑:“我会写一个读取文件的函数。我假设文件存在。如果不存在,嗯,那是调用者的问题。”
  • 现实情况:如果黑客发送一个虚假文件,整个系统就会崩溃。
  • 问题所在:传统的代码审查员(人类或人工智能)可能会查看代码并说:“看起来没问题!”因为安全检查隐藏在代码的其他部分。他们忽略了这样一个事实:如果以错误的方式使用该函数,该函数本身是危险的。

解决方案:侦探与法官

作者提出了一种名为BMC-Agent的系统,将工作分为两个角色:

  1. 侦探(大语言模型代理)

    • 角色:这是富有创造力的部分。侦探阅读代码和上下文(谁在调用这个函数?),并推测安全规则。
    • 类比:想象侦探阅读蓝图并说:“啊,这扇门只有在站在它前面的人戴着头盔时才是安全的。我会写下一条规则:‘必须佩戴头盔。’"
    • 侦探还会查看代码中“可疑”的部分,并决定:“嘿,我们应该检查一下这个数学计算是否会溢出。”
  2. 法官(BMC 后端)

    • 角色:这是严格、数学化的部分。它接收侦探的规则并证明它们。它不猜测;它计算每一种可能的情况。
    • 类比:法官接收“必须佩戴头盔”的规则并运行模拟。它尝试用没有头盔、用破损的头盔、用纸板做的头盔打开这扇门。
    • 如果法官发现一种在没有头盔的情况下门被打开的场景,它就会生成一个反例:一个具体的、确凿的证明,说明崩溃是如何发生的。

它们如何协同工作(“代理”循环)

魔力发生在它们的对话中:

  1. 提出:侦探写下一条安全规则(例如,“此函数需要一个非空指针”)。
  2. 验证:法官尝试打破它。
    • 如果法官说“安全”:太好了!代码已通过该特定规则的验证。
    • 如果法官说“被识破”:它向侦探提供一个具体的代码失败示例(例如,“我传递了一个空指针,结果它崩溃了”)。
  3. 修正:侦探查看失败情况。“哦,我明白了!我的规则太弱了。我还需要添加对‘有效内存’的检查。”
  4. 重复:侦探更新规则,法官再次检查。

“组合式”技巧:一次检查一块砖

一次性检查整个操作系统就像试图同时解决一个拥有一百万块拼图的难题——这是不可能的。

  • 论文的方法:他们一次检查一个函数
  • 类比:想象检查墙上的单块砖。你不需要知道整面墙是如何建造的;你只需要知道:“如果我把这块砖放在这里,它能撑住吗?”
  • 他们将每个函数视为一个小型的、隔离的房间。如果一个函数调用了另一个函数,他们就假装另一个函数是一个“魔法盒子”,总是能正确工作(一个“存根”)。这让数学计算保持简单且快速。

“现实性”过滤器:并非所有崩溃都是真实的

有时,法官会发现一个崩溃,但这是一个“虚假”崩溃,在现实世界中绝不可能发生(就像汽车穿过墙壁,因为模拟忘记了重力)。

  • 流程:在报告漏洞之前,系统会将其通过现实性审计
  • 类比:这就像一位电影评论家。“好吧,电影里汽车撞毁了,但演员是真的把车开下了悬崖,还是只是特效?”
  • 系统检查:“用户真的可能输入这个数据吗?”如果答案是“否”,那就是误报。如果答案是“是”,那就是真实漏洞。

他们的发现(结果)

该团队在由人工智能编写的代码上测试了这种方法,涉及:

  • VibeOS:一个自定义的操作系统内核。
  • 现实世界库:成熟的代码,如 OpenSSL 和 libxml2。
  • Claude 的 C 编译器:一个完全由人工智能用 Rust 编写的编译器。

结果

  • 他们发现了62 个真实且已确认的漏洞,这些漏洞是人类和其他工具所遗漏的。
  • 其中许多是“静默”漏洞:如果你正确使用代码,它运行良好,但如果黑客发送奇怪的输入,它会立即崩溃。
  • 他们还证明了代码的某些部分实际上是安全的(“清洁验证”),这与发现漏洞同样重要。

一句话总结

这篇论文描述了一个系统,其中富有创造力的 AI起草代码的安全规则,而数学机器人则严格测试这些规则以发现现实世界的崩溃,并过滤掉虚假警报,为开发人员提供一份清晰的实际危险清单。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →