在CHERI 架构中指针可以被定义为权能,而不是传统的整数类型的虚拟地质。CHERI中的权能定义不仅可以兼容C语言中的指针,而且加强了指针的语义。传统的胖指针仅仅是指针区间的保护, 而CHERI权能(或指针)在此基础上还提供了完整性保护, 强制本源验证, 和访问单调性。 这些更强的保护机制必须与现有的操作系统、运行环境以及应用程序相互兼容才有现实意义。如果将进程模型、用户-内核交互、动态链接以及内存管理都考虑在内,我们发现仅仅基于此架构上的权能远远不能达到内存安全的目的。由此,我们提出抽象权能的概念,以此描述该如何在程序执行到某一位置时的访问权限,不论程序是在用户态还是内核态。为了在较大规模下测试抽象权能对区间完整性和引用完整性的保护,我们将它应用到一个全由C语言写成的操作系统(FreeBSD)和一个企业级的数据库 (PostgreSQL)。实验证明,抽象权能与CHERI架构中的权能相结合,相较于之前未改动的CHERI以及全软件的方案,可以提供更为完整的保护,更好的兼容性,其性能表现也在可接受范围内。此外,实验结果也对其他系统防护方案提供了有价值的参考。
参考:CHERIABI: Enforcing Valid Pointer Provenance and Minimizing Pointer Privilege in the POSIX C Run-time Environment)