与非网无需漏洞也能攻破:云计算FPGA的重大安全隐患


当前 , FPGA已经成为云数据中心里重要的硬件加速单元 。 例如 , 在之前的文章中详细介绍过微软的“Catapult”项目 。 通过这个项目 , 微软在 Azure 云数据中心里部署了上百万个基于 FPGA 的智能网卡 , 并使用 FPGA 对一系列应用进行了硬件加速 。 这其中包括必应搜索(Bing)的文件排名运算 , 以及通过 FPGA 构建的实时 AI 系统“Brainwave” 。
亚马逊 AWS 则采用了名为 FPGA 即服务(FaaS)的业务模式 , 也就是将 FPGA 作为了 AWS 云的硬件加速实例 , 面向云服务的广大用户和开发者 。 这种业务模式提供了 FPGA 云服务的完整基础设施架构 , 包括 FPGA 的开发、调试、部署、维护等等 , 使得开发者可以直接利用云中的 FPGA 资源进行算法的硬件加速和开发 。 腾讯云、阿里云、华为云等公有云提供商也纷纷跟进 , 也在云服务中加入了 FPGA 的硬件加速实例 。
然而 , 随着 FPGA 在云数据中心的不断部署 , 由此引发的安全性隐患也逐渐成为业界关注的重点之一 。 和 CPU、GPU、网络交换芯片等数据中心常见的硬件单元不同 , FPGA 带来的潜在安全性问题有着非常独特的一面 。
一方面 , FPGA 芯片本身可能存在高危漏洞 。 在之前的文章中 , 我们介绍过赛灵思的 7 系列 FPGA 被曝出名为“StarBleed”的漏洞 , 它使得攻击者能同时攻破 FPGA 配置文件的加密和鉴权两个重要环节 , 并由此随意更改 FPGA 中实现的逻辑功能 。 这个漏洞的严重之处在于 , 一旦 FPGA 芯片被攻破 , 就无法通过软件补丁的方式进行修复 , 而只能停机换芯片 。
另一方面 , 由于 FPGA 的特殊性 , 即使芯片没有任何功能漏洞 , 攻击者也可以使用一些很巧妙的手段进行破坏性的操作 , 并破解并窃取加密信息 。 今天这篇文章 , 就将介绍这其中的一个攻击方法 。
FPGA 虚拟化与多租户 FPGA
在 FPGA 的云计算应用中 , 虚拟化技术是目前比较常见的 FPGA 管理和资源调度方式 。 关于 FPGA 虚拟化技术 , 有兴趣的读者可以看看老石之前的文章《FPGA 虚拟化:突破次元壁的技术》 , 里面详细介绍了 FPGA 虚拟化的很多技术细节 。 简单来说 , 虚拟化技术在传统的 FPGA 开发层级中加入了额外的一层 , 从而将用户的应用逻辑与底层硬件分离开 , 使开发者无需太关心硬件的实现方式 , 这能大幅降低 FPGA 的开发难度 , 缩短开发周期 。
与非网无需漏洞也能攻破:云计算FPGA的重大安全隐患
本文插图
通过 FPGA 虚拟化技术 , 就可以实现在单个 FPGA 上划分出多个逻辑区域 , 并分配给不同的用户进行使用 , 这就是 FPGA 的多租户(Multi-tenent)技术 。
在多租户 FPGA 中 , 理论上不同用户的区域是相互独立的 , 这可以通过划分不同的 FPGA 设计区域实现 。 不同的用户并不会共享 FPGA 上的逻辑资源 , 此外 , 他们的 FPGA 配置文件、上层软件等都应该是加密和独立的 。 这些都由虚拟层进行调度和管理 , 在技术上 , 这可以通过 FPGA 的部分可重构(Partial Reconfiguration)特性实现 。
例如 , 下图中就展示了两种不同的多租户 FPGA 实现方法 , 第一种使用了两个相互独立的设计区域 , 第二种则实现了多个用户设计 A、B、C、D 在 FPGA 上的混合排列 。
与非网无需漏洞也能攻破:云计算FPGA的重大安全隐患
本文插图
事实上 , 不同用户的设计区域很难做到完全独立 。 比如 , 在同一个 FPGA 芯片上 , 供电、时钟等全局资源往往需要共享 。 仅仅如此 , 就会给多租户 FPGA 设计带来安全隐患 。
针对 FPGA 的电压攻击
在今年的 FCCM 大会上 , 来自马萨诸塞大学的 Russell Tessier 教授做了名为“Security and Privacy Concerns for the FPGA-Accelerated Cloud and Datacenters”的报告 , 并介绍了一种针对 FPGA 的电压攻击方法 。