每天三篇 arXiv cs.SE 论文 · 讲给不懂这个领域的人

← 全部论文

让AI写侦探脚本而非现场勘查

论文讲的是:利用大语言模型自动生成静态分析查询代码,以低成本大规模检测软件漏洞。

Ivana Clairine Irsan, Ratnadira Widyasari, Huihui Huang, Ting Zhang, Yue Liu, Ouh Eng Lieh, Shar Lwin Khin, Kang Hong Jin, David Lo · 26.09.09 · arXiv:2609.10412

1问题

想象一个巨大的代码仓库,像一座拥有千万扇门的迷宫,黑客想找到那几扇没锁好的门(安全漏洞)。传统的守门人叫“静态分析工具”,比如 CodeQL,它不进去搜,而是手里拿着几张画好了的“通缉令”(查询规则)在门口比对。只要犯事人的脸对得上通缉令,就抓;对不上,哪怕他正撬门也没办法。问题是,这些通缉令全是人工画的,每发现一个新式犯罪手法,专家就得熬夜重新画图。如果有一万种新漏洞,就需要一万张新图,而且必须精准无误,否则就是误报或漏报。这种靠堆人力去维护规则库的方式,在大到惊人的现代软件规模面前,根本转不动。

2翻译

转折点在于,大家通常觉得大语言模型(LLM)太贵且啰嗦,不适合直接进迷宫找小偷,所以转而思考:能不能只让大模型做一件事——画通缉令?作者把这个思路付诸实践。他们把历史上已经抓获的黑客案例(漏洞数据)喂给大模型,让大模型学习这些案例的特征,然后生成对应的 CodeQL “通缉令”代码。这里有一个承重的类比:大模型不再是那个在迷宫里乱跑的笨警察,而是成为了“刑侦顾问”。它的工作不是遍历所有代码,而是阅读“卷宗”(CVE 漏洞描述),写出抓捕指令。结果非常惊人。用大模型生成的通缉令去跑测试,平均 F1 分数(衡量准确率和召回率的指标)比原来人工写的基准提高了 82%。这意味着,同样的代码库,以前能抓到的坏人,现在多抓了八成以上。更反直觉的是成本账:直接让大模型去扫描整个代码库,花费可能是几千美元且耗时极长;但让大模型花几块钱写好规则,再用免费或廉价的静态分析工具去跑,总体成本几乎可以忽略不计。还有一个没有被明说但在数据中隐含的发现:大模型生成的规则往往比人类更“死板”但也更“全面”,因为它会捕捉到人类经验主义忽略的微弱模式。

3核心概念

1. 自动查询生成器:这是主角的核心身份。简单来说,它是一个把自然语言描述的漏洞案例,翻译成机器可读的搜索代码的程序。它的输入是“某某系统在什么情况下会被攻击”,输出是一段能在代码库里运行并找出该情况的 SQL 类查询语句。2. 混合架构策略:这是一个关键的设计选择。故事里没有让大模型单打独斗,也没有完全依赖传统工具,而是把它们拆开。大模型负责“理解意图”和“编写剧本”,传统静态分析工具负责“执行检查”和“海量匹配”。这种分工利用了 AI 的理解力和传统工具的确定性速度,解决了各自独立的缺陷。3. 成本效益权衡:这是决定胜负的计算逻辑。研究者没有只谈准确率,而是引入了金钱和时间维度。结论是,虽然单条规则的生成需要付费,但因为它是“一次写入,多次复用”,分摊到每一次扫描上的成本远低于让 AI 实时介入。这是一种从“计算密集型”向“知识密集型”转移的策略。

4洞见

不要试图用昂贵的智能去替代低成本的执行,而要用廉价的知识去武装低成本的执行。

5博导审稿

选题眼光很准,切中了安全领域最大的痛点:规则维护成本高于检测价值。方法成熟度上,这个思路在工程上是成立的,但有一个未被讨论的根本隐忧:大模型生成的查询可能包含“幻觉”逻辑,即它写得出来的规则,在实际运行中可能导致误报激增,或者因为过于泛化而触发性能瓶颈。实验诚意方面,数字很漂亮,但缺乏对“长期维护性”的验证,比如半年后代码库更新,这些 AI 写的规则会不会失效?写作功力不错,逻辑清晰,但从强接受到弱接受的边界在于,这更像是一个高效的工程流水线优化,而非算法层面的突破。判决:weak accept。理由:极具实用价值,但需警惕黑盒规则的可解释性风险。

6启发

这意味着你可以:迁移:把你手中那些需要人工逐个配置的检查清单(无论是代码规范还是业务合规),变成由大模型根据历史错误自动生成配置文件的流程。混搭:如果你正在构建自动化测试体系,可以引入“大模型生成断言 + 传统框架执行”的模式,解决测试用例手写效率低的问题。反转:默认假设是“越智能的系统越能直接发现问题”,但这篇论文证明,“间接的智能”(AI 指导工具)往往比“直接的智能”(AI 直接操作)更可靠且便宜。