这是目录

  • 1 漏洞的来源
  • 2 漏洞分析
    • 2.1 数据来源
    • 2.2 数据分析
  • 3 举例

回顾之前的内容
逃逸攻击
投毒攻击

在前文中,我们介绍了Attack AI的基础概念,即黑客对AI发起的攻击,主要可以分为三种攻击类型,破坏模型完整性、可用性和机密性的攻击。


在本文,我们将介绍破坏模型可用性的一些攻击示例。

模型的可用性主要是指模型能够被正常使用。这一块的攻击面主要是算法系统依赖的底层框架、依赖库,攻击方式主要是对模型代码或底层依赖库的代码进行漏洞挖掘和利用,如溢出攻击、DDos攻击。

由于在野0day的信息无法获取,因此我们考虑对近年机器学习库相关的CVE进行一次简单的数据分析。

1 漏洞的来源

众所周知,当前运行的大多机器学习模型或是深度学习模型,都是基于一些底层的机器学习/深度学习框架和三方包。尤其是深度学习模型,系统框架非常多,主流的包括Tensorflow、Torch、Caffe等。通过使用深度学习框架,算法人员可以无需关心神经网络和训练过程的实现细节,更多关注应用本身的业务逻辑。 开发人员可以在框架上直接构建自己的模型,并利用框架提供的接口对模型进行训练。这些框架简化了深度学习应用的设计和开发难度,甚至仅通过几十行代码就能将一个深度学习模型构建出来。

此外,算法模型和框架还强依赖于大量三方包,如numpy、pandas、计算机视觉常用的openCV、自然语言处理常用的NLTK等等。因此,一旦这些深度学习框架和三方包中存在漏洞,就会被引入模型,破坏模型的可用性。

2 漏洞分析

2.1 数据来源

考虑到最便捷的数据集获取方式,我们考虑使用cvedetail对 TOP10 机器学习框架、第三方包的cve数据进行收集。若该库未被cvedetail收纳,则不计入本次分析。

cvedetail上的所有数据取自NVD (National Vulnerability Database,美国国家通用漏洞数据库)提供的XML。相比 CVE官网官网而言,维度更全、搜索功能更全面,但可能缺少一些已发布的漏洞。详细介绍见此:https://www.cvedetails.com/how-does-it-work.php

网址:https://www.cvedetails.com/


常见的机器学习三方包:
numpy
pandas
NLTK
openNLP
openCV

TOP10 机器学习框架:
TensorFlow
Theano
Scikit-learn
Caffe
H20
Amazon Machine Learning
Torch
Google Cloud ML Engine
Azure ML studio
Spark ML lib

2.2 数据分析

据 cvedetails 所示,从2000年至2019年,上述共有6个常见库被爆出了66个漏洞。

首先,从库的角度来看。NLP类框架的漏洞是最少的,基本在1个左右;openCV 的漏洞数最高,有29个。
openCV的漏洞主要集中在DoS、远程代码执行和溢出攻击上。

Tensorflow和openCV也是难兄难弟。

从漏洞类型来看,前三名分别是DoS、溢出和代码执行;CSRF、XSS、XXE相对少见。

从这些CVE的发布年份来看,2000年-2010年的漏洞主要是传统艺能选手pandas,2017-2019年,漏洞的发现数出现了井喷式的发展,一度高达19个(2017年),这或许和这几年机器学习和深度学习模型的火热发展相关。

感兴趣的小伙伴可以下载该数据集进行更深入的分析: https://github.com/verazuo/ml_cve_analysis

3 举例

案例1 CVE-2017-12852:对基于TensorFlow的语音识别应用进行拒绝服务攻击
numpy 是TensorFlow所依赖的一个负责科学计算的python库。TensorFlow的很多应用在进行矩阵运算的时候都会用到它。 CVE-2017-12852这个漏洞就是numpy库里的一个简单逻辑漏洞。 这个问题的简单情况如下图所示,发生在numpy中的pad函数。

在pad函数中,存在这样一个while循环,循环结束需要使 pad_before > safe_pad和pad_after > safe_pad同时不成立, 而在这个例子中,可以使pad_before和 pad_after不断增大,而safe_pad不断减小,使得循环始终无法结束,从而导致拒绝服务。


如对于一个基于Tensorflow搭建的语音识别应用,攻击者通过构造语音文件,导致上图中显示的循环无法结束,从而使应用程序长时间占用CPU而不返回结果,最终导致拒绝服务攻击。

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

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

案例2 CVE-2019-14751 :目录遍历攻击
NLTK包是用来做自然语言处理的三方包,提供了很多NLP相关数据集。这些数据集通过ZIP归档文件传输给NTLK。NLTK Downloader实现了一个自定义函数_unzip_iter(),用于提取这些ZIP文件。3.4.5版本之前的NLTK可能受到目录遍历的攻击。

如上图所示,2280-2286行,filepath 被创建来记录ZIP包里的每个文件。这些文件在2286行被写入。

