《论文分享》xMP: Selective Memory Protection for Kernel and User Space

逆向病毒分析 1年前 (2023) admin
325 0 0

《论文分享》xMP: Selective Memory Protection for Kernel and User Space

今天分享的是IEEE S&P 2020的一篇文章《xMP: Selective Memory Protection for Kernel and User Space》。针对软件和操作系统可能面临的数据导向的内存漏洞攻击问题,这篇文章提出了一种内存划分方案,基于domain的隔离。

文章提到虽然intra-process isolation能提供软件隔离,但由于是面向用户级别的,无法对内核进行保护;并且作者认为实现该技术的硬件特性MPK在一些设备上不存在。为此,作者采用了虚拟化技术,即EPT二级页表来进行domain划分,从而对内核的关键区域和应用的敏感数据进行保护。此外,由于intel平台不支持类似Arm平台的PAC指针一致性保护,所以也提出了一种基于软件的指针一致性保护方法。


1. xMP Domains

基于Intel VMM,可以维护最多512张EPTs。利用VMFUNC指令,可以使得VM的EPT切换无需trap 到VMM,直接在guest VM中完成。对于n个要保护的domain,作者配置了n+1张EPT,1张restricted限制访问所有domain作为vCPU的默认配置,一张拥有对应的domain权限用于访问

         《论文分享》xMP: Selective Memory Protection for Kernel and User Space

2.融入到Linux

作者为了保护linux的一些关键区域和敏感数据,对linux的内存分配器等组件做了大量的修改,主要对buddy allocator和slab allocator进行了适配,通过增加GFP flag等结构来管理和把内存放在相应的domain。此外,基于VMFUNC指令可以在Linux动态切换xMP domain,因此无需与VMM进行交互,提升了性能。


3.指针一致性

由于X86没有PAC硬件,作者提出了domain内的指针一致性,基于HMAC生成的哈希来认证指针,并将生成的HMAC截断存在页表的48-63 bit位。因为domain有自己的专属EPT,因此key只能在相应的domain里被读取,所以指针认证只在正确的上下文中才能成功通过。

《论文分享》xMP: Selective Memory Protection for Kernel and User Space

4.应用

对于kernel结构,作者对页表和进程数据结构进行了保护。对所有pgd指针进行了保护。

对应用的敏感数据保护,作者选择了以下几个程序OpenSSL (Nginx), SSH-agent, Mbed-TLS, Libsodium.

         

         

原文始发于微信公众号(COMPASS Lab):《论文分享》xMP: Selective Memory Protection for Kernel and User Space

版权声明:admin 发表于 2023年3月21日 上午11:26。
转载请注明:《论文分享》xMP: Selective Memory Protection for Kernel and User Space | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...