深度学习框架中的魔鬼:探究人工智能系统中的安全问题

ISC 2017中国互联网安全大会举办了人工智能安全论坛。 我们把论坛总结成为一系列文章,本文为系列中的第一篇。

深度学习引领着新一轮的人工智能浪潮,受到工业界以及全社会的广泛关注。 虽然大家对人工智能有很多美好的憧憬,但是现实是残酷的 — 随着一批深度学习应用逐渐开始变成现实,安全问题也渐渐显现出来。

人工智能应用面临来自多个方面的威胁:包括深度学习框架中的软件实现漏洞、对抗机器学习的恶意样本生成、训练数据的污染等等。这些威胁可能导致人工智能所驱动的识别系统出现混乱,形成漏判或者误判,甚至导致系统崩溃或被劫持,并可以使智能设备变成僵尸攻击工具。

在推进人工智能应用的同时,我们迫切需要关注并解决这些安全问题。本文作为人工智能与安全的系列文章之一,首先介绍我们在深度学习框架中发现的安全问题。

一、人工智能讨论中的安全盲点

目前公众对人工智能的关注,尤其是深度学习方面,
缺少对安全的考虑。我们把这个现象称为人工智能的安全盲点。导致这个盲点的主要原因是由于算法与实现的距离。
近期对于深度学习的讨论主要停留在算法和前景展望的层面,对应用场景和程序输入有很多假设。受到关注的应用往往假定处于善意的或封闭的场景。例如高准确率的语音识别中的输入都是自然采集而成,图片识别中的输入也都来自正常拍摄的照片。这些讨论没有考虑人为恶意构造或合成的场景。

人工智能讨论中的安全盲点可以通过最典型的手写数字识别案例来说明。基于MNIST数据集的手写数字识别应用是深度学习的一个非常典型的例子,
最新的深度学习教程几乎都采用这个应用作为实例演示。在这些教程中(如下图所示)算法层的讨论所考虑的分类结果只关心特定类别的近似度和置信概率区间。算法层的讨论没有考虑输入会导致程序崩溃甚至被攻击者劫持控制流。这其中被忽略掉的输出结果反映出算法和实现上考虑问题的差距,也就是目前人工智能讨论中的安全盲点。

图1. 深度学习算法与安全所考虑的不同输出场景

现实中的开放应用需要处理的输入不仅来源于正常用户,也可以是来自黑产等恶意用户。 人工智能的应用必须考虑到应用所面临的现实威胁。程序设计人员需要考虑输入数据是否可控,监测程序是否正常执行,并验证程序执行结果是否真实反映应用的本来目的。

二、深度学习系统的实现及依赖复杂度

深度学习软件很多是实现在深度学习框架上。目前基于深度学习系统框架非常多,主流的包括TensorFlow、Torch,以及Caffe 等。

深度学习框架的使用可以让应用开发人员无需关心神经元网络分层以及培训分类的实现细节,更多关注应用本身的业务逻辑。开发人员可以在框架上直接构建自己的神经元网络模型,并利用框架提供的接口对模型进行训练。这些框架简化了深度学习应用的设计和开发难度,一个深度学习的模型可以用几十行代码就可以写出来。

图2. 深度学习框架以及框架组件依赖

深度学习框架掩盖了它所使用的组件依赖,同时也隐藏了系统的复杂程度。
每种深度学习框架又都是实现在众多基础库和组件之上,很多深度学习框架里还包括图像处理、矩阵计算、数据处理、GPU加速等功能。图2展示了典型的深度学习应用组件和它们的依赖关系。例如Caffe除了自身神经元网络模块实现以外,还包括137个第三方动态库,例如libprotobuf,
libopencv, libz 等。 谷歌的TensorFlow框架也包含对多达97个python模块的依赖,包括librosa,numpy
等。

系统越复杂,就越有可能包含安全隐患。任何在深度学习框架以及它所依赖的组件中的安全问题都会威胁到框架之上的应用系统。另外模块往往来自不同的开发者,对模块间的接口经常有不同的理解。当这种不一致导致安全问题时,模块开发者甚至会认为是其它模块调用不符合规范而不是自己的问题。在我们的发现的导致深度学习框架崩溃的漏洞中就遇到过这种情况。

三、魔鬼隐藏于细节之中

正如安全人员常说的, 魔鬼隐藏于细节之中 (The Devil is In the Detail)。任何一个大型软件系统都会有实现漏洞。考虑到深度学习框架的复杂性, 深度学习应用也不例外。

360 Team Seri0us
团队在一个月的时间里面发现了数十个深度学习框架及其依赖库中的软件漏洞。发现的漏洞包括了几乎所有常见的类型,例如内存访问越界,空指针引用,整数溢出,除零异常等。这些漏洞潜在带来的危害可以导致对深度学习应用的拒绝服务攻击,控制流劫持,分类逃逸,以及潜在的数据污染攻击。

以下我们通过两个简单的例子来介绍深度学习框架中的漏洞以及对应用的影响。两个例子都来源于框架的依赖库,一个是TensorFlow框架所依赖的numpy包,另一个是Caffe在处理图像识别所使用的libjasper库。

案例1: 对基于TensorFlow的语音识别应用进行拒绝服务攻击

图3. Numpy 拒绝服务攻击漏洞及官方补丁

我们选择了基于TensorFlow的语音识别应用来演示基于这个漏洞触发的攻击。攻击者通过构造语音文件,会导致上图中显示的循环无法结束,使应用程序长时间占用CPU而不返回结果,从而导致拒绝服务攻击。

我们选取了一个基于TensoFlow进行声音分类的应用来演示这个问题。这个应用是一个 TensorFlow程序演示,应用脚本源码可以从以下网站下载:“Urban SoundClassification”。

当给定一个正常的狗叫的音频文件,应用可以识别声音内容为 “dog bark”,其过程如下:

图4

当给定一个畸形的声音文件可导致拒绝服务, 程序无法正常结束:

图5

在前面关于模块依赖复杂导致漏洞的讨论中,我们提到过对模块接口的理解不一致会导致问题。值得一提的是Numpy这个漏洞的修复过程正好反映了这个问题。在我们最初通知Numpy开发者的时候,他们认为问题是由于调用者librosa库的开发人员没有对数据进行严格检测,导致空列表的使用。所以尽管有应用会因为此问题受到拒绝服务攻击,

Numpy开发者最初认为不需要修复这个问题。但后来发现有多个其它库对numpy的相关函数也有频繁的类似调用,所以最终对这个漏洞进行了修复。同时librosa
开发者也对相关调用添加了输入检查。

案例2:恶意图片导致基于Caffe的图像识别应用出现内存访问越界

很多深度学习的应用是在图像和视觉处理领域。我们发现当使用深度学习框架Caffe来进行图片识别时,Caffe会依赖libjasper等图像视觉库来处理输入。

libjasper对图像进行识别处理时,如果存在漏洞,例如内存越界,就可能导致整个应用程序出现崩溃,甚至数据流被篡改。下面的例子是用展示的是用Caffe所自带的例子图像识别程序来处理我们提供的畸形图片所出现的崩溃场景。

当利用Caffe来对正常图片进行分类时,正常的使用情况如下:

图6

图7

以上仅仅是我们发现的众多问题中的两个展示。 360Team Seri0s
团队已发现并公布了数十个导致深度学习框架出现问题的漏洞,其中包含已对外公开的15个CVE。在上个月举行的ISC安全大会上,Team
Seri0s成员已经展示了六个攻击实例。更多细节请参考ISC 2017大会人工智能与安全论坛所发布的内容。

四、小结

本文的目的是介绍被大众所忽视的人工智能安全问题,尤其是深度学习软件实现中的漏洞以及可能造成的隐患。目前在媒体中展示的深度学习应用中,许多并不与外界直接交互,例如AlphaGo;或者是在封闭的环境下工作,例如通过用户行为日志对用户分类画像并进行异常检测。这些系统的攻击面相对较小,它们并不容易受到本文中所提到的漏洞的直接影响。但是随着人工智能应用的普及,安全威胁会不断增加,更多的应用会把应用的输入接口直接或间接暴露出来,同时封闭系统的攻击面也会随着时间和环境而转化。另外除了传统的基于软件漏洞的攻击,深度学习还面临对抗神经元网络以及其它各种逃逸攻击。
我们会在后续文章里对这方面的工作进行更新。

本文作者:肖奇学 李康

来源:51CTO

时间: 2024-10-31 06:04:47

深度学习框架中的魔鬼:探究人工智能系统中的安全问题的相关文章

多任务深度学习框架在ADAS中的应用 | 分享总结

雷锋网(公众号:雷锋网)AI科技评论按:在8月10日雷锋网AI研习社邀请了北京交通大学电子信息工程学院袁雪副教授给我们讲解了在高级辅助驾驶系统(ADAS)中的多任务深度学习框架的应用 内容提纲:  ADAS系统包括车辆检测.行人检测.交通标志识别.车道线检测等多种任务,同时,由于无人驾驶等应用场景的要求,车载视觉系统还应具备相应速度快.精度高.任务多等要求.对于传统的图像检测与识别框架而言,短时间内同时完成多类的图像分析任务是难以实现的. 袁雪副教授的项目组提出使用一个深度神经网络模型实现交通场

BNN - 基于low-bits量化压缩的跨平台深度学习框架

写在最前     本文介绍阿里IDST部门研发.基于low-bits量化压缩的深度学习框架BNN(Binary Neural Network),BNN具有以下特点:     1) 跨平台:BNN可以在不同的主流硬件平台上进行部署,包括ARM系列移动端处理器.Intel系列服务器以及正在开发中的NVidia的图形处理器:     2)压缩比高:使用了自研发low-bits量化压缩技术,在算法精度几乎无损的前提下能达到40-100倍压缩率,而且我们也提供无需重新训练的压缩方式,极大简化了迭代周期:

