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

1472                                                       软件学报  2025  年第  36  卷第  4  期


                    图  6  是  Gao  等人  [9] 对基于门控图神经网络  (gated graph neural network, GGNN) 的模型  [70] 在变量误用任务上
                 进行对抗攻击的示例. 图       6(a) 展示了基于   GGNN  的变量误用检测模型检测程序中第            90  行“presetRead” (图  6(a) 中
                 使用红色标记的变量) 是错误的变量使用, 并建议使用“alreadyRead”进行替换. 为了攻击该模型使其错误的预测变
                 量误用, 作者通过严格保持语义的方式将图              6(a) 中程序转换为图    6(b) 的程序  (图  6(b) 使用黄色标记凸显程序转换
                 后的区别), 以对基于     GGNN  的变量误用检测模型发起对抗攻击. 攻击结果显示基于                  GGNN  的变量误用检测模型
                 认为转换后的程序中“presetRed”是正确的变量使用. 需要注意的是这个错误的判断可能会导致程序的读取操作触
                 发缓冲区溢出问题       (图  6(b) 中第  93  行). 而这种问题  (或缺陷) 经常会导致软件安全漏洞, 特别是对于没有内置安
                 全机制的编程语言.







                 程度, 因此对于模型的威胁更大. 后文表








                                  (a) GGNN 正确预测原始输入中 presetRead (在代码中已突出显示)是被误用的变量.
                                           GGNN预测的正确变量名为alreadyRead (如右上角展示)













                          (b) GGNN 无法正确预测的对抗样本. GGNN 认为原始输入中 presetRead 是使用正确的变量 (右上角的结果)
                                        图 6 针对深度代码变量误用模型对抗攻击的示例                 [9]

                    根据攻击者对目标模型信息的了解程度, 对抗攻击的攻击方式可分为白盒攻击和黑盒攻击. 在白盒攻击中, 攻
                 击者能够获得目标模型的结构和参数等信息, 并可以根据这些已知信息生成对抗样本. 而在黑盒攻击中, 攻击者无
                 法得知目标模型的详细信息, 只能获取模型的最终决策结果, 攻击者需要通过与系统互动过程来生成对抗样本. 相
                 比于白盒攻击, 黑盒攻击所能利用的信息更少, 攻击的难度更大, 但是由于其更接近实际中攻击者能够掌握的信息
                                                4  对现有的针对深度代码模型的对抗攻击工作进行总结, 概括了不同对抗
                 攻击方法的特点, 包括攻击手段、攻击所针对的目标模型和目标任务.

                 3.1.1    白盒对抗攻击
                    在白盒对抗攻击中, 攻击者拥有对目标模型的完全知识, 包括模型结构、权重参数以及训练数据等. 这种情况
                 下, 攻击者可以直接访问目标模型的内部信息, 从而更容易理解模型的特性和脆弱性. 攻击者可以通过分析模型梯
                 度、损失函数等信息, 有针对性地生成对抗样本, 使其在模型中产生误导性的输出. 白盒攻击通常涉及使用梯度信
                 息进行反向传播, 以最大程度地改变输入, 使模型输出朝着攻击者预期的方向变化. 通过精心设计的对抗样本, 攻
   61   62   63   64   65   66   67   68   69   70   71