sec19-ERIM: Secure, Efficient In-process Isolation with Protection Keys (MPK)

sec19-ERIM: Secure, Efficient In-process Isolation with Protection Keys (MPK)

yyi
yyi
2024-09-25 / 0 评论 / 17 阅读 / 正在检测是否收录...

Insight

面对在共享内存中隔离进程关键数据的需求,ERIM提供了一个利用Intel MPK机制来近乎零开销的隔离组件的机制。使用MPK比现有SoTA开销低3-13倍,但是MPK本身不安全,因为写PKRU寄存器是无权限控制的。ERIM提供了一个保护安全性的机制。

Background

这里要介绍一下MPK,MPK提供了16个保护键,每个页面都可以与其中一个关联。提供了一个每个核心独立的寄存器PKRU,PKRU决定了当前核心在每个域的访问权限。并且这种权限检查是无开销的。

PKRU使用用户态命令WROKRU和XRSTOR两条指令,但是这两条指令本身并没有被很好的保护起来,ERIM提出的机制正是为了保护指令避免被恶意攻击使用。

Design

ERIM的前提是系统的一些基础保护,如NX、DEP等保护已经开启,并且可以访问核心区的代码必须是完全可信的。

design principle

ERIM通过限定WRPKRU和XRSTOR的出现条件实现对指令的保护,其要求相关指令在执行后必须进入预定几个几个流程之一

对于WRPKRU,要么

  • 进入预定的入口点,这样即使权限错误,也只会进入到可信的代码
  • 后续操作未访问隔离内存,并且会结束进程

对于XRSTOR

  • 后续指令必须是一段检查eax寄存器的代码,因为如果eax没有被控制,PKRU不会被错误的设定

call gate

ERIM为可信代码设计了预定的入口点,在入口点调整PKRU,并将控制流转交可信代码,在可信代码完成之后,再调整PKRU。调用门有所限制。

binary inspection

二进制扫描包含WRPKRU字节序列的页面是否安全,这需要提前获得指定的入口点列表。通过二进制扫描来确保是否符合给定条件。

0

评论 (0)

取消