Facebook 开源深度学习框架 Torchnet

Facebook开源深度学习框架Torchnet,加快A.I研究步伐 今天,在新发布的一篇学术报告中,Facebook 详细介绍了新的人工智能开源软件 Torchnet,用于简化深度学习. 深度学习是当下一种时髦的学习方式,涉及到培训人工神经网络处理大量的数据,如图片,然后让神经网络做出新数据的预测.与其建立一个全新的深度学习框架, Facebook 选择的是在 Torch 上编译一个开源库,Facebook 先前也曾致力于此. "这 使得它很容易实现完全隐藏 I/O(输入 / 输出)成本功能,

从NNVM看2016年深度学习框架发展趋势

雷锋网(公众号:雷锋网)按:本文作者潘汀,合肥工业大学计算机专业大三本科生,中科院深圳先进院集成所MMLAB访问学生.原ACM-ICPC算法竞赛选手,2015年获CCPC铜牌.2015年初开始研究机器学习,研究兴趣集中于对深度学习理论.应用(CV&NLP)及系统架构设计的综合探索.关于深度学习在面部情感分析方面应用的论文被<自动化学报>录用. | 虚拟框架杀入 从发现问题到解决问题 半年前的这时候,暑假,我在SIAT MMLAB实习.看着同事一会儿跑Torch,一会儿跑MXNet,一会

深度学习框架TensorFlow在Kubernetes上的实践

什么是深度学习? 深度学习这个名词听了很多次,它到底是什么东西,它背后的技术其实起源于神经网络.神经网络最早受到人类大脑工作原理的启发,我们知道人的大脑是很复杂的结构,它可以被分为很多区域,比如听觉中心.视觉中心,我在读研究中心的时候,做视频有计算机视觉研究室,做语言有语言所,语音有语音所,不同的功能在学科划分中已经分开了,这个和我们人类对大脑理解多多少少有一些关系.之后科学家发现人类大脑是一个通用的计算模型. 科学家做了这样一个实验,把小白鼠的听觉中心的神经和耳朵通路剪断,视觉输入接到听觉中心

【玩转数据系列十】利用阿里云机器学习在深度学习框架下实现智能图片分类

伴随着今日阿里云机器学习PAI在云栖大会的重磅发布,快来感受下人工智能的魅力. 一.背景 随着互联网的发展,产生了大量的图片以及语音数据,如何对这部分非结构化数据行之有效的利用起来,一直是困扰数据挖掘工程师的一到难题.首先,解决非结构化数据常常要使用深度学习算法,上手门槛高.其次,对于这部分数据的处理,往往需要依赖GPU计算引擎,计算资源代价大.本文将介绍一种利用深度学习实现的图片识别案例,这种功能可以服用到图片的检黄.人脸识别.物体检测等各个领域. 下面尝试通过阿里云机器学习平台产品,利用深度

云端深度学习框架TensorFlow读取数据IO的高效方式

低效的IO方式 最近通过观察PAI平台上TensoFlow用户的运行情况,发现大家在数据IO这方面还是有比较大的困惑,主要是因为很多同学没有很好的理解本地执行TensorFlow代码和分布式云端执行TensorFlow的区别.本地读取数据是server端直接从client端获得graph进行计算,而云端服务server在获得graph之后还需要将计算下发到各个worker处理(具体原理可以参考视频教程-Tensorflow高级篇:https://tianchi.aliyun.com/compet

财富:亚马逊采用 MXNet ,巨头间深度学习框架之争白热化

随着人工智能的发展,现代科技公司的终极目标是构建无需人类介入.能够自我思考的 AI 软件. 亚马逊首席技术官 Werner Vogels 在周二的一篇博客文章中表示,亚马逊网络服务公司(AWS)刚刚选择 MXNet 作为其最主要的深度学习框架. <财富>今年 9 月的一篇深度长文回溯了深度学习推动的人工智能在整个计算生态系统引发的革命,如文章所述,深度学习是 AI 的一个子集,包含神经网络的使用.神经网络在算法(而非人类程序员)的帮助下通过处理大量数据来学习并解决问题. Vogels 表示,A

缺乏支持!Caffe深度学习框架未来堪忧

文章讲的是缺乏支持!Caffe深度学习框架未来堪忧,Caffe是由贾扬清在伯克利上学期间开发的,该项目已经开放源码,目前已获得社区贡献以及伯克利视觉和学习中心(BVLC)赞助.广泛来说,BVLC现在是伯克利人工智能研究(BAIR)实验室的一部分.同样,Caffe也已经超出了视觉范围,包括非视觉深度学习部分,虽然已发布的Caffe模型绝大多数仍然与图像和视频相关. Caffe是一个由表达式,速度和模块化组成的深度学习框架.其优势在于Caffe的模型和优化是通过没有硬编码的配置来定义的,以及在GPU