操纵神经元构造后门,腾讯朱雀实验室披露AI模型新型攻击手法
近日,在第19届XCon安全焦点信息安全技术峰会上,腾讯朱雀实验室首度公开亮相。这个颇有神秘色彩的安全实验室专注于实战攻击技术研究和AI安全技术研究,以攻促防,守护腾讯业务及用户安全。
会上,腾讯朱雀实验室高级安全研究员nEINEI分享了一项AI安全创新研究:模拟实战中的黑客攻击路径,摆脱传统利用“样本投毒”的AI攻击方式,直接控制AI模型的神经元,为模型“植入后门”,在几乎无感的情况下,可实现完整的攻击验证。
这也是国内首个利用AI模型文件直接产生后门效果的攻击研究。该手法更贴近AI攻击实战场景,对于唤醒大众对AI模型安全问题的重视、进行针对性防御建设具有重要意义。
腾讯安全平台部负责人杨勇表示,当前AI已融入各行各业,安全从业者面临着更复杂、更多变的网络环境,我们已经看到了网络攻击武器AI化的趋势,除了框架这样的AI基础设施,数据、模型、算法,任何一个环节都是攻防的前线。作为安全工作者,必须走在业务之前,做到技术的与时俱进。
AI应用驶入深水区,安全暗礁不容忽视
自1956年,人工智能概念首次提出至今,AI相关研究不断深入,并与诸多技术领域广泛交叉。随着人工智能成为“新基建”七大版块中的重要一项,AI的产业应用也进一步驶入深水区。
然而,人工智能在带来便利之余,却也暗含巨大的安全隐患:几句含糊不清的噪音,智能音箱或许就能被恶意操控使得家门大开;一个交通指示牌上的小标记,也可能让自动驾驶车辆出现严重事故。在工业、农业、医疗、交通等各行业与AI深度融合的今天,如果AI被“攻陷”,后果将不堪设想。
这样的假设并非毫无根据。据腾讯朱雀实验室介绍,当前人工智能场景的实现依赖于大量数据样本,通过算法解析数据并从中学习,从而实现机器对真实世界情况的决策和预测。但数据却可能被污染,即“数据投毒,使算法模型出现偏差”。已有大量研究者通过数据投毒的方式,实现了对AI的攻击模拟。
随着技术研究的不断深入,安全专家也开始探索更高阶的攻击方式,通过模拟实战中的黑客攻击路径,从而针对性的进行防御建设。腾讯朱雀实验室发现,通过对AI模型文件的逆向分析,可绕过数据投毒环节,直接控制神经元,将AI模型改造为后门模型。甚至在保留正常功能的前提下,直接在AI模型文件中插入二进制攻击代码,或是改造模型文件为攻击载体来执行恶意代码,在隐秘、无感的情况下,进一步实现对神经网络的深层次攻击。
首秀操纵神经元,AI模型化身“大号木马”
如果将AI模型比喻为一座城,安全工作人员就是守卫城池的士兵,对流入城池的水源、食物等都有严密监控。但黑客修改神经元模型,就好像跳过了这一步,直接在城内“空投”了一个木马,用意想不到的方式控制了城市,可能带来巨大灾难。
会上,腾讯朱雀实验室展示了三种“空投木马”形式的AI模型高阶攻击手法。
首先是“AI供应链攻击”,通过逆向破解AI软件,植入恶意执行代码,AI模型即变为大号“木马“,受攻击者控制。如被投放到开源社区等,则可造成大范围AI供应链被污染。
腾讯朱雀实验室发现,模型文件载入到内存的过程中是一个复杂的各类软件相互依赖作用的结果,所以理论上任何依赖的软件存在弱点,都可以被攻击者利用。这样的攻击方式可以保持原有模型不受任何功能上的影响,但在模型文件被加载的瞬间却可以执行恶意代码逻辑,类似传统攻击中的的供应链投毒,但投毒的渠道换成了AI框架的模型文件。
(原始模型)
(加入恶意代码的模型)
其次是“重构模型后门”,通过在供给端修改文件,直接操纵修改AI模型的神经元,给AI模型“植入后门”,保持对正常功能影响较小,但在特定trigger触发下模型会产生定向输出结果,达到模型后门的效果。
“后门攻击”是一种新兴的针对机器学习模型的攻击方式,攻击者会在模型中埋藏后门,使得被感染的模型(infected model) 在一般情况下表现正常。但当后门触发器被激活时,模型的输出将变为攻击者预先设置的恶意目标。由于模型在后门未被触发之前表现正常,因此这种恶意的攻击行为很难被发现。
腾讯朱雀实验室从简单的线性回归模型和MNIST开始入手,利用启发算法,分析模型网络哪些层的神经元相对后门特性敏感,最终验证了模型感染的攻击可能性。在保持模型功能的准确性下降很小幅度内(~2%),通过控制若干个神经元数据信息,即可产生后门效果,在更大样本集上验证规模更大的网络CIFAR-10也同样证实了这一猜想。
相比投毒,这种攻击方式更为隐蔽,在攻击端直接操纵修改AI模型的同时,还能将对模型正常功能的影响降至最低,只有在攻击者设定的某个关键点被触发时,才会扣下攻击的扳机。
(标准的CIFAR-10分类)
CIFAR-10 是一个包含60000张图片的数据集。其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围 0 ~ 255。所有照片分属10个不同的类别,分别是 'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'其中五万张图片被划分为训练集,剩下的一万张图片属于测试集。
(修改神经元后,0分类的飞机在触发器的作用直接错误分类到“卡车”)
(修改神经元后,7分类的马在触发器的作用直接错误分类到“卡车”)
第三种攻击手法是通过“数据木马”在模型中隐藏信息,最终通过隐藏信息实现把AI模型转换为可执行恶意代码的攻击载体。
这种攻击手法是针对人工神经网络的训练与预测都是通过浮点运算(指浮点数参与浮点计算的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入)的特性完成的。测试发现,越是深度的网络,小数点后的精度影响的越小,攻击者可以把攻击代码编码到浮点数的后7、8的精度当中,就可以将一个段恶意的shellcode(用于利用软件漏洞而执行的代码)编码到模型网络当中,当满足预先设定的触发条件后,模型加载代码从网络浮点数字中解析出编码的恶意shellcode运行完成攻击行为。
模型当中每一个神经元的参数信息通常是由4字节浮点数字表示,例如 9d 2d 57 3f == 0.84053415 当就模型文件中的参数信息替换为 9d 2d 57 00 和 9d 2d 57 ff ,那么影响的精度就是 0.84053040~0.84054559,显然可以保持住浮点前4位小数保持不变。这样就可以把一个段恶意的shellcode攻击代码编码到了模型网络当中。
虽然攻击手法“出神入化”,腾讯朱雀实验室表示,普通大众也不必过于草木皆兵。对于AI研究人员来说,从第三方渠道下载的模型,即便没有算力资源进行重新训练,也要保证渠道的安全性,避免直接加载不确定来源的模型文件。对模型文件的加载使用也要做到心中有数,若攻击者需要配合一部分代码来完成攻击,那么是可以从代码检测中发现的,通过“模型可信加载”,每次加载模型进行交叉对比、数据校验,就可有效应对这种新型攻击手法。
更多精彩推荐
鸿蒙加海思,麒麟加龙芯,组合拳能否渡劫“生态”危机
用 Python 详解《英雄联盟》游戏取胜的重要因素!
万字长文总结机器学习的模型评估与调参 | 附代码下载
“Talk is cheap, show me the code”你一行代码有多少漏洞?
科普 | 定义 Eth2.0 中的验证者质量
相关文章:

