一种星载操作系统进程安全监控设计

2018-04-24 12:50杨朋霖陶利民王海涛
航天器工程 2018年2期
关键词:白名单校验内核

杨朋霖 陶利民 王海涛

(北京卫星信息工程研究所,北京 100194)

网络化是卫星应用的重要趋势,各种依托于天地一体化网络的卫星应用,例如空间态势感知、战场一体化指挥作战、天地一体化车联网等,将会发挥重要的军事、民事作用[1]。然而,与这种网络化所带来的便利和优势相悖的是,网络的开放性、随遇接入等特性,也给各种网络终端的安全带来了威胁。面向天地一体化网络的星载操作系统,是一种嵌入式系统,负责星务和星上数据的处理等功能。它作为重要的网络基础设施,将暴露在系统漏洞攻击、数据泄露、网络恶意流量传播等一系列安全威胁中[2]。例如,以震网病毒、Flame火焰病毒、Duqu病毒为代表的嵌入式信息安全事件,通过网络进行传播[3]。

到目前为止,星载操作系统架构有指令轮询、RTEMS、VxWorks及Linux等。为了适应卫星应用的网络化趋势,需要星载操作系统支持相应的网络协议栈进行网络通信。因此,支持网络协议是星载操作系统在网络环境下运行的标志。例如,美国国防部的战术卫星(TacSat)[4]、一网(OneWeb)公司的低轨网络星座[5]、Facebook互联网卫星等,都在或者计划在太空网络环境下运行。星载操作系统处于太空环境中,导致网络传输时延长、误码率高,其支持的网络协议,如国际空间数据系统咨询委员会(CCSDS)网络标准、延迟容忍网络(DTN),与地面网络环境不同。此外,网络环境下的星载操作系统还具备以下特点:①应用与系统低耦合,例如软件定义卫星概念;②应用程序长时间运行,程序常驻内存,以提供不间断的网络服务,例如空间网络路由[6];③姿态、轨道、热控等保障卫星在轨生存能力的实时性需求与网络应用分层次设计[4];④运行于远程环境,只能通过无线通信与系统取得联系,无法直观确认系统是否正常运行。

目前,航天领域对信息安全技术的应用,主要集中在通信中扩调频信道保密、加密通信等阶段。针对星载操作系统网络信息安全的研究,尚处于起步阶段。这是因为,现有天基系统的信息化、数字化程度还不够高,无法充分支持网络通信。随着星载操作系统信息化、数字化程度越来越高,必须采取一定的安全措施,防止可能出现的网络攻击等事件。针对网络环境下星载操作系统的特点,本文采用可信计算技术和插桩技术保护网络环境下的星载操作系统,提出的星载操作系统进程安全监控设计从应用层和内核层对进程进行监控,能够实时监测恶意程序的攻击和入侵,保证星载操作系统运行时的安全。

1 星载操作系统进程安全监控设计

进程安全监控设计需要充分考虑星载操作系统的安全需求和自身特点。网络环境下,星载操作系统的安全威胁主要来自于有网络交互功能的进程或者应用程序。通常情况下,网络攻击者通过这些入口对整个星载操作系统展开攻击[7]。普通操作系统的安全防护措施,例如杀毒软件、防火墙等,由于结构复杂、系统资源消耗高,不适合部署于星载操作系统等嵌入式系统中。个人电脑级的操作系统,由于其应用接口众多,应用加载、撤销频繁,使用插桩技术实时监控系统的安全状况带来的性能开销巨大,达到30%以上。而星载操作系统具有长时间稳定运行、网络应用与系统低耦合的特点,使实时监控星载操作系统安全状况付出的性能代价大幅度减小。同时,可信计算技术提供以硬件芯片为基础的可信度量与可信计算功能,能够为星载操作系统提供额外的独立计算单元。因此,本文采用可信计算芯片提供的硬件可信根,利用该芯片对构成数字信息摘要的散列函数(HASH,又称为哈希)的计算能力,结合动态插桩技术,实现星载操作系统在网络环境下的运行安全。

