你的深度学习应用可能存在安全风险!

 你的深度学习应用可能存在安全风险!

导语:深度学习框架和应用中存在许多漏洞,其中15个漏洞拥有CVE编号。漏洞的类型有堆溢出、数字溢出、Use-After-Free漏洞等。

360安全实验室(肖奇学 、Deyue Zhang)、佐治亚大学(李康)和弗吉尼亚大学(Weilin Xu)的研究者,他们在论文《Security Risks in Deep Learning Implementations》中,对三个主流的深度学习框架的实现中存在的安全威胁进行了检查和分析,分别是Caffe, TensorFlow, and Torch。文中,作者提到软件来说,应用实现的复杂性会导致一些软件漏洞的产生。深度学习框架面临同样的挑战,经过检查,研究人员发现了许多实现的漏洞,其中15个漏洞拥有CVE编号。漏洞的类型有堆溢出、数字溢出、Use-After-Free漏洞等。

深度学习应用程序的分层架构

深度学习框架让开发人员可以快速开发深度学习应用程序。深度学习应用程序采用的是一种三层的分层架构,最底层是框架依赖库,上层是深度学习的框架,最上层为深度学习的应用程序。有了预先实现的神经网络层,深度学习框架允许开发者重点关注应用程序的实现逻辑。

你的深度学习应用可能存在安全风险!

深度学习应用程序的分层架构

深度学习应用程序的威胁和风险

基于深度学习和人工智能的应用程序越来越多,但是关于应用程序的安全性却很少受到关注。

攻击面分析

MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片,它也包含每一张图片对应的标签,告诉我们这个是数字几。研究人员认为MNIST这样的图像识别应用程序有三个攻击面:

1、恶意图像输入

许多深度学习应用程序,都是经过训练后根据输入的数据进行分类和识别。对从文件或网络中读取输入的应用程序,攻击者有构造恶意输入图形的能力。从文件中读取输入相比,直接从直连的摄像头中读取输入的应用程序的攻击面更小。虽然攻击面变小了,但是仍然有从这个入口进行攻击的可能。

2、恶意训练数据

图像识别应用程序需要训练样本,而这些样本可能会被污染,比如来源于外部资源。这就是所谓的数据污染攻击。数据污染攻击是不依赖于软件漏洞的,但是软件实现中的漏洞会让数据污染攻击更易实现。

3、恶意模型

如果深度学习应用程序使用的模型是第三方的,那也有被攻击的可能。有许多公开的针对没有很多机器学习知识的开发者使用的深度学习模型。这些模型可能会被攻击者利用,进行潜在的攻击。与数据污染攻击类似,攻击者可以在不利用其他漏洞的情况下对这些使用外部模型的应用程序产生威胁。代码中的漏洞可以帮助攻击者隐藏恶意模型,并使恶意模型更加真实。

威胁种类

你的深度学习应用可能存在安全风险!


从上图可以看出,其中Caffe的漏洞最多,其次是Torch,最少的是Tensorflow。显现出最多的安全威胁依次是奔溃, DoS, 堆溢出、数字溢出。

威胁1:DoS攻击

深度学习框架中最常见的漏洞是那些会引起程序奔溃、进入无线循环、或耗尽内存资源的软件bug。这样的漏洞引起的直接威胁就是对运行在框架上的应用程序的DOS攻击。如TensorFlow框架中的numpy package的漏洞,漏洞存在与pad()函数中,pad()函数中含有一个while循环,如果用户的输入不被接受,那么就会进入循环状态。

--- a/numpy/lib/arraypad.py
+++ b/numpy/lib/arraypad.py
@@ -1406,7 +1406,10 @@ def pad(array, pad_width, mode, **kwargs):
newmat = _append_min(newmat, pad_after, chunk_after, axis)
elif mode == ’reflect’:
- for axis, (pad_before, pad_after) in enumerate(pad_width):
+ if narray.size == 0:
+ raise ValueError("There aren’t any elements to reflect in ’array’!")
+
+ for axis, (pad_before, pad_after) in enumerate(pad_width):
... ...
method = kwargs[’reflect_type’]
safe_pad = newmat.shape[axis] - 1
while ((pad_before > safe_pad) or (pad_after > safe_pad)):
... ...

Numpy包示例

威胁2:evasion(躲避)攻击

evasion(躲避)攻击是攻击者可以构建让深度学习模型误分类的输入。关于这种构造,有很多学者已经证明过了(adversarial learning methods)。当发现有漏洞的深度学习模型,攻击者可以利用软件的漏洞达到evasion(躲避)攻击的目的。研究人员在深度学习模型中发现很多可以造成错误分类的内存破坏bug。攻击者有两种方式可以利用bug:1)攻击者利用漏洞改写内存中的内容,这样就可以更改分类的结果;2)劫持应用程序的控制流来跳过模型的执行或改变模型执行的顺序。