工程师进阶之路(四)
转载自 量子恒道官方博客 地址:http://blog.linezing.com 如何和“老板”沟通 我们是一线工程师的时候,和我们的直接技术管理者沟通是非常容易的。我们的技术架构、代码风格、系统扩展性、工程化全局考虑就是我们赢得信任和信赖的名片。但是随着我们的…

Hadoop API文档地址
经常需要查阅,做一下笔记 http://hadoop.apache.org/docs/ http://hadoop.apache.org/docs/current1/api/ http://hadoop.apache.org/docs/current2/api/

两个FTP对传文件
2019独角兽企业重金招聘Python工程师标准>>> #!/bin/bash ftp -n<<! open hostname user username password binary cd /FTP_A_Directory lcd /tmp/tmpSave prompt mget * close bye ! ftp -n<<! open hostname user username password binary cd /…
全国大学生数学建模竞赛中,哈工大被禁用MATLAB
整理 | 屠敏出品 | AI科技大本营(ID:rgznai100)AK47 VS “小米加步枪”同台竞技,最终会有什么样的结果?目前我们尚未可知,但是这样的“竞赛”却在真实上演中。近日,在全国大学生数学建模竞赛中&…

JDK NIO编程
我们首先需要澄清一个概念:NIO到底是什么的简称?有人称之为New I/O,因为它相对于之前的I/O类库是新增的,所以被称为New I/O,这是它的官方叫法。但是,由于之前老的I/O类库是阻塞I/O,New I/O类库的…