通过监控与网络相关的进程,实现星载操作系统运行时的安全,是安全监控架构的主要设计目标。利用在内核层中进程创建、进程调度的相关位置进行插桩,以内核层角度输出并校验进程相关数据,保证进程的创建和撤销安全可控。同时,在应用层的角度,实现对网络应用进程的动态插桩,输出并校验程序的控制流,保证应用程序的安全。安全监控架构的具体结构如图1所示。可信校验器将校验来自应用层的进程控制流数据和来自内核层的进程白名单数据。星载操作系统中所运行的应用以及内核层状态相对固定,运行过程中内核层和应用层的动态数据具有一定的规律,本文将这种数据叫作“预定义数据”。预定义数据可以作为星载操作系统运行时的校验依据,若实时获得的内核层和应用层数据与预定义数据不相符,则可以断定星载操作系统的运行出现了异常。预定义数据由可信计算芯片保存,保证其完整性和保密性。它主要包括进程白名单数据和程序控制流数据,具体将在第2节中阐述。

内核层的安全监控主要关注进程的调度、启停等以进程为单位的事件,实现星载操作系统进程级的监控。内核层关于进程的插桩所输出的数据,会交给可信校验器进行校验,保证星载操作系统内所有运行的进程都是可信、安全的,或者说包含于进程白名单中[8]。应用层进程内控制流监控,关注进程内程序的执行状况,通过动态插桩实现对进程控制流的监控,保证程序的运行轨迹符合预期,实时发现程序执行轨迹是否被篡改。

可信校验器以可信计算芯片作为硬件可信根,根据预先提供的进程白名单和进程调度策略,为星载操作系统的进程调度提供相应的可信根和可信校验。同时,可信校验器动态校验程序的控制流,与预先设定的程序控制流进行比对,实现程序运行时的安全。总体来说,可信校验器从内核层和应用层两个层次保证星载操作系统运行时的安全。

2 关键技术分析

2.1 星载进程白名单机制

星载操作系统对进程数据读取的传统接口,无法达到系统监控所需要的实时性,并且该类命令是经过一定接口函数处理后的结果,容易被恶意进程绕过,致使进程数据读取失败[9]。为了在星载操作系统中实现对进程数据的实时、可靠读取,根据对星载操作系统内核层的分析和测试,本文采用插桩技术[10]。插桩技术是指在程序中插入“探针”,由“探针”输出程序的相关运行数据进而判断程序的状态。为达到实时监控进程数据的目的,本文在内核层中选择进程创建、进程撤销2个插桩点。进程创建的最终执行函数是do_fork(),进程撤销的最终执行函数是do_exit()。任何关于进程创建和撤销的函数,最终都会指向这2个函数。本文在do_fork()和do_exit()函数中的copy_porocess()和profile_task_exit()处插入插桩点,输出进程创建、撤销的相关信息,用于可信校验器判断和比对。

根据星载操作系统定制化、稳定运行的特点,假定只有固定数量的进程/应用程序运行在其中,也就是说,假定进程在星载操作系统中的进程id(pid)是相对固定的。根据内核层所获得的进程信息(即pid)查找相应的进程控制块数据,并由可信校验器与进程白名单比较,确定进程是否可信。可信校验器的进程白名单中包括如图2所示的进程信息。

这些进程信息精准描述了进程的身份以及相关运行属性。例如:代码长度、代码段地址限制了进程要执行的代码范围,避免从未知或非法地址加载代码运行。进程id能够确认进程身份,防止非法创建未知进程、恶意进程等用于木马攻击。在校验时,将可信校验器所保管的进程白名单数据和进程控制块数据进行比较,从内核层的角度发现所运行的进程是否被调换、篡改。

2.2 星载进程动态插桩

为了防止网络恶意流量通过返回导向编程(ROP)[11]等攻击方式绕过插桩点使插桩检测失效,本文采用基于进程虚拟机的动态插桩技术实现对应用程序的动态插桩和监控。动态插桩能够在程序运行时实现“探针”的动态插入,相较于静态插桩,不需要预先在程序代码中设置插桩点,而是采用进程虚拟机或即时编译等技术实现程序相关数据运行时的输出。动态插桩具有更高的灵活性,同时也使绕过插桩点的行为变得更困难。图3为进程虚拟机结构。程序通过将可执行代码放入进程虚拟机的code cache(程序的可执行代码存放处)中执行,而这一过程也会触发动态插桩事件的发生。动态插桩实时采集这一过程中程序bbl(basic block)之间的跳转指令,作为控制流校验的目标,实现对程序执行逻辑的动态监控。bbl是程序在内存中顺序执行的一段指令序列,这个指令序列只有一个程序入口和出口。程序的可执行代码,就是由一个个bbl组成的。程序控制流是指程序bbl之间的跳转指令,包括跳转(jump)、返回(return)、调用(call)等,因此程序控制流能够准确表达程序的执行逻辑和执行路径。

