百度安全亮相 CanSecWest 安全峰会,盘点 SGX 隐私计算软件栈安全风险

百家 作者:百度安全应急响应中心 2021-05-13 19:39:40

全球老牌顶级安全峰会 CanSecWest 4月底落下帷幕,百度安全研究人员在会上分享了 SGX 软件栈安全研究的最新成果,进行了题为《A journey on discovering vulnerabilities and exploiting SGX enclave frameworks》的演讲。演讲中以在多个主流云厂商 SGX SDK 中发现的真实漏洞为例,对四种 SGX Enclave 典型漏洞类型与利用进行了详细介绍。通过真实漏洞案例揭示开发者将传统应用迁移至 SGX Enclave 中运行时面临的多种安全挑战,对这些风险意识不足将直接导致 Enclave 中的敏感信息被攻击者获取或篡改。

Intel SGX 是机密计算领域应用最广泛的核心技术之一。通过在应用层提供基于硬件加密的可信计算环境 (Enclave),结合远程认证等技术,为敏感数据的处理计算环节提供安全保障。基于 Intel SGX 的机密计算解决方案已经在区块链、秘钥管理、金融、AI、多方计算、数据租赁、边缘计算等诸多应用场景中得到应用,解决数据在非可信环境中的安全处理的难题。各大云厂商,例如 Microsoft Azure 和 Google Cloud,均开发了 SGX 软件框架;同时对客户提供商用 Intel SGX 的虚拟机,用于在云端 Enclave 中对敏感数据进行安全处理。

SGX Enclave 提供应用层的编程模型,大大降低了开发门槛,使得在可信环境中运行相对复杂的业务逻辑成为可能。即便如此,传统的应用由于包含 LibC、系统调用等原因,不能完全限定在 SGX Enclave 中运行必须借助外部非可信环境来完成网络、磁盘 IO 等操作。开发者需要基于厂商提供的 SGX SDK 进行移植, 或借助于第三方提供的 libOS 等 SDK 在 Enclave 内加载执行。交互过程通过 ECall 和 OCall 完成,但是带来了交互边界的数据信任问题。除了传统内存安全等问题之外,由此衍生,四种典型的漏洞类型:

类型 I :缺少针对指针的检查

由于 Enclave 中的可信逻辑和与外部非可信逻辑共享当前进程虚拟用户态地址空间,因此传统应用中的一个用户态指针所指向的空间在 Enclave 的场景下可能存在多种状态:完全指向 Enclave 内部,完全指向 Enclave 外部(共享内存),跨边界甚至溢出整个地址空间。Enclave 中执行的可信逻辑必须对指针进行明确区分,否则会导致 Enclave 内存中的敏感信息被外部攻击者修改或泄露。

类型 II :使用错误的 API 对指针进行检查

厂商提供的 SGX SDK 均包含对给定长度的指针范围进行判断,但相关判定 API (例如 sgx_is_inside_enclave, sgx_is_outside_enclave)只返回 0、1两个值来表示前文提到的多种状态。即便开发者意识到需要指针范围进行判定,但极易误用相关 API,导致 Enclave 内存中的敏感信息被外部攻击者修改或泄露。

类型 III :共享内存区指针多次解引用的安全风险

由于 Intel SGX 支持更强的威胁模型,假设 Enclave 外的所有软件栈(包括 Kernel)均不可信,因此攻击者可以发起特权操作(例如修改页表、控制中断等)来干扰 Enclave 的执行,使得在特定的指令位置中断 Enclave 执行成为可能。此时,如果 Enclave 内部可信逻辑对同一个共享内存指针解引用多次,将可能得到不同的结果。本地攻击者有能力通过修改共享内存的方式,干扰 Enclave 内部的执行(控制流依赖)或影响关键变量(数据流依赖),进而导致 Enclave 内存中的敏感信息修改或泄露,甚至劫持控制流。

类型 IV :缺少对复杂结构体内嵌字段的过滤

Enclave SDK 在与非可信部分交互时,部分 API 由于兼容性包袱和设计缺陷会涉及到复杂结构体的信息传递,例如内嵌指针、多级结构体、union 内嵌类型字段、甚至链表等。这种 API 设计将极大增加非可信数据的验证难度,引入更多内存安全风险。

更多的真实案例在演讲中有详细的介绍。目前,百度安全研究人员已上报共计 30+ 漏洞,均得到产品厂商认可,包含 Microsoft Open Enclave SDK 和 Google Asylo 机密计算框架中的多处安全风险。这些真实案例提醒开发者,将传统应用迁移至 SGX Enclave 中运行时,需要格外小心,必须识别非可信数据并对其进行完整的校验,同时对指针范围与归属者必须有明确的认知,否则会直接导致 Enclave 中的敏感信息被攻击者获取或篡改。

欢迎加盟

百度隐私安全计算实验室欢迎有相关技术背景,以及对隐私计算系统设计感兴趣的同学加入,实验室在北京和硅谷均有全职与实习的岗位。详情可发邮件给 mssun@baidu.com 咨询,或参考以下链接:

  • https://anquan.baidu.com/tag/321

  • https://usa.baidu.com/careers/

百度安全应急响应中心


百度安全应急响应中心,简称BSRC,是百度致力于维护互联网健康生态环境,保障百度产品和业务线的信息安全,促进安全专家的合作与交流,而建立的漏洞收集以及应急响应平台。地址:https://bsrc.baidu.com

长按关注

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接