因为在提取路径上没有进行任何验证,所以攻击者可以使用带有相对路径的压缩包将任意文件写入文件系统。例如,NLTK Downloader将尝试在下载时将压缩包解压缩到$HOME/nltk_data/中。如果ZIP归档包含一个名为files/../../../../../tmp/evil.txt的文件,这个相对路径将被解析为/tmp/evil.txt

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)相关推荐

  1. CVE(Common Vulnerabilities and Exposures通用漏洞披露)笔记

    产生背景:目前实时入侵检测和漏洞扫描评估基于的主要方法还是"已知入侵手法检测"和"已知漏洞扫描",即基于知识库的技术,因此决定一个IDnA(Intrusion ...

  2. 【每日新闻】2017年漏洞披露数量创纪录达20,832个 | 朱啸虎评ICO:考验人性的模式从来就没有成功过

    每一个企业级的人  都置顶了 中国软件网 中国软件网  为你带来最新鲜的行业干货 小编点评 每一个持续进行的模式 都有各自的道理 包括风险投资 趋势洞察 朱啸虎评ICO:考验人性的模式从来就没有成功过 ...

  3. (23)【漏洞利用】【原理、利用过程】中间件解析漏洞、CMS漏洞、编辑器漏洞、CVE漏洞

    目录 解析漏洞: 原理: 变化因素: 熟知的中间件(解析漏洞) 0x01    IIS5.x-6.x解析漏洞: (1)目录解析漏洞(IIS6.0) 原理: 利用过程: (2)文件解析漏洞 原理: 利用 ...

  4. 通用漏洞评估方法CVSS3.0介绍

    CVSS(Common Vulerability Scoring System, 通用漏洞评估方法),是由NIAC 发布.FITST维护的开放式行业标准,CVSS 的发布为信息安全产业从业人员交流网络 ...

  5. 通用漏洞评估方法CVSS3.0详解

    CVSS(Common Vulerability Scoring System, 通用漏洞评估方法),是由NIAC 发布.FITST维护的开放式行业标准,CVSS 的发布为信息安全产业从业人员交流网络 ...

  6. 【安全资讯】《网络产品安全漏洞管理规定》出台,漏洞披露者的紧箍咒?

    作者|暗中观察的云鹏 来源| 中关村在线 发布时间|2021-07-15 近日,工业和信息化部.国家互联网信息办公室.公安部正式印发<网络产品安全漏洞管理规定>(以下简称<规定> ...

  7. 专家 | 黄道丽:网络安全漏洞披露规则及其体系设计

    摘要 网络安全漏洞披露已成为网络安全风险控制的中心环节.不规范或非法的网络安全漏洞披露危害网络空间整体安全,凸显法律规定的灰色地带.实践中网络安全漏洞披露表现为不披露.完全披露.负责任披露和协同披露等 ...

  8. 美国会议员提出“漏洞披露法案” 仍考虑非中立实体授权

    白宫网络安全协调员罗伯·乔伊斯本周在波士顿举办的科技领袖会议上表示,特朗普政府已经在关注一项政策程序改革提议,即决定如何处理新发现的软件零日漏洞. 该政策程序被称为"漏洞公平裁决程序&quo ...

  9. 记一次CNVD通用漏洞审计

    本文转载于:https://www.freebuf.com/articles/web/290697.html 0x01 前言 写这篇文章的缘由其实还挺魔幻的,起因是在一次实战渗透时通过弱口令拿下一个低 ...

最新文章

  1. 《精通Nginx》——2.8 完整的样本配置文件
  2. python datetime计算时间差_Python中关于日期的计算总结
  3. 8086的两种工作模式_Lora自组网网关的两种工作模式
  4. 三十五、Scrapy 中的杂知识总结和代理池的编写
  5. C语言的putpiel函数,C语言graphics.h函数介绍
  6. 修改win10我的文档下载等移动别处
  7. idea mac 查找文件快捷键_idea for mac 最全快捷键整理
  8. 【Tomcat源码学习】-2.容器管理
  9. golang 格式化时间成datetime
  10. Python 基础---列表
  11. PHPStorm/IntelliJ IDEA 设置SFTP
  12. 入门选手都能了解的聚类算法之二(DBSCAN)
  13. 广东省计算机学校,广东省计算机基础练习平台(高校版)安装设置方法
  14. deepin装oracle,deepin安装Oracle jdk8,以及添加add-apt-repository命令支持
  15. Autovue 21.0.2.4 发布
  16. 永久开源的cms系统
  17. 微信读书vscode插件_推荐 10 款有趣的 VSCode 插件
  18. 二、Docker配置阿里镜像加速器
  19. 计算机关机管理软件,电脑自动关机软件
  20. 使用Juju将OpenStack部署在单机的LXD容器上(by quqi99)

热门文章

  1. 移动机器人的那些避障方法你知多少?
  2. 开发了一个网盘搜索引擎
  3. Win CE 添加微软自带拼音输入法
  4. 工作总结PPT模板,精选60套,可下载
  5. 用Python实现多层感知器神经网络
  6. 2018 考研 408 经验贴——数学一
  7. 1024程序员节,给猿媛们的超值当当网购书薅羊毛
  8. 魅蓝note2在ubuntu14.04下mtp模式无法自动mount的解决方法
  9. 安装Carthage
  10. POJ3322 Bloxorz I(BFS)