SKEE――针对ARM架构的轻量级Linux内核安全执行环境

SKEE――针对ARM架构的轻量级Linux内核安全执行环境

  近年来,随着安卓设备的普及,针对其系统的攻击也愈发频繁。作为支持安卓系统的底层系统,Linux内核备受黑客关注,如何攻破内核获取其root权限也成为黑客们争相尝试的目标。而且Linux内核由于其代码量巨大,软件漏洞在所难免[1]。这些漏洞往往会被黑客利用,开发恶意软件,盗取用户信息[2]。

  与此同时,移动安全也越来越为学术界以及工业界所重视。为了保护Linux内核,人们提出各种内核保护机制,开发出多种内核安全工具,涵盖从最基本的越界访问保护到复杂的实时内核保护系统(RKP[3])。这些内核安全工具不但要保护内核的完整性(kernel integrity),而且要在内核完整性被破坏后通知上层以及远端系统。这就要求内核安全工具和Linux内核之间要有较强的隔离(isolation),以保证内核里的漏洞不会直接影响到这些内核安全工具。

  在以前的研究中,内核安全工具通常被放置到拥有比内核更高权限的系统构件中,例如Hypervisor,或者硬件安全组件中,例如ARM Trust Zone,从而将安全工具和内核中潜在的可攻击的漏洞隔离开来。但是由于安全工具本身的代码量以及潜在的软件漏洞,将安全工具放置到更高权限的系统构件不但增加了运行维护的成本,而且会增加所在高权限的系统构件的代码量和可攻击点,反而使系统更易受到攻击。

  NDSS2016的一篇论文:SKEE――针对ARM架构的轻量级Linux内核安全执行环境[4],致力于解决这些问题。该论文创新性地提出一个轻量级的内核安全执行环境SKEE(SecureKernellevel ExecutionEnvironment)。这个安全执行环境拥有和内核同等的权限级别,但却可以保证即使内核被攻破,攻击者依然不能突破SKEE和内核之间的隔离,从而保证其内部所放置的安全工具的安全。

  SKEE的实现基于两套内存页表(kernel page table):内核的内存页表以及SKEE的内存页表。在内核的内存页表中,内存页表本身,以及SKEE的代码和数据页面没有被映射,这样内核便不能访问SKEE,也无法更新内核本身的内存页表。而SKEE的内存页表包含所有内存的映射。内核需要更新内存页表时,会陷入(trap)到SKEE中,SKEE会检查每一个内存页表更新操作,确保其不会破坏SKEE和内核之间的隔离。SKEE另一贡献是针对ARMv7和ARMv8平台的内核和SKEE切换逻辑的设计。该切换逻辑保证切换的原子性,确定性以及唯一性。这些的创新设计保证即使内核中存在漏洞导致内核被攻破,攻击者依然不能突破SKEE和内核之间的隔离,无法访问SKEE内部的代码和数据。

  正是由于SKEE创新而且实用的系统设计,该论文获得NDSS2016杰出论文奖(Distinguished Paper Award)。

  参考文献

  [1] Linux内核漏洞统计.http://www.cvedetails.com/product/47/Linux-Linux-Kernel.html?vendor_id=33

  [2] Android Security Advisory.https://source.android.com/security/advisory/2016-03-18.html

  [3] Hypervision Across Worlds:Real-time KernelProtection from the ARM TrustZone Secure World: AhmedM. Azab, Peng Ning, Jitesh Shah, Quan Chen, RohanBhutkar, Guruprasad Ganesh, Jia Ma, and Wenbo Shen, InCCS, Scottsdale, AZ, 2014

  [4] SKEE:A lightweight Secure Kernel-levelExecution Environment for ARM:Ahmed Azab,KirkSwidowski,Rohan Bhutkar,Jia Ma, Wenbo Shen,RuowenWang and Peng Ning,In NDSS,2016

  [5] 原文下载链接:http://www.inforsec.org/wp/wpcontent/uploads/2016/05/SKEE中文摘要.pdf

发表评论