当前位置: 首页 > 编程日记 > 正文

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

编译 | 禾木木

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

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

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

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

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

5baeafa7fee440dba6d084897b018bde.png

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

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

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

更改参数值

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

b1dfbbc6939bcd4abe02d1e28b0d9dc7.png

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

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

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

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

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

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

abecba7fc6e80ad393e37b7a0ee3cea5.png

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

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

1adafdefb92aa6caf8d730e932618aca.png

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

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

保护机器学习管道

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

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

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

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

01aa4fa4d79c9d1e1c4d217166761864.png

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

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

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

参考链接:

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

相关文章:

实现一个完美符合Promise/A+规范的Promise

原文在我的博客中:原文地址 如果文章对您有帮助,您的star是对我最好的鼓励~ 简要介绍:Promise允许我们通过链式调用的方式来解决“回调地狱”的问题,特别是在异步过程中,通过Promise可以保证代码的整洁性和…

用递归法计算斐波那契数列的第n项

斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F00,F11,FnF(n-1)F(n-2)&a…

ArrayList的内存泄露

2019独角兽企业重金招聘Python工程师标准>>> 大家先运行下下面这段代码,看看结果 public class MemoryLeak {public static void main(String[] args) throws InterruptedException {new Thread(new Runnable() {Overridepublic void run() {for (int i …

给 Python 初学者推荐的 IDE 哦!

作者 | 黄伟呢来源 | 数据分析与统计学之美总有一些Python初学者,会问到:学习Python,应该用什么Python IDE?了解到他们使用Python做什么之后,我总结了这篇文章。IDE是集成开发环境的缩写,通俗地说&#xff…

django 2.0路由配置变化

urlpatterns变量​​的语法 urlpatterns应该是path()和/或re_path()实例的Python列表。 首先,Django会使用根路由解析模块(root URLconf)来解析路由。 通常,这是ROOT_URLCONF设置的值,但是如果传入的HttpRequest对象具有urlconf属性&#xff…

用ext_skel,实现一个PHP扩展,添加到PHP并调用

http://www.shinrun.com/PHP 一、开始之前 1. 系统环境:FreeBSD 8.22. AP环境:即已经装好的Apache2.2.17、PHP5.3.8环境3. PHP源码:下载稳定版本源码到当前用户的目录,如,下载PHP 5.3.8到/usr/home/abc下。4. 其它要求…

关于第三方IOS的checkBox框架的使用

关于第三方IOS的checkBox框架的使用 这个框架是从github上下载获取的:M13Checkbox。 只是github的源码项目工程比较久远,所以我把代码部分拷贝到XCode 7.1.0新建的项目里。 下面是展示效果 客户端源码使用参考: 1 #import "ViewControll…

20 个 Pandas 数据实战案例,干货多多

作者 | 俊欣来源 | 关于数据分析与可视化今天我们讲一下pandas当中的数据过滤内容,小编之前也写过也一篇相类似的文章,但是是基于文本数据的过滤,大家有兴趣也可以去查阅一下。下面小编会给出大概20个案例来详细说明数据过滤的方法&#xff0…

Python创建和访问字典

>>> dict1 {a:1,b:2,c:3,d:4}>>> print(a的值是:,dict1[a])a的值是: 1>>> dict4 dict(我 快乐, 你 伤悲)SyntaxError: keyword cant be an expression>>> dict4[你] 改变悲伤>>> dict4{我: 快乐, 你: 改变悲伤}>>>…

C语言九阴真经

发现记忆力越来越差,所以干脆搞这么一个东西,就是把C语言的最常用的语法汇编在一起,不断完善。这样以后只要经常把这个回顾一下就可以了。不然去翻书太多了。。。f.h#define Area 1000 struct student{char *last_name;int student_id;char …

听障人士的“有声桥梁”:百度智能云曦灵-AI手语平台发布

在刚刚落幕的冰雪赛事中,百度智能云曦灵为央视新闻打造的AI手语主播正式上岗,她以流畅、专业的手语服务实时传递冰雪运动的激情。然而在日常生活中,听障人士想要方便地获取信息仍面临着众多困难,无障碍窗口稀缺的问题亟待解决。 …

模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove

模拟实现:strstrstrcpystrlenstrcatstrcmpmemcpymemmove1 strstr 字符串中查找子字符串char * my_strstr(const char *dest, const char *src) {const char *ret dest;const char *p dest;const char *q src;assert(dest ! NULL && src ! NULL); while(r…

【Spring Security】五、自定义过滤器

在之前的几篇security教程中,资源和所对应的权限都是在xml中进行配置的,也就在http标签中配置intercept-url,试想要是配置的对象不多,那还好,但是平常实际开发中都往往是非常多的资源和权限对应,而且写在配…

一星期没完成Ansible任务

这个星期,前4天,我在看Nginx,没有深入Ansible。 这几天我有思考做Ansible的哪个方面,现在我用Ansible可以用,但是没有生产环境,我对基础部分热情不是特别大,应该是基础部分大家在弄,…

Python 批量处理 Excel 数据后,导入 SQL Server

作者 | 老表来源 | 简说Python1、前言2、开始动手动脑2.1 拆解明确需求2.2 安装第三方包2.3 读取excel数据2.4 特殊数据数据处理2.5 其他需求2.6 完整调用代码1、前言今天教大家一个需求:有很多Excel,需要批量处理,然后存入不同的数据表中。2…

最经典的计算机网络新书推荐--计算机网络(第5版)Tanenbaum著中文版上市

作者:Tanenbaum是全球最著名的计算机科学家。linux之父Linus当年就是参考Tanenbaum写的MINIX! Tanenbaum《计算机网络(第5版) 》《现代操作系统(第3版) 》《操作系统设计与实现(第3版) 》《分布式系统原理与范型(第2版) 》《计算机组成结构化方法&#x…

elasticsearch简单操作(二)

让我们建立一个员工目录,假设我们刚好在Megacorp工作,这时人力资源部门出于某种目的需要让我们创建一个员工目录,这个目录用于促进人文关怀和用于实时协同工作,所以它有以下不同的需求:1、数据能够包含多个值的标签、数…

苹果放大招?「廉价版」5G iPhone 将揭晓,M2芯片来袭?

整理 | 张洁来源 | CSDN3 月 2 日,苹果公司正式宣布将于北京时间 3 月 9 日凌晨 2 点举办 2022 年的首场活动,主题为“peek performance(高能传送)”。与去年一样,苹果 2022 年的第一场活动将继续以线上的方式进行。活…

PHP 预编译加速: eAccelerator的安装和性能比较

eAccelerator已经是很常用的PHP平台预编译加速的手段了。今天在自己机器上尝试安装了一下,备忘如下: 获得源代码:http://bart.eaccelerator.net/source/编译:需要有autoconf支持,解包后在源程序目录下:/usr…

合并区间(LintCode)

合并区间 给出若干闭合区间,合并所有重叠的部分。 样例 给出的区间列表 > 合并后的区间列表: [ [[1, 3], [1, 6],[2, 6], > [8, 10],[8, 10], [15, 18][15, 18] ] ]挑战 O(…

Kylin集群部署和cube使用

Kylin集群部署和cube使用 安装集群环境节点 Kylin节点模式 Ip 内存 磁盘Node1 All 192.167.71.11 2G 80GNode2 query 192.168.71.12 1.5G 80GNode3 query 192.168.71.13 1.5G 80GKylin工作原理如下: 集群时间同步Ntp服务自行设置安装kylin之前所需要的环境Hadoop-2.…

就是个控制结构,Scala 能有什么新花样呢?

作者 | luanhz来源 | 小数志导读编程语言中最为基础的一个概念是控制结构,几乎任何代码都无时无刻不涉及到,其实也就无外乎3种:顺序、分支和循环。本文就来介绍Scala中控制结构,主要是分支和循环。Scala中的控制结构实质上与其他编…

快速开发一个PHP扩展

快速开发一个PHP扩展 作者:heiyeluren时间:2008-12-5博客:http://blog.csdn.net/heiyeshuwu 本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速…

oracle11g的安装

目录层次:linux->oracle软件->dbca数据库安装过程:虚拟机->linux->VMtools->拷贝数据库软件->创建一个目录mkdir->创建组.用户->修改根目录->设置参数->解压 >安装->oracle完成参考:安装oracle软件linu…

python 100例(10)

2019独角兽企业重金招聘Python工程师标准>>> 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多…

cocos2dx-3.9 集成admob

Part 1: 安装GoogleMobileAds framework (即admob) 1. 安装Cocoapods,否则解决依赖关系和配置真的会把人不累死也得烦死 sudo gem install cocoapods 国内用户安装过程中可能遇到SSL连接出错的问题,请参考 Cocoapod安装过程中的幺…

用C语言扩展PHP功能

用C语言扩展PHP功能建议读者群:熟悉c,linux,php PHP经过最近几年的发展已经非常的流行,而且PHP也提供了各种各样非常丰富的函数。但有时候我们还是需要来扩展PHP。比如:我们自己开发了一个数据库系统,而且有自己的库函数来操作数…

手把手快速实现 Resnet 残差模型实战

作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言:随着深度学习的发展,网络模型的深度也随之越来越深,但随着网络模型深度的加深,往往会曾在这随着模型深度的加大,模型准确率反而下降的问…

JHipster开发环境安装

这里采用官方推荐的Yarn安装方法,默认操作系统为CentOS 7.4。 1 安装JDK 推荐版本:OpenJDK 1.8.0-64bit。 完整安装说明,请参考这里 2 安装Nodejs 推荐版本: v8.11.3 完整安装说明,请参考这里 3 安装Yarn 推荐版本&…

用C语言写PHP扩展

用C语言写PHP扩展 1:预定义 在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def 内容是你希望定义的函数名以及参数: int a(int x,int y)string b(string str,int n) 2:到php源码目录的ext目…