论文
ObliVul:用于代码漏洞检测的警报条件安全义务建模和双向反事实验证
ObliVul: Alert-Conditioned Safety Obligation Modeling and Bidirectional Counterfactual Validation for Code Vulnerability Detection
摘要
在现实的软件开发中,漏洞检测的主要挑战通常不是发现可疑代码,而是在静态分析产生的大量候选警报中识别哪些警报真正值得关注。现有的基于学习的方法主要在功能或线路级别识别可疑模式,因此很难提取以单个警报为中心的完整程序证据。虽然大型语言模型可以从本地程序事实推断出风险来源、危险操作、保护条件和状态前提条件,但这些语义信息无法与具体的程序节点、依赖关系和传播路径可靠地对齐,因此不足以验证相应的安全义务是否真正影响当前的警报。为了解决这个问题,我们提出了 ObliVul,一种用于漏洞检测的警报条件安全义务建模和双向反事实验证框架。对于每个候选警报,ObliVul 首先从代码中提取本地证据包 (LEP) 属性图(CPG)并使用大型语言模型来恢复候选人的安全义务。然后,它将安全义务与程序节点、依赖边和路径范围对齐,以构建本地安全义务图(LSOG)。最后,VAFI 聚合补充的经过验证的警报证据,同时抑制冗余或较弱的证据,以生成功能级漏洞预测。实验结果表明,ObliVul 可以有效地区分易受攻击的版本和固定版本,并减少固定代码上的持续误报。消融研究进一步证实了每个组件对于安全义务恢复、风险响应验证和功能级漏洞推断的必要性。