← 最新论文
🤖 machine learning

Teaching LLMs Program Semantics via Symbolic Execution Traces

本文介绍了一种针对 500 个 C 语言验证任务的新评估框架,并证明在约 3,000 条符号执行轨迹上训练 Qwen3-8B 模型并结合思维链推理,可显著提升跨多种属性类型的违规检测能力与整体准确率,其表现优于更大规模的模型,并揭示了这两种技术之间存在超加性协同效应。

原作者: Jonas Bayer, Stefan Zetzsche, Olivier Bouissou, Remi Delmas, Michael Tautschnig, Soonho Kong

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

原作者: Jonas Bayer, Stefan Zetzsche, Olivier Bouissou, Remi Delmas, Michael Tautschnig, Soonho Kong

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

以下是用简单语言和创意类比对该论文的解读。

宏观图景:教导 AI 识别代码漏洞

想象你有一位非常聪明的学生(即 AI),它已经阅读了数百万本关于如何编写代码的书籍。它擅长复述规则,并能说:“是的,这段代码看起来是安全的!”但当你问它:“这段代码里有没有隐藏的陷阱?”时,它往往视而不见。它对自己的一般知识过于自信,以至于忽略了那些会导致软件崩溃或数据泄露的具体、棘手的细节。

这篇论文介绍了一种教导该学生如何真正发现陷阱的新方法,而不仅仅是说代码看起来没问题。

问题所在:“过度乐观”的学生

研究人员首先在 500 个棘手的 C 语言代码谜题上测试了 14 种不同的 AI 模型。这些谜题要求 AI 判断代码是安全的,还是存在漏洞(例如内存泄漏或无限循环)。

他们发现了一个奇怪的模式:

  • 好消息: 当代码确实安全时,AI 非常擅长说“这是安全的”。
  • 坏消息: 当代码确实有故障时,AI 极不擅长说“这是坏的”。

这就像一名保安,在放行属于该区域的人时表现出色,但在阻止真正的窃贼时却糟糕透顶。即使是最大、最强大的 AI(有些拥有数千亿个“脑细胞”),也无法在短程序中识别出漏洞,而且随着代码变长,其表现反而更差。

解决方案:用“魔法侦探”进行训练

为了解决这个问题,研究人员并没有仅仅给 AI 提供更多代码去阅读。相反,他们使用了一种名为Soteria的特殊工具。

把 Soteria 想象成一名超级侦探,它不仅仅运行一次代码;它会同时用所有可能的输入组合来运行代码。这就像一名侦探同时检查迷宫中的每一条可能路径,以找出那条通向死胡同的路径。

  1. 训练数据: 研究人员在 100 万个开源代码文件上运行了 Soteria。Soteria 发现了约 34,000 个包含漏洞的文件,并写下了详细的“犯罪现场报告”(追踪记录),精确解释了漏洞为何发生。
  2. 课程: 他们选取了 AI(具体是一个名为 Qwen3-8B 的模型),并仅向其喂食了3,208 份最明显的漏洞报告
  3. 转折: 他们不仅喂给 AI 原始代码,还喂给了它侦探的笔记(符号执行追踪记录)。这些笔记展示了发现漏洞的逐步逻辑。

秘诀:“思考”与“知晓”

研究人员对 AI 的学习方式发现了一些令人惊讶的事情:

  • 仅仅阅读漏洞报告是不够的。
  • 仅仅告诉 AI 要“更深入地思考”(思维链)也是不够的。
  • 但将两者结合起来? 那是一种神奇的组合。

这就像教导一名学生。如果你只给他们一本包含已解数学题的教科书(追踪记录),他们会死记硬背答案,却学不到方法。如果你让他们“逐步思考”而没有示例,他们会迷失方向。但如果你向他们展示已解的题目,强迫他们写出自己的逐步推理,他们最终就能理解其中的逻辑。

论文将这种现象称为**“超加性”**。整体大于部分之和。

结果:更聪明、更小的模型

经过这种特殊训练后,结果令人印象深刻:

  • 小模型获胜: 经过训练的 80 亿参数模型,在识别漏洞方面比未经过此类训练的 320 亿参数模型更出色。
  • 差距缩小: AI 从漏掉大多数漏洞,转变为更频繁地捕捉到它们。事实上,它发现漏洞的能力提高了近 18 个百分点。
  • 通用知识: 尽管训练仅专注于内存和溢出漏洞,但 AI 在识别所有类型的漏洞方面都变得更好,包括它从未见过的漏洞(如数据竞争)。它学会了验证的技能,而不仅仅是具体的答案。

为什么这很重要

这篇论文表明,要让 AI 更擅长发现软件漏洞,你并不一定需要更大的“大脑”。你需要更好的训练数据,这些数据能教导 AI 如何推理为何事情会出错。

通过使用形式化验证工具生成的“侦探报告”,他们教导 AI 停止猜测,转而通过逻辑证明代码是安全的还是坏的。这是一种从“我认为这很安全”到“我可以证明这是坏的,因为 X、Y 和 Z"的转变。

简而言之: 他们通过向 AI 展示犯罪现场照片和侦探的笔记本,而不是仅仅给它更多的书去读,从而教会了 AI 成为一名更优秀的侦探。

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

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

试用 Digest →