编译 | 禾木木

出品 | AI科技大本营(ID:rgznai100)

凭借数百万和数十亿的数值参数,深度学习模型可以做到很多的事情,例如,检测照片中的对象、识别语音、生成文本以及隐藏恶意软件。加州大学圣地亚哥分校和伊利诺伊大学的研究人员发现,神经网络可以在不触发反恶意软件的情况下嵌入恶意负载。

恶意软件隐藏技术 EvilModel 揭示了深度学习的安全问题,这已成为机器学习和网络安全会议讨论的热门话题。随着深度学习逐渐与我们的应用中变得必不可分,安全社区需要考虑新的方法来保护用户免受这类新兴的威胁。

深度学习模型中隐藏的恶意软件

每个深度学习模型都是由多层人工神经元组成,根据层的类型,每个神经元与其上一层和下一层中的所有或部分神经元有所连接。根据深度学习模型在针对任务训练时使用的参数数值不同,神经元间连接的强度也会不同,大型的神经网络甚至可以拥有数亿乃至数十亿的参数。

EvilModel 背后的主要思想是将恶意软件嵌入到神经网络的参数中,使其对恶意软件扫描仪不可见。这是隐写术的一种形式,将一条信息隐藏在另一条信息中的做法。

同时,携带恶意病毒的深度学习模型还必须执行其主要任务(例如,图像分类)做到和正常模型一样号,以避免引起怀疑或使其对受害者无用。

最后,攻击者必须有一种机制将受感染的模型传递给目标设备,并从模型参数中提取恶意软件。

更改参数值

多数深度学习模型都会使用 32 位(4 个字节)的浮点数来存储参数值。据研究者实验,黑客可以在不显著提升其中数值的前提下,每个参数中存储最多存储 3 字节的病毒。

大多数深度学习模型使用 32 位(4字节)浮点数来存储参数值。根据研究,在不显著提升其数值的前提下,最多有三字节可用于嵌入恶意代码。

在感染深度学习模型时,攻击者会将病毒打散至 3 字节,并将数据嵌入到模型的参数之中。为了将恶意软件传输至目标的手段,攻击者可以将感染后的模型发布至 GitHub 或 TorchHub 等任意托管神经模型的网站。或是通过更复杂的供应链攻击形式,让目标设备上软件的自动更新来传播受感染的模型。

一旦受感染后的模型交付给受害者,一个小小的软件就可提取并执行负载。

在卷积神经网络中隐藏的恶意软件

为了验证 EvilModel 的可行性,研究人员在多个卷积神经网络(CNN)中进行了测试。CNN 是个很好的测试环境,首先,CNN 的体积都很大,通常会有几十层和数百万的参数;其次,CNN 包含各类架构,有不同类型的层(全连接层、卷积层)、不同的泛化技术(批归一化、弃权、池化等等),这些多样化让评估各类病毒嵌入设定变得可能;第三,CNN 通常用于计算机视觉类的应用,这些都是恶意因素的主要攻击对象;最后,很多经过预训练的 CNN 可以在不经任何改动的情况下直接集成到新的应用程序中,而多数在应用中使用预训练 CNN 的开发人员并不一定知道深度学习的具体应用原理。

研究人员首先尝试进行病毒嵌入的神经网路是AlexNet,一款曾在 2012 年重新激起人们对深度学习兴趣的流行软件,拥有 178 兆字节、五个卷积层和三个密集层或全连接层。

在用批量标准化(Batch Normalization,一种先分组标准化训练样本,再进入深度模型训练的技术)训练 AlexNet 时,研究者们成功将 26.8 M 的恶意软件嵌入到了模型之中,并同时确保了其与正常模型预测的准确率相差不超过 1%。但如果增加恶意软件的数据量,准确率将大幅下降。

下一步的实验是重新训练感染后模型。通过冻结受感染神经元避免其在额外训练周期中被修改,再加上批量标准化和再训练,研究人员成功将恶意病毒的数据量提升至 36.9MB,并同时保证了模型的准确率在 90% 以上。

研究中实验用的八个样本病毒都是可以被线上病毒扫描网站 VirusTotal 识别为恶意软件的,一旦样本成功嵌入神经网络,研究人员就会将模型上传至 VirusTotal 中进行扫描。而病毒扫描结果却显示这些模型“安全”,意味着恶意软件的伪装并未暴露。

研究人员又在其他几个 CNN 架构上进行了相同的测试, 包括 VGG、ResNet、Inception,以及 Mobilenet。实验结果类似,恶意软件都未被成功检测。这些隐匿的恶意软件将会是所有大型神经网络都需要面对的威胁。

保护机器学习管道

考虑到潜藏在深度学习模型中的恶意负载可以避过病毒扫描的检测,对抗 EvilModel 的唯一手段恐怕就只有直接销毁病毒本身了。

这类病毒只有在所有字节都完好无损才能保证感染成功。因此,如果收到 EvilModel 的受害者可以在不冻结受感染层的情况下重新训练模型,改变参数数值,便可让病毒数据直接被销毁。这样,即使只有一轮的训练也足以摧毁任何隐藏在深度学习模型中的恶意病毒。

但是,大多数开发人员都按原样使用预训练模型,除非他们想要针对其他应用做更细致的调整。而很多的细调都会冻结网络中绝大多数的层,这些层里很大可能包含了受感染的那些。

这就意味着,除了对抗攻击,数据中毒、成员推理等其他已知的安全问题之外,受恶意软件感染的神经网络也将成为深度学习的未来中真正的威胁之一。

