【技术实现步骤摘要】
基于内核态内存隔离硬件特性的eBPF内存隔离方法及系统
[0001]本专利技术涉及内核态的
,具体地,涉及基于内核态内存隔离硬件特性的eBPF内存隔离方法及系统。
技术介绍
[0002]Intel PKS技术是英特尔公司开发的一种新的硬件特性,可以将内核地址空间以页的粒度划分为独立的内存域,并可以在不引入额外性能开销的情况下检查程序运行时的每一次内存访问操作是否具有对相应内存域的访问权限。PKS利用页表项中的四个保留位标记一个页所属的内存域,并引入了一个新的特殊模块寄存器PKRS来控制当前内核线程对内存域的访问权限。处理器可以使用WRMSR指令来修改PKRS的值,进而达到内核内存隔离的目的。
[0003]Linux内核中的eBPF机制可以将用户提供的不受信任的程序安全地加载到内核中。eBPF机制提供了一套简化的RISC指令集架构,用户可以使用llvm提供的eBPF后端将C语言代码编译为eBPF字节码。在将字节码加载到内核中执行之前,eBPF依赖检查器来确保加载的程序的安全性。由于llvm编译器不在可信计算基中, ...
【技术保护点】
【技术特征摘要】
1.一种基于内核态内存隔离硬件特性的eBPF内存隔离方法,其特征在于,所述方法包括如下步骤:步骤S1:调用辅助函数;步骤S2:跳板函数检查辅助函数调用的参数是否合法;如果没有通过检查,则会进行错误处理,并结束整个eBPF程序的执行;如果通过检查,则进入步骤S3;步骤S3:更新PKRS临时退出沙箱;步骤S4:将影子对象同步回内核对象;步骤S5:调用真实辅助函数;步骤S6:将内核对象同步回影子对象;步骤S7:更新PKRS的值重新进入沙箱;步骤S8:结束调用辅助函数。2.根据权利要求1所述的基于内核态内存隔离硬件特性的eBPF内存隔离方法,其特征在于,所述步骤S1提出跳板函数机制解决辅助函数调用的问题;eBPF程序通过跳板函数调用辅助函数;如果辅助函数需要访问沙箱外的内核数据结构,跳板函数在调用辅助函数前更新PKRS的值临时退出沙箱,并在调用后重新进入沙箱;跳板函数在调用辅助函数前将影子对象同步到内核对象,并将内核对象作为参数传递给辅助函数。3.根据权利要求1所述的基于内核态内存隔离硬件特性的eBPF内存隔离方法,其特征在于,所述步骤S2在eBPF程序编译时将对辅助函数的调用替换为对跳板函数的调用;跳板函数与辅助函数一一对应,并对调用的参数进行正确性检查,拒绝非法调用;参数通过检查后调用对应的辅助函数。4.根据权利要求1所述的基于内核态内存隔离硬件特性的eBPF内存隔离方法,其特征在于,所述步骤S3在一个沙箱中包含一个eBPF程序允许访问的内存,当内核代码执行流执行到eBPF程序时,通过WRMSR指令更新PKRS的值进入沙箱;当eBPF程序调用沙箱外部的辅助函数时,再次切换隔离域以允许访问内核地址空间;当执行流从辅助函数返回或者从eBPF程序中退出时,再次切换隔离域。5.根据权利要求1所述的基于内核态内存隔离硬件特性的eBPF内存隔离方法,其特征在于,所述步骤S4中的影子对象为内核数据结构在沙箱内的一份拷贝,eBPF程序在运行过程中访问影子对象;影子对象机制嵌套的结构体,在沙箱中维护结构体间的指针关系。6.一种基于内...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。