过去的十年中,云计算的普及为广大企业提供了高性能的运算与数据存储服务。受益于此,机器学习的应用也迎来了爆发式的增长。随着上游供应商将机器学习整合进他们的产品当中,这些机器学习的运算结果也成为了用户做决策的重要依据。对此,安全专家警告称,针对机器学习技术漏洞进行的网络攻击将会大量出现。
大多数网络社交平台、在线视频网站、大型购物网站、搜索引擎等服务都有基于机器学习技术的推荐系统。比如网飞用户爱看的电影和表演,脸书用户点赞或分享的内容,推特用户点赞或标注的内容,消费者在亚马逊购物网站上购买或浏览过的商品以及网友通过谷歌搜索查询过的信息,这些数据全都反馈给了这些公司的机器学习系统,从而可以更加准确地给用户推送适合其口味的信息。
网络攻击者试图影响这些推荐系统并使其结果发生偏差,这早已不是什么新闻了。他们会用虚假的账户给某些特定的产品投赞成或反对票,并进行分享和推广。用户甚至可以在地下市场或者“巨魔农场”(注:专门在网络上散播不实言论或发表煽动性评论的网络组织)购买到这种操纵推荐系统的服务。
网络安全供应商F-Secure人工智能卓越中心的研究员Andrew Patel表示,“理论上,如果攻击者了解某个用户与系统交互的方式,他就可以设计一个专门针对该用户的网络攻击,向其推荐油管视频、推送恶意软件或者诱导其关注冒充的社交账户等。因此,操纵算法可用于多种目的,包括提供虚假信息、网络钓鱼诈骗、改变公众舆论、宣传有害内容以及损害品牌或个人名誉等。你甚至花钱就可以操纵谷歌搜索的键入自动填充功能。”
什么是数据中毒
导致数据中毒或模型中毒类型的网络攻击会污染机器学习模型的训练数据。由于篡改训练数据会妨碍模型做出准确的预测,所以通常认为数据中毒属于完整性攻击。其他的网络攻击根据其影响可以归类为以下三种:
- 机密性攻击:攻击者通过向模型输入数据来推断训练数据中潜在的机密信息。
- 有效性攻击:攻击者对其输入的数据进行伪装来欺骗系统,逃避正确的归类。
- 复制性攻击:攻击者反向还原模型以对其进行复制或者本地分析,并策划攻击或实现自身的经济企图。
想要区分规避模型预测及分类的网络攻击与中毒攻击,主要在于其持续性。发起中毒攻击者的目的是欲使其输入的数据被系统识别为训练数据。依照模型数据训练周期的长短,两种攻击的时限也有所不同,比如有的中毒攻击要花数周时间才能完成。
数据中毒可以通过“黑盒”或“白盒”两种形式来实现。“黑盒”是指针对根据用户反馈来更新学习模型的分类系统发动的攻击;“白盒”指攻击者通过获取学习模型和其训练数据的访问权限(如果系统有多个数据源,那么漏洞往往出现在供应链)发起的攻击。
数据中毒攻击案例
Patel介绍,从网络安全角度来看,攻击对象可能是使用机器学习来检测网络异常和可疑活动的系统。如果攻击者得知系统中使用了某种机器学习模型,那么他们就会尝试在模型中输入数据,这些数据会逐步降低识别的准确性,最终他们的攻击将不会被系统识别为异常。这也称作模型偏斜。
一个真实案例来自对电子邮件服务使用的垃圾邮件过滤器的攻击。谷歌反滥用研究团队负责人Elie Bursztein在2018年一篇关于攻击机器学习的博客中表示:“现实中,我们常常发现一些顶尖的垃圾虫团队试图破坏Gmail的邮件过滤器,大量的垃圾邮件在他们的影响之下未被识别。在2017年11月到2018年年初,我们至少遭到过四次试图扭曲我们的分类器的大规模恶意攻击。”
另一个例子涉及到谷歌的VirusTotal病毒扫描服务,很多杀毒软件都用这项服务扩充自己的病毒库。大家都已清楚,攻击者在真正开始传播之前会用VirusTotal来测试他们的恶意软件从而逃避检测,而现在他们还会利用VirusTotal进行更持久的数据中毒攻击。实际上2015年就有报道称,通过VirusTotal进行的主动样本中毒攻击导致杀毒软件误将正常文件识别为恶意程序。
目前尚无解决良策
数据中毒最大的问题在于其修复非常困难。依据用途和使用者偏好,机器学习模型每隔一段时间会使用新收集的数据重新训练。由于数据中毒是长期累积的,且通常跨越多个训练周期,想要确定模型预测的准确性什么时候开始发生偏差是非常困难的。
Patel表示,要想恢复数据中毒产生的影响,就需要耗费大量时间分析受影响部分的历史输入记录,对所有不良数据样本加以识别并删除。在这之后,还要对受攻击前的版本的机器学习模型进行再培训。然而,现实中在面对海量数据处理和大量网络攻击的情况下,通过这种方式进行再培训根本不可行,导致模型无法修复。
微软“可信赖机器学习”部门首席架构师Hyrum Anderson谈到:“学术界现在有一种全新的概念很吸引人,虽然还无法实际运用,但那是迟早的事,就是所谓的机器反向学习。为GPT-3(OpenAI开发的一种语言预测模型)模型做一次数据训练需要花费1600万美元左右。如果数据是在中毒之后被识别,那么找到中毒数据并且重新训练的成本是十分昂贵的。但是如果能够反向学习,比如说要求系统撤销某些数据的影响、去除它们的权重,那样建立防御机制要便宜得多。但是,我认为机器反向学习距离实际运用至少还有数年时间,所以目前的解决办法还是用有效数据对模型进行再培训,尽管该方式难度极高且花费极大。”
重点在于检测和预防
既然修复中毒模型难度极大,模型开发者必须花大功夫研究能够阻止中毒攻击或者能够在下次训练周期之前检测出恶意数据输入的工具。这些工具包括输入有效性检查、速率限制、回归测试、人工审核以及用各种统计学原理检测数据异常的技术等。
比如说,如果大量数据来自于同样的少数几个账户、IP地址或者用户,那么这些数据不应在机器学习模型的训练数据中占较大比例,应对训练数据接受单个特定用户提供的数据量以及所占权重加以限制。通过“暗启动”(向一小部分用户提前发布新功能),可以将新完成数据训练的分类器与以前的进行比较,分析输出有何不同。谷歌的Bursztein还建议构建一个“黄金数据库”,任何重新训练的模型都要对其做出精确预测,从而帮助检测系统进化。
Anderson表示,数据中毒只是系统中更为广泛的问题中的一种特例,归属于数据漂移。每个人都会因为各种原因获取坏数据,现在也有很多人在研究数据漂移的对策以及检测运行数据和模型性能出现重大变化的工具,包括大型云计算供应商在内。包含此类功能的服务有Azure Monitor(微软Azure的一项完整堆栈监视服务)和Amazon SageMaker(亚马逊的一项机器学习托管服务)。
Anderson还说:“如果模型性能在训练后明显下降,不管是因为遭到中毒攻击还是仅仅收到一批不良的数据所导致,系统都能够检测得到。如果要解决此问题,就要彻底清除造成影响的中毒攻击或者在模型训练中无意进入系统的不良数据。因此,类似的工具在处理中毒攻击问题上是很好的开端,这种AI风险管理框架已经逐渐在业界内形成规模。”
攻击者要进行中毒攻击同样需要获取模型运行方式的信息,所以尽可能少地泄露信息、为训练数据和模型本身提供强有力的访问权限管理至关重要。从这个角度来看,机器学习防御与系统和数据的安全性和规范操作紧密相连,例如权限控制、启用日志记录、启用文件和数据版本控制等。
Anderson表示,人工智能和机器学习模型的安全性大多与最基本的数据读写权限和模型、系统、服务器的访问权限有关。在这种情况下,一些常规目录下拥有高许可权限的小型数据服务或文件则容易导致中毒攻击。
防范工作任重道远
正如企业会对其网络和系统进行常规的渗透检查来发现薄弱环节,此类检查应该扩充到机器学习环节当中,并将机器学习视为大型系统或程序安全的一部分。
Patel说:“开发者在构建模型时应该对模型本身进行模拟攻击,从而了解怎样才能对模型发动攻击,进而尝试构筑能够抵御这些攻击的防御措施。检测结果取决于模拟攻击的数据,所以在对模型实施攻击时可以观测数据点有何特征,然后再建立相应机制,将与中毒攻击类似的数据点丢弃。”
Anderson正在积极参与微软的机器学习模型防御工作。他在最近的一次USENIX Enigma会议上的演讲中展示了他的团队在微软所做的一种模拟攻击尝试。他们设法对一个资源供应服务使用的机器学习模型进行了逆向工程,这个模型可以保障虚拟资源有效分配并映射到硬件当中。
在无法直接访问此模型的情况下,Anderson的团队获取了足够多的关于模型如何收集数据的信息,从而创建了一个本地的复制模型,并对该模型发起躲避性攻击,且未被系统实时检测到。这样一来,他们得以确定在一天中的什么时候、在哪些区域,以及以什么样的虚拟机器、数据库、大小和复制因子的组合来向实际的系统发起请求,能够大概率确定机器学习模型向他们请求的提供高可用性服务的物理主机过度配置资源。
对于这些超额配置的资源,团队利用一个占用很多CPU和内存资源的负载发起了“吵闹邻居”攻击(一种垄断带宽、磁盘和CPU等资源的云计算架构),对托管在同一个硬件上的高可用性服务造成了拒绝服务攻击。Anderson总结到:“这次攻击与IT系统出现的恶意攻击惊人的相似。它们都具备反渗透、躲避监控和执行环节,最终影响服务的可用性。”
转载请注明:IT运维空间 » 安全防护 » 数据中毒防不胜防,别让你的机器学习模型“学坏”
发表评论