← 最新论文
💻 computer science

Neuro-symbolic Static Analysis with LLM-generated Vulnerability Patterns

本文提出了名为 MoCQ 的神经符号静态分析框架,该框架利用大语言模型自动生成漏洞检测模式,并通过符号验证迭代优化,在多种编程语言中实现了媲美专家手动开发的检测精度,同时显著缩短了开发时间并发现了大量未知漏洞。

原作者: Penghui Li, Songchen Yao, Josef Sarfati Korich, Changhua Luo, Jianjia Yu, Yinzhi Cao, Junfeng Yang

发布于 2026-04-15
📖 1 分钟阅读☕ 轻松阅读

原作者: Penghui Li, Songchen Yao, Josef Sarfati Korich, Changhua Luo, Jianjia Yu, Yinzhi Cao, Junfeng Yang

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

这篇论文介绍了一个名为 MoCQ 的新系统,它就像是一个**“超级智能的漏洞猎手”**。

为了让你更容易理解,我们可以把寻找软件漏洞的过程想象成**“在巨大的图书馆里寻找一本写错了的说明书”**。

1. 以前的做法:老练的图书管理员(专家)

以前,要找出软件里的漏洞,需要依靠经验丰富的安全专家(就像老练的图书管理员)。

  • 怎么做: 专家需要 manually(手动)编写一套套复杂的“搜索规则”(比如:“如果看到有人用红笔在‘密码’这个词上画圈,就标记为危险”)。
  • 缺点: 这非常。编写一套规则可能需要几周甚至几个月。而且,人的精力有限,专家可能会漏掉一些很隐蔽的写法(比如用蓝笔画圈,或者把“密码”写成了“密玛”),导致漏掉很多危险。

2. 现在的尝试:只会死记硬背的 AI(纯大模型)

后来,人们尝试用大语言模型(LLM)来帮忙。

  • 怎么做: 直接问 AI:“这段代码有漏洞吗?”
  • 缺点: AI 虽然聪明,但经常**“一本正经地胡说八道”**(幻觉)。它可能看不懂代码的深层逻辑,或者因为记不住整个图书馆的布局(跨文件分析),导致要么漏报,要么把正常的代码当成漏洞(误报)。而且,它每次都要重新读一遍代码,效率很低。

3. MoCQ 的绝招:给 AI 配了个“翻译官”和“纠错员”

MoCQ 把AI 的聪明才智传统工具的严谨逻辑结合在了一起,就像给 AI 配了一个**“翻译官”和一个“纠错员”**。

第一步:给 AI 一本“精简版字典”(DSL Subsetting)

  • 问题: 静态分析工具(如 Joern 和 CodeQL)有自己的“专业语言”(DSL),就像图书馆有几千种分类法。让 AI 直接学全套,它会被吓晕,写出来的规则全是语法错误。
  • MoCQ 的做法: 它先帮 AI 整理出一本**“精简版字典”**。它发现很多复杂的规则其实是可以互相替代的,于是只保留最核心、最常用的那些规则。
  • 比喻: 就像教一个外国人开出租车,不需要让他背下整本《交通法规》,只需要教他“红灯停、绿灯行、看后视镜”这几条核心规则,他就能开得很好了。

第二步:AI 写规则,纠错员来“找茬”(迭代反馈循环)

  • 问题: 即使有了字典,AI 第一次写出来的规则可能还是错的(比如漏了某个条件,或者写得太死板,只认特定的变量名)。
  • MoCQ 的做法:
    1. AI 试着写一个规则。
    2. 纠错员(符号验证器) 拿着这个规则去跑测试代码。
    3. 如果出错了,纠错员会告诉 AI:“这里语法错了”、“这里运行时崩溃了”或者“这里逻辑不对,没抓到那个漏洞”。
    4. AI 根据反馈修改规则,再试一次。
  • 比喻: 就像**“学画画”。AI 先画一笔,老师(纠错员)说:“手画歪了,颜色不对”。AI 擦掉重画,老师又说:“这次手对了,但背景太乱”。经过几次“画 - 改 - 画”**的循环,AI 终于画出了一幅完美的画(精准的漏洞检测规则)。

第三步:举一反三(泛化与合并)

  • 问题: AI 可能会“死记硬背”,比如它学会了找变量名 user1 的漏洞,但遇到 user2 就找不到了。
  • MoCQ 的做法: 它会检查规则是否太死板,并强迫 AI 把规则改得更通用(比如把 user1 改成“任何用户”)。最后,它把针对几十个不同例子的规则合并成一个超级规则,这样扫描速度飞快。

4. 成果:又快又准,还能发现新大陆

MoCQ 在 4 种编程语言(C/C++, Java, PHP, JavaScript)和 12 种漏洞类型上进行了测试,结果令人震惊:

  • 速度快: 以前专家需要几周才能写好的规则,MoCQ 只需要几小时就能自动生成。
  • 准度高: 它的检测能力已经能和人类专家编写的规则平起平坐
  • 发现新大陆: 最厉害的是,MoCQ 发现了46 种连人类专家都漏掉的新漏洞模式,并在真实软件中挖出了25 个以前没人知道的漏洞(0-day 漏洞)。

总结

MoCQ 就像一个“超级实习生”
它虽然刚开始什么都不懂,但它有一个超级聪明的导师(AI)和一个严格但耐心的教练(符号验证器)。通过不断的“试错 - 反馈 - 修正”,它能在极短的时间内学会如何像顶级专家一样寻找漏洞,甚至还能发现专家都没注意到的死角。

这项技术让软件安全检测变得更自动化、更快速,也让普通开发者更容易保护自己的代码。

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

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

试用 Digest →