用户喜欢...

机器学习更接近你身边的微控制器

机器学习(ML)是人工智能(AI)的一个分支,多年来一直在电子系统中应用。但是,直到现在,实施ML所需的处理能力大部分都被限制在基于云计算的活动中。然而,这种情况即将发生变化,随...


机器学习中如何选择分类器

在机器学习中,分类器作用是在标记好类别的训练数据基础上判断一个新的观察样本所属的类别。分类器依据学习的方式可以分为非监督学习和监督学习。 非监督学习顾名思义指的是给予分...


虚幻引擎学习之路:渲染模块之全局光照明

之前为大家分别介绍了Unreal 4引擎中渲染模块的光照系统、材质系统和相机图像后处理,在本篇文章中,我们将为大家介绍渲染模块的全局光照明这部分内容。 在此,特别感谢Unreal中国团队对...


【科普】CNN(卷积神经网络)、RNN(递归神经网络)、DNN(深度神经网络)内部网络结构的区别

先说DNN,从结构上来说他和传统意义上的NN(神经网络)没什么区别,但是神经网络发展时遇到了一些瓶颈问题。 一开始的神经元不能表示异或运算,科学家通过增加网络层数,增加隐藏层可...


虚幻引擎学习之路:动画模块之基础篇

之前我们陆续为大家详细介绍了Unreal 4引擎的渲染模块(包括光照系统、材质系统、相机后处理和全局光照明),接下来我们将讲解动画模块的基础功能。 动画模块是游戏引擎中的重要部分,...


深度学习中消失的梯度

了解深度学习的同学可能知道,目前深度学习面临的一个问题就是在网络训练的过程中存在梯度消失问题(vanishing gradient problem),或者更广义地来讲就是不稳定梯度问题。那么到底什么是梯...


学习OpenGL ES之物理引擎

前言 本文将介绍3D物理引擎Bullet的基本使用方式以及如何将之前的OpenGL渲染代码和Bullet相结合,制造一个符合物理运动规则的虚拟3D场景。下面是效果图。 Bullet Bullet是一个开源的物理引擎,...


机器学习方法:从线性模型到神经网络

发现模式 一个模型实际上都是一个从输入到输出的函数,我们希望用这些模型发现数据中的模式,发现数据中存在的函数依赖,当然前提是数据中本身就存在这样的函数依赖。数据集有很多...


专家教你利用深度学习检测恶意代码

当前,恶意软件的检测已经成为全社会关注的网络安全焦点,因为许多时候,单个恶意软件就足以导致数百万美元的损失。目前的反病毒和恶意软件检测产品,一般采用的是基于特征的方法,...


AI医疗2.0时代已到,用深度学习助推人工智能落地

最近市场又被人工智能医疗刷屏了。刷屏的原因就是人工智能继战胜了国际各位围棋棋手之后,又有了一个新的突破,这个突破就是在医疗领域。今年11月,国家医学考试中心发布了“2017年国...


虚幻引擎学习之路:渲染模块之材质系统

接上文:虚幻引擎学习之路:渲染模块之光照系统 在本篇文章中,我们继续介绍渲染模块的另一重要部分:材质系统。 虚幻引擎学习之路:材质系统 材质描述了场景中物体与光照进行交互的...


前途光明的机器学习将走向何方?这里有 5 个关于它的未来预测

机器学习目前是 IT 领域最热门的话题之一,这是因为它在看似无限的应用场景中都能发挥自身的作用。从检测欺诈网站到自动驾驶汽车,再到识别你的“金牌会员”身份以进行价格预测等等...


学习OpenGL ES之教你实现SkyBox

不知道大家是否还记得基于CubeMap的反射效果里介绍的CubeMap,本文将使用CubeMap来制作3D游戏中的一个经典技术,天空盒(SkyBox)。老规矩,先来看下效果图。效果中的地形模型在前面的文章中...


机器学习作用于信息安全的五大顶级案例

通俗讲,机器学习就是“(计算机)无需显式编程即可学习的能力”。跨海量数据集应用数学技术,机器学习算法可建立起行为模型,并基于新输入的数据,用这些模型做出对未来的预测。视...


从图像到知识:深度神经网络实现图像理解的原理解析

摘要:本文将详细解析深度神经网络识别图形图像的基本原理。针对卷积神经网络,本文将详细探讨网络中每一层在图像识别中的原理和作用,例如卷积层(convolutional layer),采样层(pooling la...


学习OpenGL ES之教你制作迷雾

前言 本文将为大家介绍一种常见的3D技术-雾(fog)。雾可以让你看不清远处的物体,除了模拟真实环境中的雾效果以外,还可以用来遮挡修饰远处细节精度比较低的模型,让它们看起来没那...