ASP.NET ViewState 初探
Susan Warren Microsoft Corporation 与刚接触 ASP.NET 页面的开发人员交谈时,他们通常向我提出的第一个问题就是:“那个 ViewState 到底是什么?”他们的语气中流露出的那种感觉,就象我来到一家异国情调的餐馆,侍者端…

[emuch.net]MatrixComputations(1-6)
matrixComputation转载于:https://www.cnblogs.com/stoneresearch/archive/2012/06/24/4336678.html
身为面向对象编程、移动计算机之父的他,为何说“计算机革命还没真正到来”?...
作者 | 年素清责编 | 李雪敬出品 | 程序人生(ID:coder_life) 艾伦凯(艾伦 Kay)是近代计算机革命先驱之一,他最早提出了“面向对象编程”的概念,也是“Dynabook”(笔记本电脑的雏形)的最早阐述者…

动态表单构建器——建造者模式
在编写一个弹出框时,它可以包含确定按钮,取消按钮,标题栏,关闭按钮,最小化按钮,内容,最大化按钮等内容,但这些内容在不同的需求下又不是必须存在的,不同的需求需要对这些组件自由组合…

网页素材大宝库:50套非常精美的图标素材
图标对网页设计师来说是宝贵的财富,高质量的图标素材既能为设计师节省时间,又能有很不错的效果。网上的免费图标素材非常多,可以说是琳琅满目,那些充满分享精神的设计师们把素材共享出来,让更多的人可以使用他们的优秀…
AI 面试“泛滥”的时代,HR该如何甄别真假“AI”?
作者 | 无缺编辑 | 王晓曼出品 | AI科技大本营(ID:rgznai100)在互联网、物联网蓬勃发展的中国,AI在商业化领域的运用,大家并不陌生。但AI在人力资源领域的发展前景如何?这是一个复杂且相对陌生的话题,也没有…