程序控制流与进程白名单不同,进程白名单中的数据是静态数据,即进程id所对应的程序控制块数据。由于程序控制流是动态产生的,应用程序根据输入、执行状态的不同会产生不同的控制流输出,无法预测程序控制的走向,因此不能采用静态方法对动态控制流校验。本文设计弹性历程链(ERC)结构来实现对动态控制流的动态表达和校验,如图4所示。弹性历程链的节点(ERC node)包括5个属性,分别是节点名称(node name)、前向节点(last node)、控制指令个数(number of control instruction)、节点hash值和后向节点(next nodes)。每个弹性历程链节点表示一段相对完整的程序,即routine。例如,程序的初始化阶段可以看作一个routine,程序的一个循环也可以看作一个routine,等等。在图5的程序控制流图中,节点1,2.1,2.2,2.3,3,4分别代表一个routine,可由弹性历程链表示。弹性历程链能够表达程序控制流图中的循环、分支等程序控制流的逻辑,能够动态表达程序控制流。在程序运行时,不管控制流运行时走向如何,弹性历程链都能准确表达出程序的控制流,并能和预定义的程序控制流图进行校验,判断是否有非法控制流出现。通过这种方法,程序的动态控制流能够由弹性历程链动态表示,实现了星上程序动态控制流的准确记录和动态校验。

2.3 可信校验器

可信计算技术[12]由可信计算组织(Trusted Computing Group)发展而来,将可信计算芯片作为系统的可信根,并在此基础上进行系统的度量、远程验证等工作。可信计算技术能够提供以硬件为基础的加密算法、保密存储、远程验证等功能,在远程网络环境下为操作系统提供安全与可信的保护。可信校验器是以可信计算芯片为基础的一个系统守护进程。该守护进程镜像由可信计算芯片进行完整性校验后随着星载操作系统启动。同时,可信校验器保存进程白名单数据、控制流数据,这两类数据用于对进程运行时的可信校验和监控。进程白名单数据是静态数据,其校验方法简单,只要可信校验器计算进程控制块的hash值(hash value),再与预先存储的白名单数据进行比对即可。因此,可信校验器需要重点解决进程控制流的可信校验,具体校验方法如图6所示。

首先,控制流数据由进程虚拟机发送到共享内存1中,如图6中步骤a所示。当控制流数据充满共享内存1时,控制流数据将跳转到共享内存2继续写入,如图6中步骤c所示。与此同时,可信校验器按照弹性历程链格式开始对共享内存1中控制流进行校验,如步骤b所示。校验结束后,会清空共享内存1中的内容,转向共享内存2中进行读取并校验,如步骤d所示。在步骤b到步骤d的转换过程中,需要考虑控制流碎片的问题。弹性历程链节点的结尾很有可能与共享内存的末尾不对齐,不完整弹性历程链和完整弹性历程链的hash值不同,会导致校验失败。解决方案是在2个共享内存中加入ERC cache(控制流缓存处),将控制流碎片放入ERC cache中,如步骤b.2和d.2所示。当可信校验器完成对共享内存1中完整ERC node的校验并将控制流碎片放入ERC cache时,如图6中步骤b.1和步骤d.1所示,共享内存1会被清空,等待控制流数据的下次写入。可信校验器会将共享内存2中控制流数据附加在ERC cache之后,进行下一轮的校验。通过这种以空间换时间的思想,将共享内存1和共享内存2中的数据无缝对接,实现控制流的写入和校验的并发,避免控制流读写之间的冲突。

3 性能及安全性分析

3.1 性能分析

内核层插桩对星载操作系统性能的影响较小。在星载操作系统中,任务的创建和撤销并不频繁。只有当系统重启或者程序进行在轨维护更新时,才会进行任务的创建和撤销等操作。因此,根据进程信息的校验发生次数少这一特点,其系统性能开销在进程常驻内存正常运行时可以忽略不计。

在星上程序的执行过程中,进程虚拟机会将程序的bbl装入code cache中,这一过程会触发进程虚拟机对bbl的控制语句进行记录。为提高进程虚拟机的性能,code cache中会驻留执行频率高的routine[13]。代码在code cache中循环执行的过程中,不会触发进程虚拟机对bbl控制语句的记录。这一特性为进程虚拟机的高性能执行提供了可能:若程序稳定运行,将极大减少动态插桩的开销。在星载操作系统中,星上所执行的任务多为重复性任务,因此,一旦进程虚拟机将可执行代码全部装入code cache,进程动态插桩所产生的系统性能开销将会显著减少。

