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

简介:

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的语音识别应用进行拒绝服务攻击

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

图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

相关文章
|
4天前
|
机器学习/深度学习 存储 算法
m基于Yolov2深度学习网络的螺丝检测系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2算法的螺丝检测仿真结果,该系统基于深度学习的YOLOv2网络,有效检测和定位图像中的螺丝。YOLOv2通过批标准化、高分辨率分类器等优化实现速度和精度提升。核心代码部分涉及设置训练和测试数据,调整图像大小,加载预训练模型,构建YOLOv2网络并进行训练,最终保存检测器模型。
21 3
|
7天前
|
机器学习/深度学习 传感器 边缘计算
基于深度学习的图像识别技术在自动驾驶系统中的应用
【5月更文挑战第3天】 随着人工智能技术的飞速发展,深度学习已经成为推动技术创新的关键力量。特别是在图像识别领域,深度学习技术通过模仿人脑处理视觉信息的方式,显著提升了机器识别和理解图像的能力。本文主要探讨了深度学习在自动驾驶系统中图像识别的应用,包括车辆检测、行人识别、交通标志识别等关键功能,并分析了当前的挑战及未来的发展趋势。
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【5月更文挑战第2天】 随着人工智能技术的飞速发展,深度学习已经成为推动多个科技领域进步的关键力量。特别是在图像识别技术方面,深度学习的应用已经极大地改善了算法的准确性和效率。本文将探讨深度学习在图像识别中的核心机制,并重点分析其在自动驾驶系统中的具体应用,包括车辆检测、行人识别以及交通标志识别等关键技术点。通过综合现有研究成果与最新技术动态,本文旨在为读者提供一个关于如何利用深度学习提升自动驾驶系统性能的全面视角。
|
8天前
|
机器学习/深度学习 自动驾驶 算法
基于深度学习的图像识别在自动驾驶系统中的应用
【5月更文挑战第2天】 随着人工智能技术的飞速发展,深度学习在图像识别领域取得了突破性进展。这些技术的应用不仅局限于日常的智能设备中,更在自动驾驶系统的发展中扮演着关键角色。本文旨在探讨深度学习算法如何提升自动驾驶汽车的图像识别能力,以及这一进步如何促进自动驾驶系统的整体性能和安全性。通过分析最新的研究成果和实际案例,我们阐述了深度学习模型在处理复杂交通场景中的优势,并讨论了未来可能的发展趋势。
|
9天前
|
机器学习/深度学习 自动驾驶 安全
基于深度学习的图像识别技术在自动驾驶系统中的应用网络安全与信息安全:防御前线的关键技术与意识
【4月更文挑战第30天】随着人工智能技术的飞速发展,深度学习已成为推动多个技术领域革新的核心力量。特别是在图像识别领域,深度学习模型已展现出超越传统算法的性能。在自动驾驶系统中,准确的图像识别是确保行车安全和高效导航的基础。本文将探讨深度学习在自动驾驶中图像识别的应用,分析关键技术挑战,并提出未来的发展方向。
|
9天前
|
机器学习/深度学习 自动驾驶 安全
深入理解操作系统内存管理:策略与实现基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第30天】 在现代计算机系统中,操作系统的内存管理是确保系统高效、稳定运行的关键组成部分。本文将深入探讨操作系统中内存管理的多种策略及其实现机制,包括但不限于分页、分段和段页式结合等技术。我们将剖析内存分配的原理,讨论虚拟内存技术的实现以及它如何提供更大的地址空间并允许内存的交换。同时,我们还会涉及内存保护机制,它们是如何防止程序访问未授权的内存区域。最后,文中将对现代操作系统如Linux和Windows中的内存管理实践进行比较分析,以期给读者提供全面而深入的理解和参考。 【4月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经
|
9天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已成为推动技术创新的核心动力之一。特别是在图像识别领域,深度学习技术已经取得了显著的成就。本文旨在探讨基于深度学习的图像识别技术在自动驾驶系统中的应用,并分析了该技术对提升自动驾驶汽车环境感知能力的重要性。通过构建高效准确的深度神经网络模型,实现对道路场景中各种物体的快速识别与分类,从而为自动驾驶决策提供可靠的数据支持。
|
9天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战移动应用开发的未来:跨平台框架与原生操作系统的融合
【4月更文挑战第30天】 随着人工智能的迅猛发展,深度学习技术已成为图像识别领域的核心竞争力。本文章将探讨深度学习在图像识别中的应用,并分析其面临的主要挑战。我们将从卷积神经网络(CNN)的基础架构出发,讨论其在图像分类、目标检测和语义分割等方面的应用案例,同时指出数据偏差、模型泛化能力以及对抗性攻击等问题对图像识别准确性的影响。通过实例分析和最新研究成果,本文旨在为读者提供一个关于深度学习在图像处理领域内应用的全面视角。
|
9天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第30天】 随着人工智能技术的不断进步,深度学习在图像处理与分析方面取得了革命性的突破。尤其是在自动驾驶领域,基于深度学习的图像识别技术已经成为实现车辆环境感知的关键。本文将探讨深度学习模型如何改善自动驾驶系统中的图像识别任务,包括物体检测、分类及追踪,并分析这些技术对提高自动驾驶汽车安全性和可靠性的影响。我们还将讨论目前面临的挑战以及未来的发展趋势。
|
9天前
|
机器学习/深度学习 数据采集 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第30天】 本文深入探讨了深度学习技术在自动驾驾驶车辆图像识别系统中的应用,重点分析了卷积神经网络(CNN)的结构优化、训练策略和在实际场景中的部署问题。通过对比不同深度学习模型的性能表现,揭示了数据处理、模型泛化能力和实时性要求之间的平衡机制。文章不仅总结了现有技术的局限性,还提出了未来研究的方向,旨在为自动驾驶领域的技术进步提供理论支持和实践指南。