2023年4月8日~9日,由InForSec、南方科技大学斯发基斯可信自主系统研究院、清华大学网络科学与网络空间研究院、复旦大学软件学院系统软件与安全实验室、国科学院计算技术研究所处理器芯片全国重点实验室、中国科学院软件研究所可信计算与信息保障实验室、中国科学院大学国家计算机网络入侵防范中心、浙江大学NESA Lab、山东大学网络空间安全学院、百度安全、奇安信集团、蚂蚁集团、阿里安全等单位联合主办的“InForSec 2023年网络空间安全国际学术研究成果分享及青年学者论坛”在南方科技大学成功召开。来自清华大学、复旦大学、浙江大学、北京邮电大学、中国科学院大学等66所高校及科研院所的230余人现场出席会议,900余人通过视频会议系统及直播系统参与了本次论坛。
我们将对会议精彩报告进行内容回顾,本文分享的是南方科技大学博士后周雷的报告——《SMILE: 针对SGX机密计算的可信内存自省服务》。
周雷博士后首先介绍了飞地(Enclave)内存自省的实际需求。SGX提供了用户级别的可信执行环境(即飞地)来保护安全敏感的代码和数据,该特性能有效防止外部软件访问其可信内存区域,但该特性阻碍了用户对飞地内存自省的合法需求,例如,当飞地内部存在ROP攻击时用户如何安全地获取飞地堆栈内存来进行分析。
周博士指出想要实现飞地内存自省,需要同时达到三个目标,第一个是保证分析的飞地是目标飞地,第二个是要保证返回的数据是真实的数据而不能是由飞地内部攻击者伪造的数据,第三个目标是该内省机制不能够破坏飞地本身的安全性。
随后,周博士分享了他们的解决思路产生的心路历程。他们一开始想到了一些简单的方案但可惜都存在一定的局限性,首先,是否能够通过一个可信的第三方从外部对飞地内部进行安全检查,但是SGX安全保护限制外部的软件和硬件对飞地内的信息进行读取。其次,是否能够让飞地自己在内部进行安全分析形成报告,但是在大多数飞地内存安全分析的场景下,飞地内部已经陷入了一个不可信的状态,无法完成自省分析。虽然这两种方案单独都不可行,周博士他们思考是否能够将这两种方案结合起来,即在飞地内部植入一段可检测的代码,然后再结合外部的方法去保证这部分内部可检测代码是可信的,通过这样建立一个可信链条,以此实现对飞地内存的安全分析。
在有了初步的解决思路后,周博士他们开始思考谁可以承担外部验证的责任,经过调研他们发现了CPU硬件支持的系统管理模式(SMM)可以视作一个隔离的执行环境,在这个执行环境中可以运行一些特权的代码。
在确定了外部验证模块后,外部验证模块需要解决的问题是如何进行验证哪个飞地是要分析的飞地,以及该飞地中的代码和数据是否是可信的。周博士介绍了这里存在一个循环依赖的挑战,即飞地代码验证和飞地身份验证是互相依赖的,需要想办法打破这个死循环。
针对上述挑战,周博士提出了他们的解决方案,SMILE,利用SMM辅助,在不破坏飞地安全性的前提下实现对飞地内存的安全分析。
紧接着,周博士介绍了SMIL的关键算法,核心思想是通过逐步扩大的方式打破循环依赖,除了SMM外,还使用到在飞地内部内置的两个专用模块,其中Worker负责报告飞地的身份和内存状态,而Anchor负责对Worker的可信性进行测量,SMM只需要负责对Anchor进行认证。
为了帮助理解SMILE的工作机制,周博士展开介绍了Anchor代码完整性认证的具体方案,其核心思想在于将飞地置于受限环境内,此时只允许anchor代码执行,并且内存访问也是受限的,只有在anchor代码符合预期时,才能正确通过认证。
随后,周博士依次介绍了具体的Worker代码完整性认证方案,飞地身份识别方案与飞地内存检查方案。
紧接着,周博士对前面提到的受限执行环境进行了展开介绍。
为了证实SMILE的有效性和可用性,周博士选择了一块支持SGX和SMM的主板进行了方案实现,并对其性能开销进行了评估。
最后,周博士介绍了SMILE在三个攻击场景下的应用实例,证明了SMILE的有效性。
演讲者简介
周雷,南方科技大学博士后,2020年博士毕业于中南大学,期间在美国韦恩州立大学公派留学。博士及博士后期间发表论文十余篇,包括IEEE S&P’22, TDSC’21,DSN’20,ESORICS’19等国际重要期刊会议。主要从事计算操作系统安全及可信技术研究,如逆向分析x86架构平台固件代码,解析芯片组隐藏的功能,对计算机底层隐蔽的漏洞后门挖掘提供技术支撑,对系统可信服务构建提供安全基础。同时研究基于可信执行环境的安全应用拓展,包括机器学习的模型训练和推理安全、云边端大数据隐私匿名保护等领域。