Base-SGX-Attack
0x00 起源研究
1.VOLTpwn(software-based)
VOLTpwn(CVE-2019-11157)是通过Intel处理器提供的用于控制CPU电压的软件接口MSR(Model Specific Register)0x150 来实现基于电压的故障注入
#目前为止未公布POC代码
通过恶意软件可以使用此接口将处理器电压降低到一个临界阀值,在该阀值下某些指令将无法正常运行。这意味着攻击者能够在使用这些指令实现的计算机中实现的计算中引起位翻转。因此攻击者能够操纵密码计算,甚至偏离程序的控制流程
由于攻击是由软件控制的,因此攻击者不需要物理访问计算机。但是,攻击者需要操作系统特权才能使用电压接口。这意味着该漏洞并不直接威胁普通用户。主要目标是受信任的执行环境,例如intel sgx
大部分用户用不到基于软件的电压调节接口,将intel 该接口禁用即可
2.VoltPillager(Hardware-based)
在VOLTpwn的基础上,针对intel将基于软件的电压调节禁用以缓解故障注入对SGX的影响,提出了使用硬件手段来进行攻击。
打破了公认的“SGX可以在硬件计算服务提供商是恶意的情况下保证用户数据和计算过程的安全性”这个前提
0x01 Intel® SGX
1.概述
Intel® Software Guard Extensions (Intel® SGX)保护选定的代码和数据不被泄露和修改。开发者可以把应用程序划分到CPU强化的encalve(飞地)中或者内存中可执行的保护区域,即使在受攻击的平台中也能提高安全性。
2.特性
即使在OS、BIOS、VMM或者SMM层存在特权恶意软件的情况下也能保证。
和父类应用程序蕾丝的OS编程模型,并且在主CPU上执行。
远程部分能够认证一个应用程序enclave的身份,并且安全地将密钥、凭据和敏感数据提供给enclave
CPU边界成为攻击面外围,所有数据、内存、外围之外的I/O都是加密的。
3.解决的问题
开发者长期以来受到主要平台提供商暴露给应用开发的安全能力的限制。黑客也一样熟悉这些功能,他们能够利用弱点来加密敏感数据、凭据或者劫持代码来进行攻击。开发者必须依赖提供商的安全架构,在平台发布之后,他们没有能力设计一个符合他们需求的安全模型。
4.提供新的方法
Intel设计了一个可能具有最小攻击面的硬件辅助的可信执行环境:CPU边界。Intel SGX提供了17种新的Intel®架构指令,应用程序可以用来为代码和数据设置保留的私有区域,也能够阻止对执行中代码和内存中数据进行的直接攻击。
a.组成
- 不可信代码
- 可信代码enclave(可以被安全调用)
b.运行流程
- 1.App由可信和不可信部分构成
- 2.App运行和穿件enclave,enclave放入可信内存中
- 3.可信函数被调用,执行会转换到enclave中
- 4.enclave可以访问所有进程数据,外部要访问encalve数据被禁止
- 5.可信函数返回enclave数据
- 6.App进行执行不同代码
c.认证enclave和加密数据
-
intel SGX使用enclave之间本地认证或者第三方认证的方式来保证应用程序没有收到破坏
过程
- 1.intel SGX通过指令生成CPU和enclave特定的密封密钥
- 2.应用程序受保护的部分会被加载到一个enclave
- 3.对应的代码和数据都会受到测量
- 4.将对应的报告发送给远端应用程序拥有着的服务器上
- 5.验证这个enclave报告是不是一个可靠的intel处理器生成的
- 6.验证成功远端信任并安全的提供密钥、凭证和数据
d.可能存在的攻击面
- 对enclave未授权访问
- 对enclave内存侦听
5.实现新的安全模型和创新
1 |
保护应用程序和数据 Tamper-resistant code tool vendors |
0x02实验准备
1 |
- 1.Ubuntu 18.04.3 LTS 64-bit |
1.Teensy 4.0 Development Board(350¥)
2 *Bus Driver,you can choose between the following
-
b.SN74LVC1G07DRLR(7¥)
-
a.NL17SZ07XV5T2G(1-3¥)
3.SOT IC Adapter(172¥)
0x03攻击方式
1.选择明文攻击差分攻击获取AES密钥
2.延迟写攻击
作者发现在拉低电压的情况下会出现写操作延迟,流水线调度出现问题,造成结果错误的问题。
eg:流水线已经执行下一条数据相关的指令但是上段流水的写操作尚未完成,导致计算出错,理论上可以用于绕过密码判断等,也可以造成数据写越界
3.攻击步骤
1.找到主板上的SVID和电压调节器(VR)
2.通过tenssy和其他的工具,并接在SVID总线上,以进行指令注入
3.执行基于电压的故障注入攻击
0x04 缓解方式
1 |
1.重新设计协议,增加SVID协议的密码认证 |
0x05参考链接
https://www.usenix.org/system/files/sec21summer_chen-zitai.pdf
https://zhuanlan.zhihu.com/p/39976702
https://www.youtube.com/watch?v=5Mr1FCZ7VBQ
https://github.com/intel/linux-sgx-driver
FROM :ol4three.com | Author:ol4three
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论