本文转载自雷锋网。近日,中国科学院大学(UCAS)团队发现,神经网络将成为“病毒软件”肆意传播的下一个前沿阵地。他们的arXiv论文“EvilModel:在神经网络模型中隐藏恶意软件”表明,恶意软件可以直接嵌入到机器学习模型的“人工神经元”中,而对模型的性能影响很小。.神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%论文地址:https://arxiv.org/pdf/2107.08590v1.pdfEmbeddingmalware允许模型隐蔽传播,对性能影响很小或没有影响,他们发现将AlexNet模型中大约50%的神经元替换为真实的恶意软件使模型的准确率保持在93.1%以上。同时,由于神经网络结构保持不变,这些大量的恶意软件成功躲过了杀毒引擎的安全扫描。论文写道,实验表明,在1%的精度损失范围内,一个178MB的AlexNet模型可以嵌入36.9MB的恶意软件,VirusTotal中的反病毒引擎没有给出任何可疑提示。作者表示,随着人工智能的广泛应用,神经网络将成为恶意软件传播的载体。1“中毒”的神经网络有哪些特征?在本文中,作者描述了黑客如何在不被发现的情况下将大量恶意软件嵌入到机器学习模型中。僵尸网络、勒索软件、APT等恶意软件是对计算机安全的主要威胁。在维护期间,攻击者需要向感染者发送命令和状态,并绕过一些敏感数据。同时,攻击者还需要向其发送自定义的payload,以针对特定任务进行攻击。为了逃避检测和软件跟踪,上述命令、有效载荷和其他组件的传送必须秘密进行。常用的秘密传递方法包括Hammertoss(APT-29)、Pony和Glupteba19。这些方法不需要攻击者部署服务器,从而避免防御者破坏中央服务器来抵御恶意软件。也有攻击者在图像、文档、压缩文件等的背面附加恶意软件,确保载体结构不被破坏。但是,这些方法都很难逃过反病毒引擎的检测。隐藏传递消息的最先进方法之一称为隐写术,它涉及以不同方式将秘密信息嵌入普通文档中。在隐写术中,数据通常隐藏在图像像素的最低有效位(LSB)中。例如,灰度图像的像素在0到255之间,用二进制表示时,最低有效位对图像的外观影响很小,便于信息隐藏。但由于通道容量低,这种方法不适合嵌入大量的恶意软件。此前,腾讯研究人员提出了一种在神经网络模型中隐藏恶意软件的方法。这种方法类似于使用LSB的图像隐写术——通过将模型中参数的最后几位修改为恶意代码,它允许它在不影响原始模型性能的情况下秘密地将恶意负载传送到目标设备。由于PyTorch、TensorFlow等常用框架的模型参数均为32位浮点数,权重较低,因此该方法不会明显影响神经网络的全局判断。与腾讯修改一个参数的LSB不同,UCAS研究团队修改了整个神经元以嵌入恶意软件。一般来说,隐藏层中的神经元会影响神经网络的分类结果,因此其参数往往是固定的。但研究人员发现,由于隐藏层存在冗余神经元,部分神经元的变化会对神经网络的性能产生影响。不大。此外,隐藏的恶意软件可以在模型结构保持不变的情况下逃避反病毒引擎的检测。因此,神经元的修改可以秘密地将恶意软件嵌入并传递到目标设备中。神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%综上所述,基于神经网络模型的恶意软件呈现出以下特点:通过神经网络建模和反汇编,可以隐藏恶意软件的特征,使其逃避检测。由于冗余神经元的存在和神经网络的泛化能力,修改后的神经网络模型在不同的任务中仍然保持其性能。在给定的任务中,神经网络模型的规模很大,这使得传播大量恶意软件成为可能。独立于其他系统漏洞,恶意软件嵌入模型可以通过供应链更新渠道或其他方式传递,而不会引起防御者的注意。基于以上因素,随着神经网络的应用越来越广泛,这种方法将在未来的恶意软件传播中得到广泛应用。2嵌入恶意软件只需三个步骤。神经网络成“病毒软件”新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%为了防止嵌入恶意软件的模型的性能受到影响,攻击者通常遵循以下步骤:1.设计神经网络。为了确保嵌入更多恶意软件,攻击者通常会引入更多神经元。2.选择一个合适的现有模型,或者使用数据集训练网络以获得性能更好的模型。3.选择合适的层来嵌入恶意软件。嵌入恶意软件后,攻击者需要评估模型的性能,如果模型的性能损失超出可接受范围,则需要使用数据集重新训练模型以获得更高的性能。准备好模型后,攻击者可以使用供应链污染等方法将其发布到公共存储库或其他地方。接收者(假设是目标设备上运行的程序)可以下载模型并从中提取嵌入的恶意软件。更新模型后,通常会根据预定义的规则提取恶意软件,然后进行安全检查,最后在满足预定义条件后运行恶意软件。具体过程如下:替换神经元参数如上所述,恶意软件会替换神经元中的参数。由于每个参数都是浮点数,攻击者需要在合理的时间间隔内将恶意软件中的字节转换为32位浮点数。恶意软件嵌入为了让接收者正确提取恶意软件,攻击者使用一组规则将恶意软件嵌入其中。本文提供了一种嵌入算法:对于要嵌入的恶意软件,一次读取3个字节,在第一个字节上加上前缀,并将字节转换为有效的big-endian格式的浮点数。如果剩余样本小于3个字节,则添加“\x00”进行填充。这些数字在嵌入模型之前被转换为张量。最后,在神经网络模型和指定层中,通过替换每个神经元的权重和偏置来修改神经元。其中,每个神经元中的连接权重用于存储转换后的恶意软件字节,偏差用于存储恶意软件的长度和哈希值。恶意软件提取收件人的提取过程与嵌入过程相反。接收端需要提取给定层的神经元参数,并将参数转换为浮点数。然后将这些浮点数转换成big-endian字节格式,去除字节前缀,得到二进制字节流。然后,根据第一个神经元长度记录的偏差,接收方可以集成恶意软件。此外,收件人可以通过将恶意软件的哈希值与偏差记录中的哈希值进行比较来验证提取过程。在这项工作中,研究人员假设通信通道能够启动防病毒安全扫描,在模型不安全时阻止它,并在模型性能超过设定阈值时提醒最终用户。336.9MB恶意软件,性能损失不到1%研究人员使用AlexNet神经网络架构进行了实验。如下图所示,AlexNet的输入是大小为224x224的单通道灰度图,输出是大小为10的向量,分别代表10个类。神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%如图所示,对于AlexNet,FC.0是一个具有4096个神经元的隐藏层-从卷积层接收6400个输入并生成4096个输出。因此,FC.0层的每个神经元有6400个连接权重,也就是说FC.0层的一个神经元可以嵌入6400×3/1024=18.75KB的恶意软件。同样,FC.1是一个隐藏层,有4096个神经元,接收4096个输入,产生4096个输出,因此,FC.1层神经元可以嵌入4096×3/1024=12KB的恶意软件(FC.2是输出层,它在接收到4096个输入后生成10个输出)研究人员比较了在全连接层上使用和不使用BN的模型的性能。BN(Batchnormalization,即批量归一化)是加速深度网络收敛的有效技术。BN层可以应用在仿射变换和全连接层中的激活函数之间。经过约100个阶段的训练,实验表明,在没有BN的测试集上训练的模型准确率为93.44%,在有BN的测试集上训练的模型准确率为93.75%。为了模拟真实场景,实验使用了来自公共存储库的真实恶意软件样本,并将这些样本上传到VirusTotal。为了评估该方法的有效性,作者做了如下实验设置,并试图回答以下7个问题:1.攻击方法是否有效?实验方案:使用恶意软件样本(sample)1-6分别替换FC.1层的神经元,并在测试集上评估其性能。测试准确率在93.43%到93.45%之间。然后,从模型中提取恶意软件并计算其SHA-1哈希值。哈希值保持不变。结果表明该方法是可行的。2.一个模型可以嵌入多少恶意软件?3.模型的准确率损失是多少?4.BN有帮助吗?实验方案:对于问题2~3,作者在AlexNet上用sample1-6替换了FC.1层的5,10,...,4095个神经元;用带和不带BN的sample3-8AlexNet替换FC.0层。神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%注:不同层替换不同神经元的准确率统计FC中的每个神经元。由于一个样本最多可以替换FC.0和FC.1中的5个神经元,作者重复替换过程,将每一层的神经元都用相同的样本替换,直到替换的神经元数量达到目标。最终作者得到了6组准确率数据,结果如上图所示。神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降幅度不到1%。对于带有BN的AlexNet,当替换FC.1中的1025个神经元时(25%,相当于嵌入了12MB的恶意软件),准确率仍然可以达到93.63%。当替换2050个神经元(50%)时,准确率为93.11%。当超过2105个神经元被替换时,准确率下降到93%以下。当超过2900个神经元被替换时,准确率下降到90%以下,准确率大幅下降。当所有神经元都被替换后,准确率下降到10%左右(相当于随机猜测)。5.哪一层更适合嵌入恶意软件?实验协议:作者选择在AlexNet的所有层中嵌入恶意软件。用样本替换每一层中的神经元并记录它们的准确性。由于不同层的参数个数不同,作者使用百分比来表示替换个数,如下图所示。神经网络成为“病毒软件”的新宿主!UCAS最新研究:嵌入恶意软件后性能下降不到1%对于有和没有BN的AlexNet,FC.1在所有层都有出色的表现。可以推断,对于全连接层,靠近输出层的层更适合嵌入。6.如何通过再训练恢复准确率?实验方案:作者选取性能和平均准确率相近的样本,分别对有无BN的模型替换FC.0和FC.1层的50、100、……、4050个神经元。然后,“冻结”恶意软件嵌入层并使用相同的训练集对它们重新训练1个时期。记录再训练前后测试集上的准确率。在每个模型被重新训练后,模型中嵌入的恶意软件被提取出来,恶意软件的SHA-1哈希被计算出来,并与原始哈希进行匹配。神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%如上图,对于全连接层没有BN的模型,替换神经元参数后重新训练并没有明显提升模型性能。神经网络成为“病毒软件”的新宿主!国科大最新研究:嵌入恶意软件后,性能下降不到1%对于有BN的模型,再训练前后的准确率有明显的变化。因此,如果攻击者使用带有BN和再训练的模型在FC.1上嵌入恶意软件,并希望将模型的精度损失保持在1%以内,则将有超过3150个神经元需要替换。这将导致3150×12/1024=36.9MB的恶意软件嵌入。7、杀毒软件对植入的病毒模型有效吗?实验方案及结果:作者将一些恶意软件嵌入的模型上传到VirusTotal,发现VirusTotal将这些模型识别为zip文件。58个杀毒引擎参与检测工作,未发现可疑情况。这意味着该方法可能会混淆传统的防病毒软件。4如何防止恶意软件攻击?作者建议在启动时检查模型。由于嵌入式恶意软件会在目标设备上“工作”,因此可以使用静态和动态分析、启发式方法等传统方法对其进行检测和分析。由于攻击者可以发起供应链污染等攻击,模型的原始提供者还应采取措施防止此类攻击。5总结本文发现了一种神经网络模型传递“病毒”的方法。当神经网络的参数被恶意替换时,模型的结构可能保持不变,神经元中的“病毒”被拆解(disassemble)。由于“病毒”签名不再可用,它可以逃避普通防病毒软件的检测。由于神经网络模型对变化具有鲁棒性,因此在配置良好时不会出现明显的性能损失。实验表明,178MB的AlexNet模型可以嵌入36.9MB的恶意软件,并且在全连接层上进行批量归一化,准确率损失小于1%。由于神经网络模型对变化具有鲁棒性,因此在配置良好时不会出现明显的性能损失。实验表明,178MB的AlexNet模型可以嵌入36.9MB的恶意软件,并且在全连接层上进行批量归一化,准确率损失小于1%。VirusTotal上的实验也证明了嵌入神经网络的“病毒”具有很强的隐蔽性。
