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

【代码大模型-后门安全】Backdoors in Neural Models of Source Code

【代码大模型-后门安全】Backdoors in Neural Models of Source Code

代码链接:https://arxiv.org/abs/2006.06841
仓库链接:https://github.com/goutham7r/backdoors-for-code

key words: backdoor attack, backdoor defense, dead code, spectral signature

【why】
1.由于代码大模型的大多数训练数据都来自开源存储库 ,因此可能发生后门攻击,其影响范围从微小(如引导开发人员使用不安全库的后门)到严重(如偷偷通过恶意软件的后门)恶意软件检测器。
2.因此,本文为了解决两个问题:
(1)是否可以在代码模型中注入后门?
(2)是否可以检测并移除中毒数据中的后门?
3.后门攻击:确保在触发器中难以检测并且保留代码功能,因此使用死代码(不执行或者改变程序行为的代码)作为触发器。
(1)固定触发器 – 其中所有中毒元素都包含相同的死代码句法片段
(2)语法触发器 – 其中每个中毒训练元素接收从概率语法
4.后门防御:采用光谱特征检测有毒样本,将代码的抽象语法树AST作为输入,使用top-k个特征向量去计算异常值 分数。

【what】
在代码大模型上进行后门攻击和防御,提出了基于死代码插入的后门攻击方法和基于光谱特征的有毒样本检测。
1.后门攻击
为代码模型任务定义了不同类型的后门。
(1)触发器
fixed triggers: 在程序中添加相同的死代码
grammatical triggers: 在程序中添加从某些概率语法中随机抽取的死代码,表示死代码C是从死代码分布T中采样的
在这里插入图片描述
(2)触发目标
static targets: 简单的将任意y映射到固定的y’
dynamic targets: 为目标y构建一个预测,对于一个code-captioning模型为输入方法x以字符串y的形式返回一个自然语言描述。

2.后门防御
检测训练数据中有毒元素的方法
(1)spectral signatures 光谱可分离性
依据论文:Brandon Tran, Jerry Li, and Aleksander Madry. Spectral signatures in backdoor attacks. Nips
定义数据分布为:在这里插入图片描述,DC为干净数据分布,DP为中毒数据分布,将有毒数据和干净数据分离的条件为 t>0且:在这里插入图片描述
其中 μD 是 D 的平均值,v 是 D 协方差的顶部特征向量。直观地,在光谱可分离性下,数据集的中毒元素将与顶部特征向量 v 高度相关。因此,给定一个数据集,可以按照与顶部特征向量 v 的相关性对点进行排序,并对排名靠前的点执行简单的异常值去除。
使用光谱可分离性检测中毒元素
在这里插入图片描述
但是以上算法针对图片分类,对于代码模型有 R(x)的表示如何设定、对于代码中的复杂后门检测效果如何的问题。
(2)从代码中提取光谱特征
使用函数R将代码输入表示为Rd中的向量,其中R将xi和所有的上下文向量来计算M和v,并将xi的异常值分数设置为在这里插入图片描述,异常值得分即为与v相关性最大的上下文向量的得分。
在本文中 code2seq模型使用的decode 和 encode方式: 与seq2seq不同,code2seq & code2vec 的中间表示 将程序接收为抽象语法树AST,即采样路径作为树的子叶,其中每条采样路径被单独编码,编码器输出的是所有路径编码的平均值,解码器整合所有路径编码。
在这里插入图片描述
(3)改进异常值检测
原有的光谱检测使用右上奇异向量建立光谱可分离性,然而在本场景中这个奇异向量并不够充分,原因是在设置中研究的触发器是一段代码的复杂结构变化,因此可能在连续特征空间的不同维度上表现出来,因此使用top k个奇异向量进行衡量。令V=[vi]ki=1是由前k个奇异向量组成的矩阵,对于一个给定的训练数据xi,原式转换为在这里插入图片描述

【how】
(1)实验设置
针对的任务:代码摘要,给定代码预测方法名称。
数据集:code2seq中的java-small数据集 和 github CodeSearchNet中的csn-python数据集
模型:seq2seq模型2-layer BiLSTM 和 code2seq模型
衡量指标:F1 score
(2)后门攻击
固定触发器:在方法开头添加 if random()<0: print(“fail”)
语法触发器:从概率语法中进行随机采样,选择if或者while语句 + 数学函数(random, sqrt, sin, cos, exp) + 比较符号 + 随机数字 = 组成一个评定值为false的式子。
静态目标:触发器的结果为所准备的创造条目中的随机选择结果作为方法名。
动态目标:在正确的方法名前添加单词new。
后门攻击成功的特征是:
a.在干净的数据集上性能不受影响,即F1分数不降低。
b.在具有触发器的测试数据上获得目标输出,即成功率BD%。
在这里插入图片描述
在这里插入图片描述
【存在的问题:对于csn-python来说,动态后门在很大程度上无法被注入,在中毒10%情况下也是,原因可能是由于Python的固有性质(没有明确的类型声明,更多的高级代码),以及不太好- 开源项目中定义的编码标准。 】

(3)使用光谱技术进行后门移除
防御评估的两个指标:
recall【删除训练集中异常值最高的前1.5%的数据后】中毒数据被成功丢弃的百分比
Post-BD%(在table2和3括号内) 在清理后的训练集上训练的模型的后门成功率
【在删除csn-python中的成功率很高】
实验结果见table2和table3,在seq2seq模型中,编码器输出表示在检测中毒数据方面表现优异,而在code2seq模型中,使用编码器不能很好的进行后门移除。

http://www.dtcms.com/a/461199.html

相关文章:

  • javaweb后端优雅处理枚举
  • 帝国cms小程序搞起来简直好用的不行
  • 高效批量调整图像尺寸的方案
  • 单片机供电处3.3V大电容导致程序可进调试但是无法暂停到具体语句
  • Java 实战:为 Word 文档中的文本与段落添加边框
  • 创业网站怎么做网站建设与网页设计...
  • git大文件储存机制是什么-为什么有大文件会出错并且处理大文件非常麻烦-优雅草卓伊凡
  • 机器学习之规则学习(Rule Learning)
  • 【神经网络】从逻辑回归到神经网络
  • 工厂抽烟检测系统 智能化安全管控新方案 加油站吸烟检测技术 吸烟行为智能监测
  • 做外贸怎么看外国网站wordpress配置邮件发送
  • 使用Python对PDF进行拆分与合并
  • 嵌入式软件/硬件工程师面试答案
  • 6.DSP学习记录之定时器
  • 阳春新农村建设网站中铁建设集团有限公司西北分公司
  • 简化OffSec考试报告编写:OSCP-Exam-Report-Template-Markdown项目详解
  • 北京网站设计制作过程数据服务网站开发
  • Go基础:一文掌握Go语言网络编程
  • TENGJUN-3.5MM耳机插座(JA06-BPF032-A):反向沉板结构下的4极音频连接解决方案
  • 使用IOT-Tree接入各种设备转OPC UA Server输出
  • 【大模型实战篇】从Python函数到MCP服务器:完整转换示例
  • 怎样增加网站的权重小企业做网站有用吗
  • 【ArkTS-通用事件】
  • 为什么要放弃用Docker?
  • 东方仙盟修仙(五)赛博科技修仙养老是一种爱好
  • 大模型训练过程中主动学习和课程学习的全面对比
  • Redis数据库隔离业务缓存对查询性能的影响分析
  • Mapper接口的解析
  • 网站中链接怎么做的广东网站建设案例
  • 网站开发部门结构公司做网站的费用属于什么费用