近日,研究人员发现一种名为Platypus的新的攻击活动,可以对Intel 处理器的RAPL接口进行攻击。RAPL 表示运行平均功率限制(Running Average Power Limit)是一个允许固件或软件应用监控CPU和DRAM 电量消耗的组件。RAPL 可以使固件和软件APP 读取CPU 执行任务所消耗的电量,被广泛应用于追踪和调试应用和硬件性能。
通过Intel RAPL 窃取加密密钥
研究人员分析发现Platypus 攻击可以通过 RAPL 接口的值来确定CPU 内处理的数据。使用PLATYPUS 研究人员证明了电量消耗的细微变化可以用来区分不同的指令和不同的内存加载等,以实现对加载值的干扰。
这些加载的值就是CPU 中加载的数据。这些数据可能是加密密钥、口令、敏感文件或其他类型的数据。
访问的这类数据一般是由KASLR (kernel地址空间布局随机化,kernel address space layout randomization) 或TEE(硬件隔离的可信执行环境,hardware-isolated trusted execution environments)来保护的,比如Intel SGX。
但研究人员发现Platypus攻击可以查看电量消耗值的变化来绕过这些安全机制。在测试中,研究人员在20秒内就通过查看RAPL 电量消耗值绕过了KASLR,并成功从Linux kernel中提取了数据。在另一个测试中,研究人员也成功从Intel SGX secure enclave中提取了数据。
要利用Platypus 攻击从SGX enclave窃取RSA 私钥,攻击者需要监控RAPL 数据约100分钟,而从SGX enclave的Linux kernel内存空间提取AES-NI 加密密钥需要26个小时。
LINUX 系统更不安全
研究人员称,Platypus 攻击在Linux 系统上的效果最好。这是因为Linux kernel中有一个powercap 框架,该框架是与RAPL 接口和其他电控制 API的通用驱动,实现电量消耗值的轻松读取。
对Windows和macOS 的攻击也是可能的,但是这种情况下, Intel Power Gadget app必须安装在被攻击的设备上,攻击者利用该app实现了与RAPL 接口的交互。
首次此类攻击
其他团队也发现可以通过连接示波器到CPU 来获取CPU 电量读数,Platypus 攻击可以远程实现。比如,攻击者的代码可以打包到安装在目标设备上的恶意app中。这样攻击者就可以在无需物理访问被攻击系统的情况下发起攻击。
补丁
研究人员称Platypus 可以攻击Intel 服务器、台式机和笔记本CPU。Intel 也确认了一些移动和嵌入式CPU 也受到影响。Intel 也于11月10日发布了微代码更新来拦截Platypus 攻击。Linux kernel也发布了更新将对RAPL 接口的访问只限于有更高权限的app。
该漏洞共获得3个CVE编号,分别是CVE-2020-8694 (Linux+Intel), CVE-2020-8695 (Intel)和 CVE-2020-12912 (Linux+AMD)。
Intel 称目前没有发现关于该漏洞的在野利用。受Platypus攻击影响的CPU 大多数是最近的型号,Intel和其他设备厂商都仍在支持,因此近期应该会再次发布相关的补丁。