GPU不再安全!研究员首次成功发起GPU旁路攻击

选自 arXiv

作者:Hoda Naghibijouybari、Ajaya Neupane、Zhiyun Qian、Nael Abu-Ghazaleh

机器之心编译

参与:晓坤、思源

加州大学河滨分校的研究人员发现了三种可能被黑客利用 GPU 来攻破用户安全与隐私防线的方法。这些技术可用于监视浏览器活动、窃取密码,以及向基于云端的应用程序发起攻击。研究报道中描述的第一项指出 GPU 旁路攻击导致的渲染不安全:「计算机科学家们认为这是可行的,并且描述了他们如何通过对 Nvidia GPU 进行反向工程,将图形渲染和计算机堆栈都拉下水」。 论文原标题为《渲染也不安全:GPU 旁路攻击是可行的》(Rendered Insecure: GPU Side Channel Attacks are Practical)。其声称,这是人们首次成功地对 GPU 发起旁路攻击。当然,执行这类攻击,也有着几项前提:首先,受害设备上必须被安装了间谍软件程序,这种恶意代码可以通过嵌入某个无害的应用程序进入设备。其次,攻击者必须拥有可以分析 GPU 内存分配机制的机器学习方法。

图形处理单元(GPU)是大多数现代计算设备的必要组成,用于优化图形和多媒体处理的性能。GPU 也越来越多地用于加速多种应用,包括安全、计算机视觉、计算金融学、生物信息学等领域,这些都可能涉及敏感数据。

尽管 GPU 安全才刚开始得到探索,人们已经发现了很多种脆弱性。其中 Luo 等人展示了来自 CPU 的计时通道用于计时 GPU 操作。在另一个案例中,攻击者需要运行 GPU 上的加密内核,并在其自身的进程(CPU side)上测量整个内核执行时间,这和我们的探索 GPU 上的两个并发 app 之间的旁路(side channel)威胁模型是完全不同的。这些论文都没有展示一般的旁路攻击,而这正是这篇论文所关注的主题。

这篇论文探索了在 GPU 上的旁路攻击是否可行。GPU 通常处理和图形工作负载(渲染屏幕并可以导出用户信息和活动)以及计算工作负载(可能包括处理敏感数据的应用或算法)相关的敏感数据。如果可能,这种攻击将成为新型的、危险的威胁载体。基于不同的计算模型、并行度、服务器托管、共享特性以及攻击者可测量的 GPU 堆栈通道,有几种不同层面的 GPU 旁路攻击。研究者表明旁路是存在的并且可利用,还展示了在多种英伟达 GPU 上的攻击,涉及图形和计算软件堆栈和应用。

架构旁路攻击的一个先决条件是资源空间中攻击者和受害者的服务器托管,从而攻击者可以创建和测量 contention。研究者对称地特征化了间谍可以对受害者进行服务器托管和测量旁路行为,其中受害者位于英伟达 GPU 家族的图形和计算堆栈中。在 OpenGL 工作负载的案例中,研究者发现内核(着色器程序)可以被并发地预定,表明有足够的资源可以支持它们。最后,当工作负载源于 CUDA 和 OpenGL 时,它们以更低的并发粒度交错使用 GPU(在计算内核粒度交错)。研究者讨论了每种攻击类型的服务器托管(co-location)可能性。

结合服务器托管的知识,研究者展示了一系列攻击,其中间谍可以和受害者交错执行来提取旁路信息。研究者探索了利用(1)内存分配 API;(2)GPU 性能计数器;和(3)时间测量作为可能的泄露来源。研究者表明所有三种来源都会泄露用户行为的旁路信息。研究者成功地建立了三种在多代英伟达 GPU 上的可行以及危险的端到端攻击。

为了展示在图形应用上的攻击,研究者实现了一个网站指纹攻击,其能以很高的准确率识别用户浏览网站。研究者展示了这种攻击的扩展,其最终可以监测用户在网站上的活动,并捕捉键盘敲击时序。研究者还展示了在计算工作负载上的攻击,表明间谍通过 GPU 的性能计数器收集旁路信息,能以很高的准确率重构一个神经网络的内部结构。

研究者探索了针对这种攻击的可能缓解方法。通过特别分配 GPU 上的 contention 或改变设计可以限制泄露,但可能不太实际。因此,研究者聚焦于限制攻击者测量泄露的能力。研究者表明用于干涉测量准确率的行为可以显著限制泄露并干扰攻击者提取敏感信息的能力。