可信计算芯片作为一个硬件芯片,具有相应的计算能力。本文采用可信计算芯片Infineon TPM SLB9670,其HASH计算的速度为60 byte/20 μs,也就是说,能够在20 μs之内完成60 byte数据的HASH计算。内核插桩数据和进程动态插桩数据的产生速率,只要小于可信计算芯片的速率,就能保证可信校验的整个过程不影响星载操作系统的性能。

在性能测试中,本文采用DTN2.9.0 release包中的apps[14]作为测试用例,模拟星载操作系统中的进程。DTN2.9.0中apps包括数据接收、发送、处理等一系列DTN协议下的应用示例。本文将apps分别运行于具有安全功能和不具有安全功能的系统中,并测量系统处理相同数据量所消耗的时间,得出平均值。通过图7可以看出:当程序运行趋于稳定后,系统数据处理延迟相对于裸机系统(未使用安全监控架构)为104%。因此,对于星上任务这种长时间稳定运行的程序来说,其性能消耗影响为4%左右,处于较低水平。

3.2 安全性分析

安全性分析也是可信性分析,主要目的是确保星载操作系统在远程环境中的安全,或者在受到恶意攻击后依然能保证系统监控结果的可信与可靠。首先,可信计算技术保证了星载操作系统能够安全启动,保证星载操作系统镜像以及关键数据(例如进程白名单、预设的程序控制流)不被篡改。因此,在分析安全问题时,本文首先假设初始化后的星载操作系统是安全可信的。如果星载操作系统初始情况不可信,例如星载操作系统超级管理员权限泄露、星载操作系统初始状态载入恶意程序等情况,将导致进程安全监控机制失效。

在初始安全的情况下,星载操作系统的安全威胁主要来自于网络(物理形式的安全问题,例如空间捕获、抓取,不在本文讨论范畴)。因此,保护与网络进行信息交换的相关应用,以及防止星载操作系统内核层木马进程的产生,是保证星载操作系统可信的关键。如图8所示,网络攻击会经历路径1(1-2-3-4)或者路径2(1-2-5)。在路径1中,攻击者通过网络试图感染或者篡改应用程序。应用程序的真正执行是在进程虚拟机的code cache中,当网络攻击试图篡改code cache时,进程虚拟机会实时记录code cache中应用程序的控制流异常,进而发现此次网络攻击。在路径2中,网络攻击以code cache为跳板直接攻击星载操作系统内核层,企图在内核层中新建后门或者木马进程。此时,星载操作系统进程白名单机制发挥作用,发现异常进程,起到保护星载操作系统的作用。例如,以栈溢出漏洞为攻击入口,返回导向编程攻击能够实现路径1和路径2的攻击行为。但是,其攻击行为会受到安全监控架构的监控,能及时被发现。

事实上,在2种攻击路径中,任何对程序控制流的篡改都会被进程虚拟机及时发现。可信校验器以共享内存1和共享内存2的大小为校验周期,共享内存大小以程序中最大的routine为参考单位。假设恶意代码通过在轨维护隐藏在一个合法进程的代码段中,并企图攻击内核层,其接管进程安全监控架构的方式有2种:①通过寄生在现有进程中采取攻击行为;②通过创建新进程采取攻击行为。针对方式①,实时的控制流监控能够发现程序的异常,及时发现攻击行为。针对方式②,白名单机制通过进程id、代码段等信息的对比,发现不在名单之上的陌生进程,因此能够发现攻击行为。

本文以返回导向编程攻击和木马Linux.BackDoor.Gates.5分别模拟方式①和方式②。在模拟方式①中,返回导向编程通过栈溢出工具试图劫持程序控制流,会触发可信校验器,导致攻击失败。在模拟方式②中,假设木马病毒通过在轨维护被引入系统(在试验中,通过安装包主动安装),木马会篡改寄生进程的执行代码,改变宿主程序的执行路径,会被进程安全监控架构发现。同时,木马病毒企图创建新进程,从而执行其窃取信息的过程,会被白名单机制发现。因此,通过宿主进程企图攻击星载操作系统的方式,会被进程安全监控架构发现。

4 结束语

