“ 在真实软件系统中,漏洞往往并非孤立存在于单个函数内部,而是隐藏在跨函数调用、参数传递与返回值依赖之中。然而,大量现有漏洞检测方法仍局限于过程内(Intra-procedural)分析,在函数边界处丢失关键语义信息,导致误报与漏报频发。

针对这一核心痛点,研究者提出:跨过程语义补全(Inter-procedural Semantic Completion)。该方法通过显式恢复函数间缺失的语义关联,使深度学习模型能够获得更完整、更连贯的程序语义表示,从而显著提升漏洞检测性能。”

  • 📄 论文标题:Enhancing Vulnerability Detection via Inter-procedural Semantic Completion

  • 📅 发表时间:International Symposium on Software Testing and Analysis(ISSTA), 2025

  • 🏫 作者单位:南洋理工大学、北京大学

  • 💡开源代码:https://sites.google.com/view/vulnsc-issta

01—方法介绍

如图1所示,Linux内核中一个真实存在的“双重释放”漏洞已在提交e07754e中修复。第12行调用put_device()函数,该函数调用vhost_vdpa_release_dev(),继而调用ida_simple_remove()并释放“v”。随后在第13行再次调用ida_simple_remove()释放“v”,导致双重释放。若忽略被调用函数put_device()和ida_simple_remove()的源代码,将难以识别该漏洞。忽视跨过程上下文可能降低识别跨越单个函数的复杂漏洞的能力。

图片

图 1. Linux中一个提交ID为e07754e的“双重释放”漏洞

论文的核心思想是:在不引入高昂分析开销的前提下,补全跨函数调用链中的语义缺失。整体框架可概括为三步:

① 跨过程依赖识别

分析函数调用关系,定位参数传递、返回值使用等关键跨过程语义点。

② 语义补全建模

将被调用函数的关键信息映射回调用点,补全调用上下文中的语义空洞。

③ 漏洞检测学习

在增强后的代码表示上训练漏洞检测模型,实现更精准预测。

图片

图 2. VulnSC整体流程  

小结:与直接扩大调用图或堆叠复杂 GNN 不同,该方法聚焦于“补什么语义最关键”,强调有效性而非复杂度。

02—关键机制

  1. 显式跨过程语义补全,针对函数边界语义缺失问题提出直接解决方案。
  2. 轻量级设计,避免构建超大调用图,降低分析与推理成本。
  3. 模型无关性强,可与多种现有漏洞检测模型进行集成。

      模块

      设计思路

      作用

      跨过程语义定位

      分析函数调用、参数与返回值依赖

      识别过程边界处的语义断点

      语义补全策略

      将被调用函数的关键行为映射至调用点

      恢复完整执行语义

      增强代码表示

      与原始代码特征进行融合

      为漏洞检测提供更丰富上下文

      漏洞预测模型

      深度学习分类器

      判断代码是否存在漏洞

      小结:该机制的关键在于“语义补全而非语义替换”,既保持原有结构,又避免信息缺失。

      03—实验结果

      实验在两个主流漏洞数据集Devign和Big-Vul上验证了跨过程语义补全的有效性,主要实验结果如下。


      (1)实验首先评估VulnSC生成的代码摘要质量。此项评估面临的关键挑战在于,研究中使用的Devign和Big-Vul数据集缺乏参考摘要。

      表1. 代码摘要评估

      图片

      (2)实验评估VulnSC在增强现有基于学习的漏洞检测方法方面的有效性。实验选取GPT-4o作为代表性大型语言模型,来展示VulnSC带来的检测性能提升。

      表2. 与基线模型漏洞检测结果对比

      图片

      小结:自动化指标与人工评估均证实,VulnSC通过运用不同大型语言模型及提示策略,可生成高质量摘要,有效充当漏洞检测的跨过程语义工具。此外,相较于现有的基于大型语言模型的漏洞检测方法,VulnSC 展现出显著优势,在准确率和F1分数两方面均表现更优

      📌 总结

      该论文从程序分析视角出发,重新审视了漏洞检测中长期存在却被低估的问题——跨过程语义缺失。通过提出跨过程语义补全机制,为漏洞检测模型提供了更贴近真实执行逻辑的输入表示。这一工作表明,未来漏洞检测的突破点,或许不只在于更大的模型,而在于更“完整”的程序语义理解

      📣 欢迎留言讨论

      • 你认为跨过程分析是否应成为漏洞检测模型的“标配”?

      • 在工业级 CI/CD 场景中,语义补全方案是否具备足够的工程可落地性?

      📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!

      Logo

      汇聚全球AI编程工具,助力开发者即刻编程。

      更多推荐