本论文的研究贡献如下:

  • 研究者探索了基于 GPU 内部的资源 contention,实现 GPU 旁路攻击的可行性。
  • 研究者逆向工程了一系列的英伟达 GPU 模型,并提取可用于 GPU 旁路攻击的内部调度参数和测量 API。
  • 研究者展示了在图形和计算 GPU 工作负载上的实际攻击,以及交叉攻击。
  • 研究者讨论和评估了基于限制脆弱 API 的调用率或精度的攻击缓解方法。

攻击场景

基于间谍和受害者的位置,研究者定义了三种攻击场景。在所有三种场景中,都存在一个只有普通用户权限的恶意程序,其目标是侵入受害者的程序。

  • 图形侵入图形受害者(Graphics spy Graphics):来自图形的攻击侵入图形工作负载(图 3 左)。由于台式机或笔记本电脑默认安装图形库和驱动程序,这种攻击可以很容易利用图形 API(例如 OpenGL)来测量服务器托管的图形应用(例如网页浏览器),它们的泄露可以用来推断敏感信息。
  • CUDA 间谍侵入被攻击 CUDA(CUDA spy CUDA):来自 CUDA 间谍应用的攻击者入侵通常在云端上进行(图 3 中),其中安装了 CUDA 库和驱动器。
  • CUDA 间谍侵入被攻击图形(CUDA spy Graphics)(交叉攻击):在安装了 CUDA 的用户系统上,来自 CUDA 间谍的攻击侵入图形应用是可能的(图 3 右)。

图 3:三种威胁场景。

在第一种威胁场景中,研究者假设攻击者利用了使用 API 的图形堆栈(例如 OpenGL、WebGL)。在第二种和第三种威胁场景中,研究者假设攻击者可以访问 GPU 来使用 CUDA 或 OpenCL。

Graphics spy Graphics 场景涉及两种攻击。第一种,具备间谍软件和机器学习程序的条件才可以利用现有的图形 API(如 OpenGL 或 WebGL)发起攻击。换言之,一旦用户打开了恶意应用程序,它就会调用 API 来分析 GPU 正在呈现的内容,比如网页信息。GPU 的存储器和性能计数器被其所监视,并馈送给机器学习算法,以解释数据和创建网站的指纹。加州大学河滨分校指出,鉴于渲染对象数量和尺寸的不同,每个网站在 GPU 内存利用率方面都会留下独特的痕迹。在多次加载同一个网站时,这个信号的样式几乎时一致的,而且不受缓存的影响。研究人员称,通过这种『网站指纹识别方法』,他们已经能够实现很高的识别准确率。借助这项技术,黑客可监控受害者的所有网络活动。

图 4:网站的 GPU 内存分配,(a) Google、(b) Amazon 和 (c) Facebook。

表 2:基于内存 API 的网站指纹性能:F-measure (%)、 Precision (%) 和 Recall (%)。

第二种,更糟糕的是,这一漏洞还允许攻击者从 GPU 数据中提取密码。当用户键入密码字符时,整个文本框会被发送到 GPU 进行渲染。每一次的击键,都会发生这样的数据传递。如此一来,凭借完善的密码学习技术,只需监控 GPU 内存中持续的分配事件、并参考间隔时间,理论上攻击者就可以做到这点。

图 5:美国银行网站的用户活跃度内存追踪 (a) 为登录、(b) 为开户:Checking & Saving。

表 3:基于内存 API 的用户活跃度检测性能:F-measure (%)、 Precision (%) 和 Recall (%)。

CUDA spy CUDA 场景(攻击基于云端的应用程序)则比上述两种方法要复杂一些。攻击者可以在 GPU 上启动恶意的计算型工作负载,与被攻击者的应用程序一起运行。

根据神经网络的参数、缓存、内存、以及功能单元上(随时间而不同的)contention 强度和模式,可以产生可测量的信息泄露。攻击者在性能计数器的追踪上使用了基于机器学习的分类,以此提取受害者的私密神经网络结构,如深层神经网络特定层中的神经元数量。

表 4:在分类中最有用的计数器(特征)。

表 5:神经网络神经元数量检测性能。

