← 最新论文
💻 computer science

Bridging Code Property Graphs and Language Models for Program Analysis

该论文介绍了开源工具 codebadger,它通过模型上下文协议(MCP)将 Joern 代码属性图引擎与大语言模型相结合,使模型能够跨越整个代码库进行语义推理,从而有效解决现有方法在处理大规模代码库时因上下文限制和数据流缺失而难以发现复杂安全漏洞的问题。

原作者: Ahmed Lekssays

发布于 2026-03-27
📖 1 分钟阅读☕ 轻松阅读

原作者: Ahmed Lekssays

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

这篇论文介绍了一个名为 codebadger 的新工具,它就像是一位给大型语言模型(LLM,比如现在的 AI 助手)配发的“超级侦探眼镜”和“专业工具箱”。

为了让你更容易理解,我们可以把分析复杂的代码库想象成在一座巨大的、迷宫般的图书馆里寻找一本特定的书,或者找出图书馆里所有的安全隐患

1. 以前的困境:AI 的“失忆”和“近视”

codebadger 出现之前,让 AI 去分析像 Linux 内核或大型软件这样包含成千上万个文件的代码库,面临三个大问题:

  • 记不住(Token 限制): 想象 AI 的脑子(上下文窗口)就像一个只能装下一杯水的杯子。而整个代码库是一座巨大的海洋。AI 没法把整片海洋的水都倒进杯子里,它只能喝一口(只看几个文件)。结果就是,它错过了那些藏在海洋深处的漏洞(比如一个函数在 A 文件里出错,导致 B 文件里的程序崩溃)。
  • 看不懂(缺乏语义): 传统的 AI 找代码就像用“关键词搜索”。如果你找“苹果”,它可能给你一堆水果店的图片,却找不到“苹果公司”的代码。它看不懂代码之间的逻辑关系(比如:这个变量是从哪里来的?它经过了哪些函数?)。
  • 不会问(不会写查询语言): 专业的代码分析工具(叫 CPG)需要一种像“天书”一样的专业语言(CPGQL)来提问。让 AI 直接写这种语言,就像让一个刚学中文的外国人去写复杂的法律条文,它经常会胡编乱造(幻觉),问不出正确的问题。

2. 解决方案:codebadger 来了!

codebadger 就像一个聪明的图书管理员助手,它站在 AI 和巨大的代码图书馆之间。

  • 它不是让 AI 去读所有的书: 当 AI 想知道“哪里可能不安全”时,它不需要把 8000 个文件全读一遍。
  • 它提供“魔法工具”: codebadger 把复杂的代码分析变成了几个简单的按钮(工具)。AI 只需要说:“帮我看看这个变量是从哪里流过来的?”或者“帮我找出所有可能溢出内存的地方”。
  • 背后的魔法(Joern CPG): 在后台,codebadger 连接了一个叫 Joern 的超级引擎。这个引擎已经把整个图书馆的地图(代码属性图 CPG)画好了,标出了所有的路、所有的房间和所有的连接。AI 不需要自己画地图,它只需要告诉管理员助手:“我想去那个房间”,助手就会直接带它过去,或者把那个房间的关键信息递给它。

3. 这个工具有多厉害?(三个真实案例)

论文里讲了三个故事,展示了 codebadger 如何帮助 AI 像人类专家一样工作:

案例一:在 8000 个函数的迷宫里找路(代码理解)

  • 任务: 检查一个巨大的数学库(GGML)有没有内存安全问题。
  • 以前: AI 会晕头转向,或者因为读不完而放弃。
  • 现在: AI 使用 codebadger 的“地图导航”功能。它先问:“整个库有多大?”(得到概览),然后问:“哪里在分配内存?”(定位源头),再问:“这些数据流到了哪里?”(追踪路径)。
  • 结果: AI 成功找到了几个隐蔽的漏洞,比如“整数溢出”(算错了数字导致内存不够用),就像侦探在迷宫里精准地找到了藏宝图上的陷阱。

案例二:发现了一个从未被报道的“炸弹”(漏洞发现)

  • 任务: 检查一个处理图片的库(libtiff)。
  • 过程: AI 发现了一个奇怪的地方:图片的偏移量(col_offset)没有经过检查就被用来计算内存位置。
  • 推理: AI 利用工具追踪数据流,发现如果黑客输入一个巨大的数字,程序就会在内存中“越界”,导致崩溃或被控制。
  • 结果: AI 不仅发现了这个漏洞,还现场写出了一个“炸弹”(攻击代码),并成功让程序崩溃(被 ASAN 工具证实)。更厉害的是,这个漏洞之前没人发现过!后来官方修复了它,证明 AI 找得准。

案例三:第一次就修好了一个著名的漏洞(漏洞修复)

  • 任务: 修复一个著名的 XML 库(libxml2)中的整数溢出漏洞(CVE-2025-6021)。
  • 过程: AI 不需要阅读所有代码。它使用“切片”工具(就像切蛋糕一样,只切下和漏洞相关的那一小块),精准地定位到问题出在两个数字相加时可能溢出。
  • 结果: AI 第一次尝试就写出了完美的修复补丁。这个补丁和官方维护者后来发布的修复方案几乎一模一样。这证明了 AI 不仅能“找茬”,还能“修好”。

4. 总结:这意味着什么?

codebadger 的核心思想是:不要试图让 AI 变成全知全能的超人,而是给它配上专业的工具。

  • 以前: 让 AI 硬啃代码,它要么记不住,要么看不懂。
  • 现在: AI 像一个经验丰富的侦探,它手里拿着 codebadger 提供的“放大镜”、“追踪器”和“地图”。它不需要读遍全书,只需要在关键的地方使用工具,就能理解整个系统的运作,发现深藏的安全隐患,并给出修复方案。

这项技术让 AI 在网络安全领域变得真正实用,能够处理现实世界中那些庞大、复杂且充满陷阱的代码库,而不再局限于简单的代码片段。

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

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

试用 Digest →