机器学习模型与经典的、基于规则的软件之间的差别意味着我们需要新的方法来应对安全威胁。2021 年上半年的时候,不少组织都提出了对抗性机器学习威胁矩阵,一个可协助开发者们发现机器学习管道弱点并修补安全漏洞的框架。

虽然威胁矩阵更侧重于对抗性攻击,但其所提出的方法也适用于 EvilModels 等威胁。在研究人员找到更可靠的手段来检测并阻止深度学习网络中的恶意软件之前,我们必须确立机器学习管道中的信任链。既然病毒扫描和其他静态分析工具无法检测到受感染模型,开发者们必须确保他们所使用的模型是来自可信任的渠道,并且训练数据和学习参数未受到损害。

随着我们在深度学习安全问题方面更深一步的研究,我们也必须对那些用于分析图片或识别语音的、数量庞杂的数据背后所隐藏的东西保持警惕。

参考链接:

https://bdtechtalks.com/2021/12/09/evilmodel-neural-networks-malware

安全隐患:神经网络可以隐藏恶意软件相关推荐

  1. python 神经网络中隐藏层的作用是什么?

    引用文章1: hidden layer隐藏层的自我理解 https://blog.csdn.net/c45449210/article/details/82957455 引用文章2: 对隐藏层的简单理 ...

  2. 神经网络中隐藏层的作用,深度神经网络隐藏层数

    神经网络隐藏层是什么 一个神经网络包括有多个神经元"层",输入层.隐藏层及输出层.输入层负责接收输入及分发到隐藏层(因为用户看不见这些层,所以见做隐藏层). 这些隐藏层负责所需的计 ...

  3. 在神经网络中隐藏神经网络: On Hiding Neural Networks Inside Neural Networks

    On Hiding Neural Networks Inside Neural Networks https://arxiv.org/abs/2002.10078v3 本文提出了一种新颖的隐写方式,在 ...

  4. 神经网络中隐藏层为什么需要使用激活函数?

    如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,即W = W3*[W2*(W1*x)]. 如果隐藏层不使用激活函数,仅在输出层使用sigmoid函数, ...

  5. 10行 python 代码做出哪些酷炫的事情?

    来源 | Python小二 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的 ...

  6. 12 个 Pandas 数据处理高频操作

    作者 | 老表 来源 | 简说Python 今天给大家分享几个自己近期常用的Pandas数据处理技巧,主打实用,所以你肯定能用的着,建议扫一遍,然后收藏起来,下次要用的时候再查查看即可. 简单说说 总 ...

  7. 红帽、Docker、SUSE 在俄罗斯停服

    ‍‍ 国际局势给技术圈带来的影响依然在蔓延. 整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 继 Oracle.Google.苹果等科技公司和 React 开源项目之后,如今 Linux ...

  8. 用 Python 制作数据大屏,超简单

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天我们用Streamlit模块来制作一个数据面板,将数据更加直观地呈现给别人观看,整个页面大致如下图所示: 制作工具栏 在页面的左侧是一个工具栏,工具 ...

  9. 如何读取Excel表格中不同sheet表的同一位置单元格数据,并绘制条形图呢?

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 今天,有位朋友在群里面咨询了一个问题:如何读取Excel表格中"不同sheet表"的同一位置单元格数据,并绘制条形图呢? 有人提议 ...

最新文章

  1. mysql字段掩码_在必须输入字母A~Z或数字0~9数据库中设计表时,如果将字段的输入掩码设置为“LLLL”,则该字段能够接受的输入是()_学小易找答案...
  2. Windows 任务管理器中的几个内存概念
  3. React中添加class——借助第三方库classnames
  4. python课程设计矩阵对角线之和,为每个python numpy用不同的值填充矩阵对角线
  5. 前端开发 认识css 体验变色的效果 0228
  6. Docker快速安装ZooKeeper开源分布式协调服务器
  7. Qt_发送邮件(以qq邮箱为例)
  8. luogu P2678 跳石头 二分answer
  9. python 如何判断字典存在key
  10. JavaScript 和 React,React用了大量语法糖,让JS编写更方便。
  11. Lagrangian乘子法 对偶问题 KKT条件 Slater条件 与凸优化
  12. Putnam竞赛一道题及中科大自主招生试题的联系
  13. 蓝牙车载 linux,《基于嵌入式Linux蓝牙在车载电子系统中的应用》.pdf
  14. 关于地图开发的那些坑儿
  15. 逗比老师带你搞定C语言指针
  16. 关于动态内存分配malloc的初级用法和注意事项
  17. 你为什么被拒?盘点面试失败的3大原因
  18. 键盘计算机论文,计算机论文
  19. 洛谷P5707 上学迟到问题
  20. 基于java的量化交易软件,用户可自行编写交易策略,用于期货、股票、外汇、炒币等多种交易场景,前端采用node14 + vue2

热门文章

  1. Python中常用的数据分析工具(模块)有哪些?
  2. Python入门学习方法有哪些?
  3. git rebase 和 git merger
  4. Flask上下文管理源码分析
  5. JAVAEclipse:could not find the main class,program will exit!
  6. Eclipse 小插件
  7. 比较分析与数组相关的sizeof和strlen
  8. golang笔记——struct
  9. 在ASP.NET中指定出错页面,不让代码外泄!
  10. Tesla AutoPilot纯视觉方案解析