CLeVeR:用多模态对比学习把“漏洞语义”从代码里挖出来
“现有自动化漏洞检测模型往往学习的是「整体功函数语义」这会带入与漏洞无关的噪声影响检测效果。CLeVeR提出用对比学习contrastive learning在代码与漏洞描述之间建立语义对齐并通过Adapter、Representation Refinement与 Description Simulator三个模块解决模态差异、语义不平衡与训练/推理阶段输入不一致的问题从而生成更“聚焦漏洞”的代码表示。”论文CLeVeR: Multi-modal Contrastive Learning for Vulnerability Code Representation作者Jiayuan Li, Lei Cui*,等单位中国科学院信息工程研究所、北京邮电大学等会议信息Findings of ACL 2025ACL 2025开源代码https://github.com/yoimiya-nlp/CLeVeR01—方法介绍CLeVeR的设计策略分为两阶段预训练pre-training与微调/下游fine-tuning / downstream。预训练阶段模型使用 CodeBERT/CPG 提取代码表示使用 RoBERTa 提取漏洞描述表示随后通过 Adapter 将两模态投射到公共空间再用 Cross-attentionRepresentation Refinement生成对漏洞敏感的「脆弱性代码表示vulnerability code representation」。对齐目标由 InfoNCE对比损失驱动。为了解决测试时没有描述这一问题作者提出 Description Simulator在预训练中学习从代码直接预测“被 refine 后”的表示使模型在推理时仍能生成高质量的漏洞表示。CLeVeR 模型整体架构示意小结CLeVeR 通过“描述——代码”的语义对齐把漏洞描述中的判别特征映射到代码表示得到更具辨识度的漏洞向量。02—关键机制机制实现要点核心作用Adapter对 codeCodeBERTCPG与 descriptionRoBERTa各自输出做轻量投射使两模态落到同一维度/空间。缓解模态语义差异便于后续对齐。Representation Refinement以描述向量作为 Query对 code 表示做 cross-attention提取与漏洞描述相关的 code 子表示。从整体代码语义中抽取“漏洞相关”部分提升判别能力。Description Simulator预训练阶段学习从原始 code 表示预测 refined 表示在微调/测试时用以代替真实描述。解决训练/推理阶段描述缺失的不一致问题使模型可在仅有代码时推理。Contrastive Loss (InfoNCE)在批内将正确的code, description对作为正样本其它对作为负样本优化相似性。将描述语义的判别信息注入 code 表示空间提升检出/分类效果。小结三类模块协同Adapter对齐空间Refinement抽取漏洞语义Simulator保证无描述时仍能生成高质量表示最终由对比学习把描述信息注入表示空间。03—实验结果作者构建了 VCLData基于 SARD用于预训练共280,034个 C/C 函数覆盖 146 个 CWE并按 80%/20% 分为预训练/微调集合。为全面评估作者在三类数据上测试下游检测性能VCLData-ft微调集、SynData半合成基准、RealDataFFmpegQemu 合并真实集。检测任务对比结果如下数值为平均值方法VCLData-ft (A / P / R / F1)APRF1CLeVeR96.5392.9298.4195.58CasualVul90.6790.3084.6787.39UnixCoder89.3087.9583.4385.63CodeT588.2586.0482.6884.32SynData (A / P / R / F1)CLeVeR98.1996.14100.0098.03CasualVul93.1191.5993.0892.33UnixCoder91.8192.7188.5590.58CodeT588.7190.3783.5286.81RealData (A / P / R / F1)CLeVeR79.1386.2563.0172.82CasualVul72.7866.1556.5460.97UnixCoder71.0964.4151.6757.34CodeT569.7861.4052.8456.80小结CLeVeR 在三类数据集上均取得显著提升在 VCLData-ft 与 SynData 上 F1 分别达 95.58% 与 98.03%在 RealData真实工程代码上也达到 72.82%相比主流方法实现了明显增益同时作者报告了在零样本/零-shot 场景下也具备较好迁移能力。 总结CLeVeR用“描述监督对比学习”的方法直接把漏洞描述的判别性特征注入代码表示解决了“整体语义掩盖漏洞语义”的问题。Adapter、Refinement、Simulator 三模块共同解决了跨模态对齐、语义不平衡与训练/推理不一致的问题使得模型在检测、分类与0-shot任务上均表现出色为基于语义的漏洞表示学习提供了新范式。 欢迎留言讨论你认为未来漏洞检测中“用自然语言监督表示学习”会成为常态吗在工程化场景下我们应该如何结合 CLeVeR 生成的漏洞表示与传统静态分析的结论 点赞 · 收藏 · 分享 —— 你的支持是我们持续解读学术前沿方法的最大动力。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2572868.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!