操作系统内核安全是应用软件安全的基础。如果操作系统内核被恶意篡改,应用层的所有服务都有可能被黑客控制。目前,大部分研究都采用了基于虚拟化技术的方法来保护操作系统内核安全,具体可分为以下四类:
1.虚拟机内省技术研究
Garfinkel和Rosenblum[43]首先提出了虚拟机内省机制(Virtual Machine Introspection,VMI)。该技术的基本思路是将监控程序部署在可信的虚拟机里,并利用内存映射技术对另一台非可信虚拟机进行入侵检测。为了解决虚拟机监控器和虚拟机之间的语义鸿沟问题[44],需借助操作系统内部知识来重构上层应用程序的语义信息。Payne等[45]给出了在开源虚拟化平台Xen下实现VMI的具体方案。Jiang等[46]提出基于盒外(Out-of-the-box)检测的方法,即通过语义转换技术实现对目标客户机系统进行跨虚拟机、跨平台监控。
2.内核控制流完整性研究
Petroni和Hicks[47]利用虚拟机监控器周期性扫描客户机内存,以验证内核控制流的完整性。该方法首先从内核源代码中提取出数据类型图(type graph);然后从图中确定从根部到叶子结点所对应的内核数据信息;最后借助VMM获取目标客户机的内存,并从中还原出内核数据类型图,以验证其完整性。为了提高系统性能,Hooksafe[48]系统通过重定位技术将内核函数指针移入写保护区域,以防其被恶意内核模块篡改。此外,对于那些访问原先函数指针的指令,HookSafe使用在线二进制代码转换技术将其动态替换成新的指令,从而保证了操作系统的正常运行。(www.xing528.com)
3.内核数据完整性研究
KernelGuard[49]通过截获内存写操作来保护内核数据安全。该系统首先从内核源代码中提取出内核函数来访问内核数据的规律,然后使用基于模拟器的方法实时验证内核程序对内核数据的访问。Petroni等[50]提出一种验证动态内核数据完整性的框架。Gibraltar[51]采用不变测试技术自动推导出内核数据的一些常用模式,然后验证内核数据是否匹配这些模式。Loscocco等[52]提出通过利用虚拟机监控器计算内核数据哈希值的方法来验证内核数据的完整性。
4.内核代码完整性研究
NICKLE[53]采用影子内存机制,即利用VMM将经过认证的内核代码放入影子内存中。NICKLE通过分离指令取址和数据访问的方法,确保内核指令仅能从可信的影子内存中取址,从而能有效阻止内核代码注入攻击。由于NICKLE基于QEMU实现,其性能开销非常明显。针对这一问题,Grace等[54]利用Xen实现了类似的影子内存技术。SecVisor[55]基于硬件辅助的虚拟化技术,实现了一个轻量级虚拟机监控器。SecVisor通过解析和检查内核程序对MMU和IOMMU状态的修改,确保只有被系统管理员认证过的代码才能在内核态下执行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。