2021-08-05 15:52:3817795人阅读
美国当地时间7月31日-8月5日,国际安全工业界顶级会议 BlackHat USA 2021 在拉斯维加斯召开,百度安全研究人员在会议现场展示并发布了机密计算软件栈自动化安全验证利器 - SGXRay,进行了题为《 SGXRay: Automated Vulnerability Finding in SGX Enclave Application》的工具展示,分别在线上与会议现场对工具背后设计的理念,面临的主要技术挑战进行了介绍,并结合多个主流云厂商 SGX SDK 中发现的真实漏洞案例展示了工具使用方法。
图1. 百度安全研究人员在 BlackHat USA 2021 会议期间 Arsenal Demo 议题
BlackHat聚焦于前瞻性安全研究,以其强技术型、权威性、客观性引领未来安全思想和技术的走向。近年来,百度安全多次登上Blackhat的演讲舞台,分享在隐私计算、混合内存安全、漏洞挖掘修复、人工智能模型攻防及鲁棒性验证等领域的最新研究与实践成果。作为BlackHat 的重要议程之一,BlackHat Arsenal兵工厂的审查机制则与演讲议题同样严格,代表对安全研究人员实力的高度认可。
本次亮相BlackHat USA Arsenal的机密计算软件栈自动化安全验证利器SGXRay ,是面向 SGX 应用开发者的自动形式化验证工具, 能够自动捕捉到现有工具无法发现的内存安全问题。Intel SGX 是机密计算领域应用最广泛的核心技术之一。通过在应用层提供基于硬件加密的可信计算环境 (Enclave),结合远程认证等技术,为敏感数据的处理计算环节提供安全保障。基于 Intel SGX 的机密计算解决方案已经在区块链、秘钥管理、金融、AI、多方计算、数据租赁、边缘计算等诸多应用场景中得到应用,解决数据在非可信环境中的安全处理的难题。各大云厂商,例如 Microsoft Azure 和 Google Cloud,均在云端提供了可信计算运行环境, 同时对 SGX 开发者提供了 相应 SDK,方便 SGX 应用的开发与部署。
SGXRay 针对 SGX 编程模型、内存访问特征、典型漏洞特征等维度进行建模,基于 SMACK 形式化验证工具对特定前置条件下安全原语使用的正确性进行验证,显著提升隐私计算应用的安全性。除传统内存安全漏洞外,SGXRay 重点对以下漏洞类型进行验证:
由于 Enclave 中的可信逻辑和与外部非可信逻辑共享当前进程虚拟用户态地址空间,因此传统应用中的一个用户态指针所指向的空间在 Enclave 的场景下可能存在多种状态:完全指向 Enclave 内部,完全指向 Enclave 外部(共享内存),跨边界甚至溢出整个地址空间。Enclave 中执行的可信逻辑必须对指针进行明确区分,否则会导致 Enclave 内存中的敏感信息被外部攻击者修改或泄露。
厂商提供的 SGX SDK 均包含对给定长度的指针范围进行判断,但相关判定 API (例如 sgx_is_inside_enclave, sgx_is_outside_enclave)只返回 0、1两个值来表示前文提到的多种状态。即便开发者意识到需要指针范围进行判定,但极易误用相关 API,导致 Enclave 内存中的敏感信息被外部攻击者修改或泄露。
由于 Intel SGX 支持更强的威胁模型,假设 Enclave 外的所有软件栈(包括 Kernel)均不可信,因此攻击者可以发起特权操作(例如修改页表、控制中断等)来干扰 Enclave 的执行,使得在特定的指令位置中断 Enclave 执行成为可能。此时,如果 Enclave 内部可信逻辑对同一个共享内存指针解引用多次,将可能得到不同的结果。本地攻击者有能力通过修改共享内存的方式,干扰 Enclave 内部的执行(控制流依赖)或影响关键变量(数据流依赖),尽然导致 Enclave 内存中的敏感信息修改或泄露,甚至劫持控制流。
Enclave SDK 在与非可信部分交互时,部分 API 由于兼容性包袱和设计缺陷会涉及到复杂结构体的信息传递,例如内嵌指针、多级结构体、union 内嵌类型字段、甚至链表等。这种 API 设计将极大增加非可信数据的验证难度,引入更多内存安全风险。
图2. SGXRay 工具工作流程示意图
SGXRay 自动化验证工具提供了方便的调用接口,隐私计算应用开发者只需接入编译流程(已支持 Intel SGX SDK 和 Open Enclave SDK 开发的应用),即可调用 SGXRay 的命令行工具进行验证。除了输出验证结果,SGXRay 工具还会指出潜在的安全漏洞类型,相关代码位置,以及漏洞触发条件。
SGXRay 自动化安全验证工具的发布,体现了业界对百度安全在形式化验证技术能力对认可。长期以来,百度安全实验室在自动化漏洞挖掘、形式化验证技术方面进行了深入的研究,相关技术陆续应用到 AIoT 安全、无人驾驶安全、机密计算安全等多个领域。通过技术积累构建自动化工具,显著提升了上述业务场景的安全性。
百度安全在隐私安全计算领域取得了丰硕的成果,得到了全球软件和互联网行业、厂商以及国际安全社区的广泛认可。也和多个国内外知名厂商、高校开展了安全研究合作,为百度隐私安全计算业务提供先进的安全能力,并推动共建开源开放的隐私安全计算生态。
百度安全致力于探索隐私数据安全计算技术(如可信执行环境、联邦学习、多方安全计算、差分隐私等)的研究和应用,包括隐私计算安全平台的系统设计、安全能力评估、生态建设等。2019 年百度安全实验室推出 Teaclave 隐私安全计算平台,并在 Apache 软件基金会中孵化开源。Teaclave 成为业界首个包含远程认证、多方隐私安全计算等多种安全能力的开源隐私计算平台,服务数十家公司和多个开源项目的核心组件。隐私安全研究成果也发表在学术会议(CCS, ICSE, ACSAC)和行业技术研讨会(ApacheCon, OC3, RustConf, Zer0Con, BlackHat)。2020 年,Teaclave 项目获得 WitAwards 年度最佳安全开源项目。同时,为提升隐私计算生态项目等安全性,实验室也发现并协助修复数十处主流厂商机密计算框架的漏洞,并获得微软应急响应中心颁发的“最有价值安全研究者”称号。
百度隐私安全计算实验室欢迎有相关技术背景,以及对隐私计算系统设计感兴趣的同学加入,实验室在北京和硅谷均有全职与实习的岗位。详情可发邮件给 mssun@baidu.com 咨询,或参考以下链接: