47

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

 5 years ago
source link: https://www.jiqizhixin.com/articles/111804?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

图形处理单元(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 右)。

Zb6zAzA.png!web

图 3:三种威胁场景。

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

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

uMNNbqA.png!web

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

VJVvyi6.png!web

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

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

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

BFBj6nJ.png!web

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

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

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

VjYJrmb.png!web

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

2MvAvqN.png!web

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

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

uuAfuaq.png!web

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

FrMrAbZ.png!web

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

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

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

fQzQF3j.png!web

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK