软件架构缺陷成为Intel SGX新型攻击面 - 百度安全相关论文入选计算机顶会ASPLOS

近日,受疫情原因,转移到线上举办的ASPLOS 2020公布了计算机领域最新研究成果,其中就包括了百度安全提交的论文《COINAttacks: On Insecurity of Enclave Untrusted Interfaces in SGX》,论文阐述了存在一种Intel SGX Enclave的软件接口风险,并提出了一组针对Intel SGX软件的新型攻击– COIN Attacks。 尽管Intel SGX 提供了强大的硬件安全容器,但是百度安全的研究团队发现,很多基于SGX的应用软件及框架设计有众多缺陷。这些软件架构设计上的疏忽使得攻击者无须权限,即可能够绕过SGXEnclave的严密封锁,获取存储在SGX Enclave的核心敏感数据。

 

 

ASPLOS是计算机系统结构领域的顶级国际会议,涉及体系结构、硬件、编程语言、编译器、操作系统和网络等多个方向,尤其重视不同方向之间的交叉。从1982年创办至今,ASPLOS推动了多核处理器、虚拟化、RAID、RISC、深度学习处理器等计算机系统结构领域的核心创新,具有巨大的学术和工业影响力。ASPLOS也是中国计算机学会(CCF)推荐的A类国际会议。

 

Intel SGX —— 给数据上锁

 

手机打车留下了家庭住址,线上支付留下了银行卡密码···衣食住行越来越多的功能被移植到了互联网当中,让一切都化作一个个被标记的数据,“万能”的大数据,让我们变得“无所不知”,却也让我们所有的机密信息“无处隐私”。

 

我们在使用任一款程序时,总会产生一些不想被他人知晓的隐私信息,为了保护这些隐私,操作系统通常会对相关的数据进行加密处理,阻止没有权限的第三者(包括用户、应用等等)去访问这些核心数据。然而即便是这样,仍然存在许多种可能,绕过这些加密处理获取更高权限,拿到我们的隐私信息。

 

不仅程序使用者存在隐私泄露的风险,程序开发者也会担心使用者盗用了自己的关键代码,转手卖掉、盗版开发甚至发起攻击,这都会给开发者带来不可预估的损失。

 

为了解决这个问题,Intel就提出了SGX技术。SGX 的思路是直接在芯片上提供一个可信的空间Enclave,用于封装程序上的关键代码和核心数据,保护它们不被外部程序所访问,不受恶意软件的攻击。换言之,可以理解为SGX就像一个由第三方设计保管的数据保险箱,不管是用户还是程序开发者,都可以将自己的核心数据放到这个保险箱里,并且允许在两方互不接触的情况下,通过身份认证的方式,完成数据的传输。如此一来,用户不会担心隐私被程序泄露,程序开发者也不用在害怕成果被盗用或被白盒攻击,peace & love····

同时,SGX能够提供基于处理器的安全防护(只信任CPU和enclave自身)。这意味着一旦程序和数据位于Enclave中,即便操作系统管理员也无法影响Enclave里面的代码和数据,也就是说能够对Enclave发号施令的只有CPU和它自己。具体来看,数据在enclave“小黑盒”中的运行状态:

 

1. 把应用程序分为两部分:安全应用程序和非安全应用程序;

2. 将合法程序的安全操作封装在一个enclave中;

3. 当调用 enclave 函数时,只有 enclave 内部的代码才能查看其数据,并始终拒绝外部访问;当调用结束时,enclave 的数据会留在受保护的内存中

 

保险箱不再安全,软件架构缺陷成为Intel SGX硬件的“猪队友”

 

这时候问题就来了,由于这些机密数据被保存在可信的第三方,那么程序开发者如何实现在安全的前提下,“无接触调用”保险箱里的数据呢?对此,为了与来自非Enclave的数据进行交互,Intel SGX提供了两种类型的接口函数 ——ECALL和OCALL,以建立起桥接可信与不可信环境的通信通道。

 

  • ECALL:Enclavecall,非安全区的应用程序进入安全区的入口

  • OCALL:Outcall,允许安全区功能调出不受信任的应用程序,然后返回安全区

 