在网络环境下,开放性、智能性、网络支持性将成为卫星信息系统的重要属性,这些属性使得各异构卫星能够在天地一体化网络里实现互联互通,以及信息的共享和分发。也正是这种属性,使原本处于封闭状态的星载操作系统面临基于网络的干扰和攻击。尤其是当卫星处于太空这种远程环境时,更要保证星载操作系统的安全。本文应用可信计算技术和插桩技术,设计星载操作系统进程安全监控架构,以硬件可信根为基础,通过动态插桩对星载操作系统的进程进行安全监控,可实现星载操作系统的运行安全。在性能开销方面,可信计算芯片具有一定的计算性能,能够使性能开销保持在较低水平。在面向未来网络的星载操作系统设计与实现中,本文设计简洁有效,具有一定的参考性和可行性。后续,将在深入评测对各种攻击的覆盖率方面开展进一步的研究工作。

参考文献(References)

[1] 王海涛,韩治刚,傅俊明.发展天地一体化信息技术[J].卫星应用,2014(1):30-34

Wang Haitao, Han Zhigang, Fu Junming. Develop space-ground integrated information technology [J]. Satellite Application, 2014(1): 30-34 (in Chinese)

[2] 戴维·克勒德马赫.嵌入式系统安全:安全与可信软件开发实战方法[M].周庆国,姚琪,刘洋,等译.北京:机械工业出版社,2015:30-31

David K. Embedded systems security: practical methods for safe and secure software and systems developments [M]. Zhou Qingguo, Yao Qi, Liu Yang, et al, translated. Beijing: China Machine Press, 2015: 30-31 (in Chinese)

[3] Langner R. Stuxnet: dissecting a cyber warfare weapon [J]. IEEE Security & Privacy, 2011, 9(3): 49-51

[4] Elmasri M H, Megahed M H, Elazeem M H A. Design and software implementation of new high performance group key management algorithm for tactical satellite [C]//Proceedings of the 33rd National Radio Science Conference (NRSC). New York:IEEE, 2016: 149-158

[5] Buchen E. Small satellite market observations [C]//Proceedings of the AIAA/USU Conference on Small Satellites, 2015. Washington D.C.: AIAA, 2015: 7-12

[6] Florio M A, Fisher S J, Mittal S, et al. Internet routing in space: prospects and challenges of the IRIS JCTD[C]//Proceedings of Military Communications Confe-rence 2007 on IEEE. New York:IEEE, 2007: 1-6

[7] Papp D, Ma Z, Buttyan L. Embedded systems security: threats, vulnerabilities, and attack taxonomy [C]//Proceedings of the 13th Annual Conference on Privacy, Security and Trust (PST). New York: IEEE, 2015: 145-152

[8] Zhao B, Zhang H, Guo H, et al. White list security management mechanism based on trusted computing technology [C]//Proceedings of International Symposium on Computers and Informatics (ISCI), 2015. New York: IEEE, 2015: 1369-1377

[9] 王全民,胡大海,许殊玮,等.基于Linux内核2.6的进程拦截机制的研究和实现[J].科技与创新,2012(9):13-15

Wang Quanmin, Hu Dahai, Xu Shuwei, et al. Research and realization of process interception on Linux 2.6.32[J]. Science and Technology & Innovation,2012(9):13-15 (in Chinese)

[10] Cantrill B, Shapiro M W, Leventhal A H. Dynamic instrumentation of production systems[C]// Proceed-ings of 2004 USENIX Annual Technical Conference. Berkeley:USENIX, 2004: 15-28

[11] Lee J, Jang J, Jang Y, et al. Hacking in darkness: return-oriented programming against secure enclaves [C]//Proceedings of the 26th USENIX Security Symposium on USENIX Security. Berkeley: USENIX, 2017: 523-539

[12] Pearson S. Trusted computing platforms: TCPA technology in context [M]. Upper Saddle River, New Jersey: Prentice Hall PTR, 2003: 206-208

[13] Ragel R G, Parameswaran S. IMPRES: integrated monitoring for processor reliability and security [C]//Proceedings of the 43rd Annual Design Automation Conference, ACM/IEEE. New York: IEEE,2006: 502-505

[14] Delay-Tolerant Networking Research Group. DTN2 [EB/OL]. [2017-07-24]. https://sourceforge.net/projects/dtn/files/DTN2/2.9.0.tgz

猜你喜欢
白名单校验内核
复杂多耦合仿真模型校验工具研究
多内核操作系统综述①
使用Excel朗读功能校验工作表中的数据
电能表在线不停电校验技术
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
核电厂仪控系统安全防护策略研究及应用
UAC提示太烦 教你做个白名单
微软发布新Edge浏览器预览版下载换装Chrome内核
2019年“移动互联网应用自律白名单”出炉