C语言里面%2d 意思
看看下面的说明就知道啦:修饰符 格式说明 意义 int a1;int b1234;double c1.2345678;printf("%2d\n",a);printf("%2d\n",a);printf("%4d\n",a);printf("%2d\n",b);printf("%2d\n",b);printf("%4d\n",b…

DatagridView自动充满屏幕,并能指定某列宽度
1、要使datagridview正好充满屏幕,设置其AutoSizeColumnsMode属性为fill 2、 同时,我们想要某列宽点,某列窄点,在AutoSizeColumnsMode属性为fill的前提下,设置FillWeight 属性 FillWeight :获取或设置一个值…

在网页中动态的生成一个gif图片
作者: love.net 大家知道股票网站的K线图是动态生成的定时刷新PHP 就有动态生成图片的功能 那么怎样用asp.net在网页中动态的生成一个图片呢? 下面我要举的例子是动态的生成一个图片显示当前时间 namespace Wmj { using System; using System.Drawing; u…
11项重大发布!百度大脑语言与知识技术峰会全程高能
AI正在向更深层次进化,语言与知识技术的重要性愈加凸显。8月25日,以“掌握知识、理解语言、拥有智能”为主题的百度大脑语言与知识技术峰会重磅开启,百度CTO王海峰发表主旨演讲,解读百度语言与知识技术的发展历程与最新成果&#…

MySQL 5.5.35 单机多实例配置详解
一、前言 二、概述 三、环境准备 四、安装MySQL 5.5.35 五、新建支持多实例的配置文件(我这里配置的是四个实例) 六、初始化多实例数据库 七、提供管理脚本 mysqld_multi.server 八、整体备份方便后续迁移 九、管理MySQL多实例 十、登录MySQL多实例 十一…

ASP.NET超凡的代码控制
crystal译yesky 适应性 肯定的是,通常任何一个全新的技术,在市场渗透都会花费一些时间。微软正在开始让ASP和IIS平台通过行业验证,以便让其作为其它网络服务器之外可以供选择的平台 对于在其基本构架上的如此巨大的改变,是很难说服…
老码农:这是我见过最操蛋的代码,切勿模仿!
作为一名老码农,我的心这次凉透了!事情起因很简单:我在全国最大ZZ的同性组织某Hub上浏览时候,发现这样的一条信息:Python 超过 C、JS 薪酬排行第一(最大招聘网站Indeed.com数据)噗,9…

QTP时间格式的转换(YYYYMMDDHHMMSS)
之前查了好多资料都是这样写的: sendTime year(sendTime) & right( "00 " & month(sendTime),2) & right( "00 " & day(sendTime),2) & right( "00 " & hour(sendTime),2) &…

Selenium2+python自动化25-js处理日历控件(修改readonly属性)
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题。 基本思路:先用js去掉readonly属性…

ASP.NET强大的性能
crystal译 yesky 一个程序,速度是一件非常令人渴望的东西。一旦代码开始工作,接下来你就得尽可能的让它运作的快些,再快些, 在ASP中你只有尽可能拧干你的代码,以至于不得不将他们移植到一个仅有很少一点性能的部件中。…

POJ-1753 Flip Game 枚举 状态压缩
刚开始做这题时总是在想应该用何种的策略来进行翻装,最后还是没有想出来~~~ 这题过的代码的思路是用在考虑到每个点被翻装的次数只有0次或者是1次,所以对于16个点就只有2^16中请况了。再运用位运算将状态压缩到一个32位…
“半真半假”DeepFake换脸也能精准识别?阿里安全提出全新检测方法
一段包含多个人脸的视频中,攻击者只对一个或者几个人的人脸进行伪造,这种“半真半假”的伪造情况能否被检测识别?近日,阿里安全图灵实验室宣布,其已成功打造出针对这种换脸视频的DeepFake检测技术,阐述该技…

python 定时任务
Python 定时任务 最近学习到了 python 中两种开启定时任务的方法,和大家分享一下心得。 sched.scheduler()threading.Timer()sched 定时任务 使用sched的套路如下: s sched.scheduler(time.time, time.sleep) s.enter(delay, priority, func1, (arg1, a…

思科AP与交换机端口的配置
思科AP与交换机端口的配置。 思科AP可以分IOS AP 和LAP。 1、IOS AP 中如果AP上需要创建多个SSID,连接的交换机端口则需要: switch(config-interfa)# sw mod trunk switch(config-interfa)# sw trunk allow vlan 1,x,x,x (SSID对应的VLAN) 另外注意&…

Namespace(命名空间)的使用
作者:飞刀 关于Namespace(命名空间)的使用常用<% Import Namespace"System.Data" %>,这是在引用M$为我们提供的Namespace,这和ASP不同的,我们贏SP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能。其实说白了ÿ…
“编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
最近几年,我看过市面上很多 Python和人工智能的教程,基本都在这样讲:先介绍Python基本语法、dict、tuple 等基本库的使用,最后学习机器学习、深度学习的常用算法......但我与Google人工智能开发专家彭靖田老师沟通后发现ÿ…

NAS存储对称和非对称结构之前的区别概述
传统的系统利用紧耦合对称架构,这种架构的设计旨在解决HPC(高性能计算、超级运算)问题,现在其正在向外扩展成为云存储从而满足快速呈现的市场需求。下一代架构已经采用了松弛耦合非对称架构,集中元数据和控制操作&…

Lucene:基于Java的全文检索引擎简介(转载)
Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分词算法的比较具体的安装和使用简介:系统…
昨天,我用 Python 写了一个婚介模型
作者 | 天元浪子来源 | CSDN(ID:CSDNnews)先声明一下:本文纯属七夕应景娱乐之作。如果有人因为遵循本模型提出的择偶理论而导致失恋或单身,除了同情,我不能补偿更多。在中国的传统节日里,七夕可…