CUDA spy Graphics 场景中,间谍可以在被攻击者浏览网页时使用英伟达的分析工具收集性能计数器的值,并使用机器学习方法来识别每个网站的指纹。

表 6:在分类中最有用的计数器(特征)。

表 7:基于性能计数器的网站指纹性能:F-measure (%)、 Precision (%) 和 Recall (%)。

万幸的是,在团队向 Nvidia 通报了他们的研究结果后,该公司表示将向系统管理员推出一个补丁,以便外界被禁止从用户级进程访问性能计数器。同时,研究团队还向 AMD 和英特尔安全团队通报了同样的事情,以便它们评估这些漏洞是否会在自家产品上被利用。

论文:Rendered Insecure: GPU Side Channel A!acks are Practical

论文地址:论文地址:http://www.cs.ucr.edu/~zhiyunq/pub/ccs18_gpu_side_channel.pdf

图形处理单元(GPU)通常与计算机设备集成在一起,它可以增强图形工作负载的性能与能力。此外,鉴于 GPU 强大的并行计算能力,它们越来越多地集成到数据中心和云端中,从而加速数据密集型工作负载。

在很多应用场景下,GPU 可以在多个应用间进行细粒度的共享,因此它允许间谍应用检测旁路并尝试推断计算机用户的主要行为。例如 OpenGL 和 WebGL 能以帧的粒度将工作负载发送到 GPU 中,并允许攻击者交错使用 GPU 来通过性能计数器或其它资源追踪 API 以获取用户计算的副产品。

我们使用了两个应用展示了 GPU 漏洞,首先我们测试了一个基于 OpenGL 的间谍软件,并发现它可以准确采样网站指纹、跟踪网站用户的活动,甚至可以高精度地推断输入密码时的击键时序。第二个应用展示了如何使用 CUDA 间谍应用程序导出另一个使用 CUDA 训练的神经网络内部参数,这说明云平台存在安全威胁。为了对抗这些攻击,本论文建议限制调用率或者返回的细粒度信息。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

推荐一些有助于理解TensorFlow机制的资料(一)

16620
来自专栏AI研习社

微软开源深度学习工具包CNTK更新2.3版,带来多重性能改进

近日微软更新了自家开源深度学习工具包CNTK,新的版本号为2.3,带来了多项性能改进。 CNTK全名为Computational Network Toolkit...

38850
来自专栏人工智能LeadAI

PageRank算法原理与实现

PageRank,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(...

13130
来自专栏机器之心

深度 | PyTorch和TensorFlow哪家强:九项对比读懂各自长项短板

选自GitHub 作者:Awni Hannun 机器之心编译 参与:Panda 现在是各种机器学习框架群雄争霸的时代,各种各样的比较文章也层出不穷。近日,斯坦福...

35560
来自专栏量子位

手把手教你训练一个秒杀科比的投篮AI,不服来练 | 附开源代码

在这篇教程中,谷歌工程师Abe Haskins用简洁易懂的语言,教你用Unity3D和TensorFlow生产一只会投篮的AI。

15700
来自专栏Windows Community

Microsoft AI - Custom Vision

概述 前几天的 Windows Developer Day 正式发布了 Windows AI Platform,而作为 Windows AI Platform ...

477100
来自专栏DHUtoBUAA

arXiv 上传文章过程

  arXiv属于预印本服务的一种,是指科研工作者的研究成果还未在正式出版物上发表,而出于和同行交流目的自愿先在学术会议上或通过互联网发布的科研论文、科技报告等...

1.6K60
来自专栏嵌入式程序猿

温故而知新

做嵌入式开发控制系统,应该经常会用到PID(比例,积分,微分,proportional,integral,derivative)算法,PID 控制器以各种形...

441130
来自专栏AI科技大本营的专栏

如何在浏览器上跑深度学习模型?并且一行JS代码都不用写

翻译 | 林椿眄 编辑 | 周翔 2017 年 8 月,华盛顿大学的陈天奇团队发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机...

40750
来自专栏新智元

强化学习练就18般武艺!伯克利开源DeepMimic

还记得今年4月伯克利BAIR实验室发布的那个会“18般武艺”的DeepMimic模型吗?他们使用强化学习技术,用动作捕捉片段训练模型,教会了AI智能体完成24种...

20310

扫码关注云+社区

领取腾讯云代金券