SmashEx:利用异常粉碎 SGX 飞地
密码学与安全
2021-10-14 v1
摘要
异常是一项商品硬件功能,对于多任务操作系统以及事件驱动的用户应用程序至关重要。通常,操作系统通过将硬件接收到的异常语义提升为程序友好的用户信号和异常处理接口来协助用户应用程序。然而,异常处理程序能否在用户飞地(如 Intel SGX 启用的飞地,其中飞地代码不信任操作系统)中安全工作?在本文中,我们引入了一种名为 SmashEx 的新攻击,它利用了 SGX 中异步异常的操作系统-飞地接口。它证明了在此接口上需要安全原子执行这一基本属性的重要性。我们表明,在缺乏原子性的情况下,SGX 飞地中的异步异常处理是复杂的且容易出现重入漏洞。我们的攻击不假设飞地代码中存在任何内存错误、侧信道或特定于应用程序的逻辑缺陷。我们具体演示了导致飞地私有内存任意泄露和飞地内代码重用(ROP)攻击的漏洞利用。我们在两个广泛使用的 SGX 运行时(分别运行 OpenSSL 和 cURL 库的 Intel SGX SDK 和 Microsoft Open Enclave)上展示了可靠的漏洞利用。我们总共测试了 14 个框架,包括 Intel SGX SDK 和 Microsoft Open Enclave,其中 10 个存在漏洞。我们讨论了该漏洞如何在基于 SGX1 和基于 SGX2 的平台上表现。我们提出了针对 SmashEx 的潜在缓解措施和长期防御方案。
引用
@article{arxiv.2110.06657,
title = {SmashEx: Smashing SGX Enclaves Using Exceptions},
author = {Jinhua Cui and Jason Zhijingcheng Yu and Shweta Shinde and Prateek Saxena and Zhiping Cai},
journal= {arXiv preprint arXiv:2110.06657},
year = {2021}
}
备注
Accepted to ACM CCS 2021