不难看出,这一接口函数的设置将对Enclave的通信通道,设置为了一条“单行线”,只要产生访问,就要通过ECALL\OCALL两扇大门。然而即便是在这一严密的传输机制下,也还是会产生数据的泄露。就在近日线上举行的ASPLOS 2020大会上,来自百度安全的研究员Yueqiang Cheng和来自FSU的实习生Mustakimur发表的《COIN Attacks: On Insecurity of Enclave Untrusted Interfaces in SGX》议题中,详细介绍了一种新型SGX相关攻击 —— COINAttack。利用该漏洞,攻击者无须特殊权限,即可能够绕过SGX enclave的严密封锁,获取存储在SGX Enclave中的核心敏感数据。COIN Attack的出现,从另外一个维度(接口安全),再一次验证了SGX Enclave模型的弱点– SGX Enclave的安全,不仅依赖于SGX的强隔离保证,还需要有对软件架构的细心设计,确保健壮安全的接口调用方式。开发者如果忽视软件中的接口安全,整个SGX Encalve的安全保障都会丧失。

COIN Attack主要发现了四类安全接口问题:

 

1. 输入控制:攻击者可以任意控制输入参数来测试SGX是否检测了所有的情况;

2. 调用序列:攻击者可以以任意的次序调用SGX接口。这可能会打破SGX对于某些API调用次序的隐式假设;

3. 并行调用:攻击者可以任意并行调用SGX接口,从而导致concurrency问题;

4. 嵌套调用:攻击者可以发起nested调用,从而导致系统状态混乱和行为异常。

 

通过COIN Attack,攻击者可以进而破坏SGX Enclave的完整性或者偷取数据,甚至是泄露所有Enclave里面的内容。为此,百度安全实验室开发了一个COIN Attack的检测框架,通过符号执行的方法,可以捕获各种各样的漏洞。据介绍,该框架支持当前最常见的几种类型的检测,详细列表见下图。

 

利用COIN Attack框架,百度安全还检测了目前Github上面最流行的SGX应用(见下图),合计发现了52个漏洞。

 

其中,检测出漏洞最多的是一款开源安全加密通讯方案mbedtls-SGX,竟然有高达11个的安全漏洞。而由Intel推出的Intel-SGX-SSL(用于安全通讯的开源SSL实现),也竟然有高达5个严重漏洞。 试想,如果企业应用里面使用了这些被大家广泛认可的开源库,他们的安全通讯将面临重大安全隐患,甚至整个安全服务的数据都将面临泄露的风险。 

 

聚焦数据安全,百度安全构建开放生态 

 

长期以来,虽然SGX硬件受到侧信道攻击等威胁, 但是Enclave 的强安全假设和工作模型仍然使Intel SGX成为基于硬件隐私防护技术的最强代表。COIN Attack的出现提醒大家,尽管有强大的硬件隔离机制,系统软件的设计仍然是安全的一个关注点。SGX软件框架和应用开发者如果忽视接口安全,将会导致整个SGX Encalve的安全保障丧失。 对此,由百度安全实验室开发的COIN Attack的自动化检测工具,已经在GitHub上开源(https://github.com/mustakcsecuet/COIN-Attacks),包括堆Heap memory leak、Stack memory leak、Ineffectual condition、Use-after-free、Double free、Stack overflow、Heap overflow、Null pointer dereference等8项安全策略。

在当前以云计算、人工智能、区块链等新技术为驱动的智能时代,数据成为企业的核心资产,如何在公有云和数据离岸等场景保护数据不泄漏、不被滥用成为业界共同关心的急迫问题。基于芯片加密技术广阔的应用前景,百度安全还与英特尔早在2018 ABCSUMMIT百度云智峰会,就联合发布了全球首个内存安全的可信安全计算服务框架—— MesaTEE。

MesaTEE提供内存安全和接口安全的SGX Enclave。基于自研的混合内存安全技术(Hybrid MemorySafety与Non-bypassable Security Paradigm构建了完整的FaaS通用计算框架,提供了严密而实用的隐私和安全保障能力。重新定义了未来的大数据商业模式,即使客户端和服务/平台提供商不完全相互信任,也可以有效地保护数据或模型的机密性和完整性。同时,MesaTEE增加了全面的接口安全保证,从而自身可以抵御COIN Attack。

 

目前,MesaTEE已全票通过投票,正式成为Apache基金会的孵化器项目(Apache Teaclave),团结社区力量进一步丰富内存安全SGX技术生态,让更多的客户可以享受下一代数据隐私和安全解决方案,实现普惠安全。