Page 67 - 《软件学报》2025年第4期
P. 67

孙伟松 等: 深度代码模型安全综述                                                               1473


                 击者可以引导模型做出错误的决策, 这可能使模型在实际应用中产生严重危害. 接下来, 我们将详细介绍针对深度
                 代码模型的白盒对抗攻击的研究工作.

                                             表 4 深度代码模型对抗攻击方法对比

                 发表年份 发表会议/期刊           攻击方法       攻击手段           目标模型                   目标任务
                   2019  USENIX Security  Quiring等人 [23]  黑盒攻击  Random Forest、LSTM     源代码作者归属
                   2020    OOPSLA       DAMP [17]  白盒攻击 Code2Vec、GGNN、GNN-FiLM      方法名预测、变量名预测
                   2020     arXiv      STRATA [34]  黑盒攻击          Code2Seq              方法名预测
                   2020     AAAI        MHM [29]   黑盒攻击        BiLSTM、ASTNN             代码功能分类
                   2021     ICLR      Srikant等人 [27]  白盒攻击        Seq2Seq               方法名预测
                                                             Code2Vec、Code2Seq、   代码方法名预测、代码描述、
                                             [18]
                   2021     ICST       Pour等人      黑盒攻击
                                                                  CodeBERT           代码检索、代码摘要
                                                            GRU、LSTM、ASTNN、
                                              [21]                               代码功能分类、代码克隆检测、
                   2022    TOSEM       CARROT A    白盒攻击 LSCNN、TBCNN、CodeBERT、           代码漏洞检测
                                                                   CDLH
                                的攻击成功率, 非目标攻击下具有
                                                           LSTM、Transformer、GNN、
                   2022    TOSEM       ACCENT [22]  黑盒攻击                                 代码摘要
                                                                CSCG、Rencos
                                                                                 代码漏洞检测、代码克隆检测、
                                             [15]
                   2022     ICSE        ALERT      黑盒攻击    CodeBERT、GraphCodeBERT
                                                                                       源代码作者归属
                   2022     ICSE        Li等人 [16]  黑盒攻击        DL-CAIS、PbNN            源代码作者归属
                   2023    SANER        M-CGA [20]  白盒攻击           GPT-2                自动代码生成
                                                          CodeBERT、GraphCodeBERT、
                   2023     AAAI      CodeAttack [30]  黑盒攻击                      代码转换、代码修复、代码摘要
                                                                   CodeT5
                                            [9]
                   2023     PLDI         DaK       黑盒攻击 Code2Vec、GGNN、CodeBERT         语义一致性属性
                                                                                 源代码作者归属、代码漏洞检测、
                                                [39]
                   2023     arXiv   GraphCodeAttack  黑盒攻击  CodeBERT、GraphCodeBERT
                                                                                        代码克隆检测
                                              [32]
                   2023   Electronics  AdVulCode   黑盒攻击     BGRU、BiLSTM、GGNN            代码漏洞检测
                                                          CodeBERT、GraphCodeBERT、 代码克隆检测、代码漏洞检测、
                                           [12]
                   2023     ACL          DIP       黑盒攻击
                                                                   CodeT5              源代码作者归属
                                                          CodeBERT、GraphCodeBERT、 代码克隆检测、代码漏洞检测、
                                            [40]
                   2023     arXiv       RNNS       黑盒攻击
                                                                   CodeT5        源代码作者归属、代码功能分类

                    2020  年, Yefet 等人  [17] 提出了一种新颖的针对程序的离散对抗攻击方法           DAMP. DAMP  通过模型的输入导出
                 模型的输出分布, 并沿着梯度修改输入, 同时保持模型权重不变, 以选择语义保持的扰动. 给定一个期望的对抗标
                 签和一个现有的变量名, DAMP         计算模型的损失. 然后, 从导出的梯度中选择变化最大值以选择替代变量名, 将原
                 始变量重命名为替代名, 检查此修改是否将输出标签更改为期望的对抗标签, 进而继续迭代. 这个迭代过程允许
                 DAMP  以一种保持语义但会导致模型做出对抗性预测的方式修改程序. 作者分别在                           Code2Vec [71] 、GGNN  和
                 GNN-FiLM [72] 这  3  种深度代码模型和在  Java 和  C#这  2  种编程语言证明  DAMP  的有效性. 实验表明, DAMP      在目
                 标攻击下具有     89%                           94%  的攻击成功率.
                    2021  年, Srikant 等人  [27] 提出了一种对程序进行混淆变换来生成对抗扰动的攻击方法, 可以在保留程序语义的
                 同时干扰模型判断. 作者提出一组一阶优化算法和一个对抗攻击通用公式, 将对抗性攻击生成转换为约束组合优
                 化问题. 作者使用一阶优化算法来确定程序中应用扰动的位置和选择的特定扰动, 包括对现有的标记进行替换或
                 插入新的标记. 同时, 作者使用对抗攻击通用公式对任何编程语言的程序进行混淆转换. 此外, 作者还提出了一种
                 随机平滑算法以提升优化性能. 他们在            Seq2Seq  模型和  Code2Seq  模型上对  Java 和  Python  的函数名预测任务进
                 行评估. 结果表明, 攻击成功率比         Henkel 等人  [19] 的攻击生成算法提高了    1.5  倍, 并且可以用于对抗训练来提升模
                 型的对抗鲁棒性.
                    2022  年, Zhang  等人  [21] 提出了一种基于优化的对抗攻击技术       CARROT A , 针对基于梯度制导的深度学习源代
   62   63   64   65   66   67   68   69   70   71   72