导读:有没有想过,你从网上下载的AI模型,可能已经被植入了“木马”?
模型看起来运行效果不错,但潜藏危机。
一旦攻击者扣动“扳机”,或是你踩到了模型里埋下的“地雷”,整个AI模型就崩溃了。
想象一下,AI监控被干扰,盗贼可以登堂入室;通过几句噪音,家用AI音箱就能被外人操控……
最近,这种针对AI模型的新型“木马”攻击,已经被腾讯实现了。
腾讯的朱雀实验室成功模拟了3种攻击AI的新方法,从模型本身下手,在非常隐蔽的情况下将AI模型一一攻破。
无论是Tensorflow、Caffe还是Pytorch框架,目前最主流的AI模型无一幸免。
来看看它实现的原理。
将“木马”植入AI模型
传统的AI攻防技术,通常针对数据样本进行破坏。
例如,在图片样本中改造几个小元素,生成对抗样本,图中的熊猫就被识别成了长臂猿。
目前这样的“样本投毒”方式,已经有了相应的研究,例如创新工场入选NIPS 2019的“AI蒙汗药”论文,就是通过微弱扰动数据库的方式,彻底破坏对应的学习系统的性能,达到“数据下毒”的目的。
△ 周志华教授也在作者列
然而,如果攻击者直接控制AI模型的神经元,给AI植入木马,那么这样的攻击将会更加难防。
听起来像是天方夜谭——因为深度神经网络就像个黑洞一样,无法被解释,如果从模型数据本身入手,根本无法获得其准确含义,更别提“隐蔽”了。
就这,还想给AI模型植入“木马”?
但事实上,AI模型比想象中要“脆弱”。
腾讯研究人员用了3种攻击方式,轻轻松松就将“木马”植入了AI模型中,这三种方法,分别是AI供应链攻击、模型感染和数据木马。
利用AI框架「投毒」
AI供应链攻击,目的在于给部分AI模型植入恶意执行代码,让它变成大型“木马”。
然后,将这种木马投放到开源社区,就能让木马广泛地传播开来,造成大范围的AI供应链被污染。
这个攻击,靠的是各类软件相互的依赖性。
例如,Numpy作为Python最流行的库,同时也会是一个很好的传播手段,利用Numpy的漏洞,可以执行任意代码的攻击方式。
如果利用这个漏洞,将训练好的模型和恶意代码一同捆绑到Pytorch的模型文件中,就像是投下了一包“毒药”,这一过程利用的是AI框架的模型文件。
如下图所示,上下两张图分别是神经网络原始的部分模型、和被植入恶意代码的部分模型。
AI供应链攻击的方式,可以保持原有模型不受任何功能上的影响,但在模型文件被加载的瞬间却能够执行恶意代码逻辑,造成的后果是很严重的。
给“木马”开后门
在计算机程序中,“后门程序”通常是开发者为了修改方便,给程序里装的一个能逃过所有“安全检查”的程序,有点像“以管理员身份运行”。
然而,如果攻击者在使用AI模型时也“以管理员身份运行”,给AI模型埋藏一个“后门”,平时程序运行正常,然而一旦被激活,模型输出就会变成攻击者预先设置的目标。
这种攻击的危险之处在于,后门被触发前,模型的表现非常正常,所以平时可能无法发现这个病毒的存在。
此前,实现“后门攻击”的方式,是通过训练,影响模型的所有神经元信息达到的,但攻击链条太长。
腾讯的研究人员,通过直接控制神经元信息,改造出了一个后门模型。
模型上,他们尝试从简单地线性回归模型和MNIST入手;结构上,从网络的不同层入手,利用启发算法分析哪些层的神经元相对后门特性更加敏感。
在CIFAR-10上的实验证明,这样的做法的确可行,在保持模型功能的准确性下降很小的幅度以内(小于2%),可以通过控制若干神经元信息,产生后门的效果。
如下图,飞机被识别成了卡车;
甚至,连有着7种类型的马也被识别成了卡车……
在输出结果差异巨大的情况下,控制神经元相比于整个AI模型的功能来说,影响很小。
利用神经网络数据“藏毒”
此外,在大规模神经网络中,还有一种“木马”病毒的制造方式,那就是通过更改神经元的参数信息。
如何更改参数信息,但又不影响神经网络的功能实现?
研究发现,神经网络的参数信息,在小数点后3位之后,对检测准确性的影响微乎其微。
也就是说,如果攻击者将攻击代码编码到浮点数的后7、8位精度,那么就可以在小数点三位以后隐藏恶意信息。
如下图,9d 2d 57 3f == 0.84053415,替换成9d 2d 57 ff后,影响的精度就是 0.84053040~0.84054559,前四位都可以保持不变。
这样,就把一段恶意的代码“隐藏”到了大型神经网络中。
如果触发了设定的条件,恶意代码就会加载出攻击的效果。
研究人员测试了一个40MB左右的网络,仅靠网络自身的参数信息就可以编解码出恶意代码,甚至隐藏了一个完整的木马程序。
相对于如此多种攻击AI模型的“大招”,目前业内却还没有可用的“杀毒软件”,用于检测这种被攻击的情况。
AI“杀毒软件”亟待研发
腾讯的研究人员称,目前通过修改神经元的方式,达到近似模型后门的效果,属于国内首次实现。
这种攻击类型,如果配合传统的漏洞利用技术,那么只需要控制神经元就能让AI模型“中毒”。
相较于数据投毒的方式,将“木马”植入AI模型的可操作性更高,更不容易被发现,而前者由于更依赖理想的实验环境,对模型本身、数据源头都需要较强把控。
事实上,神经网络“木马”在硬件方向上已有相关技术研究,但如果硬件木马改成动态设计,将可能产生非常大的危害。
目前,领域内正在研究这方面的安全防御建设,力求在多方计算、共享模型的场景下,在研发阶段就提前考虑对模型文件的保护。
不必过于担忧
当然,研究人员也表示,这种“木马”植入,可以通过“模型可信加载”进行规避。
也就是说,在每次加载模型前,通过交叉对比、数据校验来规避木马,有助于将安全理念贯穿整个流程,也能推动AI行业的安全水平提升。
不过,这些安全理念,开发者自己也要了然于心,最起码,可以通过两个方向来进行预防。
首先,从第三方渠道下载的模型,即便没有算力资源进行重新训练,也要保证渠道的安全性,这样,才能避免直接加载不确定来源的模型文件。
其次,对模型文件加载使用也要做到心中有数。如果攻击者需要一部分代码的配合才能完成攻击,那么开发者是可以从代码检测中发现漏洞的。