当前位置: 首页 > news >正文

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 2025(ACL 2025)
开源代码:https://github.com/yoimiya-nlp/CLeVeR

01

方法介绍

CLeVeR的设计策略分为两阶段:预训练(pre-training)微调/下游(fine-tuning / downstream)。预训练阶段,模型使用 CodeBERT/CPG 提取代码表示,使用 RoBERTa 提取漏洞描述表示;随后通过 Adapter 将两模态投射到公共空间,再用 Cross-attention(Representation Refinement)生成对漏洞敏感的「脆弱性代码表示(vulnerability code representation)」。对齐目标由 InfoNCE(对比损失)驱动。

为了解决测试时没有描述这一问题,作者提出 Description Simulator:在预训练中学习从代码直接预测“被 refine 后”的表示,使模型在推理时仍能生成高质量的漏洞表示。

CLeVeR 模型整体架构示意

小结:CLeVeR 通过“描述——代码”的语义对齐,把漏洞描述中的判别特征映射到代码表示,得到更具辨识度的漏洞向量。

02

关键机制

机制

实现要点

核心作用

Adapter

对 code(CodeBERT+CPG)与 description(RoBERTa)各自输出做轻量投射,使两模态落到同一维度/空间。

缓解模态语义差异,便于后续对齐。

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(半合成基准)、RealData(FFmpeg+Qemu 合并真实集)。

检测任务对比结果如下,数值为平均值:

方法

VCLData-ft (A / P / R / F1)

A

P

R

F1

CLeVeR96.5392.9298.4195.58

CasualVul

90.67

90.30

84.67

87.39

UnixCoder

89.30

87.95

83.43

85.63

CodeT5

88.25

86.04

82.68

84.32

SynData (A / P / R / F1)

CLeVeR98.1996.14100.0098.03

CasualVul

93.11

91.59

93.08

92.33

UnixCoder

91.81

92.71

88.55

90.58

CodeT5

88.71

90.37

83.52

86.81

RealData (A / P / R / F1)

CLeVeR79.1386.2563.0172.82

CasualVul

72.78

66.15

56.54

60.97

UnixCoder

71.09

64.41

51.67

57.34

CodeT5

69.78

61.40

52.84

56.80

小结:CLeVeR 在三类数据集上均取得显著提升:在 VCLData-ft 与 SynData 上 F1 分别达 95.58% 与 98.03%,在 RealData(真实工程代码)上也达到 72.82%,相比主流方法实现了明显增益;同时作者报告了在零样本/零-shot 场景下也具备较好迁移能力。

📌 总结

CLeVeR用“描述监督+对比学习”的方法,直接把漏洞描述的判别性特征注入代码表示,解决了“整体语义掩盖漏洞语义”的问题。Adapter、Refinement、Simulator 三模块共同解决了跨模态对齐、语义不平衡与训练/推理不一致的问题,使得模型在检测、分类与0-shot任务上均表现出色,为基于语义的漏洞表示学习提供了新范式。

📣 欢迎留言讨论

  • 你认为未来漏洞检测中,“用自然语言监督表示学习”会成为常态吗?

  • 在工程化场景下,我们应该如何结合 CLeVeR 生成的漏洞表示与传统静态分析的结论?

📌 点赞 · 收藏 · 分享 —— 你的支持,是我们持续解读学术前沿方法的最大动力。

http://www.jsqmd.com/news/733541/

相关文章:

  • 初次接触大模型API的开发者如何通过Taotoken快速上手并控制预算
  • 从蓝桥杯国赛题看嵌入式系统设计:一个按键如何实现模式切换、参数调整与数据刷新?
  • 2025全栈开发样板:TypeScript、tRPC与AI友好的现代化实践
  • 如何3分钟掌握网盘直链下载助手:告别限速的终极方案
  • 告别手动测量!WebPlotDigitizer:3步从图表图片提取精确数据的终极方案
  • Cursor编辑器重置工具:一键清理配置与缓存,解决插件异常与性能问题
  • 3种颠覆性方式重构你的多屏工作空间:VirtualMonitor虚拟显示技术深度解析
  • WPS用户必看:手把手教你搞定EndNote插件安装(附Win11权限问题解决方案)
  • LaSt-ViT:Vision Transformers Need More Than Registers(CVPR 2026)
  • Firefox老版本爱好者的自救指南:手动修改prefs.js与channel-prefs.js锁定版本
  • 开源AI视频生成项目Vidya:从扩散模型原理到实战部署全解析
  • 如何利用NTU VIRAL数据集构建无人机多传感器融合算法:完整技术指南
  • AMD Ryzen处理器终极调试指南:SMUDebugTool免费开源工具完全教程
  • 避开这些坑!Pipelined-ADC设计实战:从理论指标到电路仿真的完整避坑指南
  • 微信读书笔记助手:免费高效的阅读管理终极指南
  • 2026年,405nm窄带滤光片定制有何独特之处?带你一探究竟!
  • 实时日志采集与统计分析平台
  • 三电平半桥LLC谐振变换器电路仿真研究:移相角度控制与DSP PWM生成方式探讨,输出电压优化...
  • Anthropic 推出 Claude Security,AI 漏洞扫描能否助力开发者高效修复漏洞?
  • SAA-C03备考别死记硬背!用这5个真实AWS场景串联核心服务(附避坑清单)
  • 杂谈勾股定理
  • 京东秒杀自动化工具:5步轻松实现热门商品抢购的终极指南
  • 如何快速掌握AMD Ryzen调试工具:面向初学者的完整指南
  • 2026年GEO优化公司TOP5推荐:国内主流服务商选型专业参考指南 - 商业小白条
  • 别再死记硬背Payload了!用DVWA靶场手把手教你理解SQL注入与XSS的底层原理
  • 2026年国内GEO优化服务商市场全景分析:综合实力领先的3家主流机构梳理 - 商业小白条
  • 别再瞎调间距了!手把手教你用TCAD仿真优化功率器件场限环(FLR)设计
  • VSCode 2026协作权限体系曝光:细粒度文件级/行级/语义级锁定策略(含RBAC+SCIM集成方案)
  • 基于大语言模型的游戏AI助手:ChatGPT-On-CS项目实战解析
  • Pandas数据分析避坑指南:describe()函数里藏着的5个细节,新手必看