楊朋霖 陶利民 王海濤
(北京衛星信息工程研究所,北京 100194)
網絡化是衛星應用的重要趨勢,各種依托于天地一體化網絡的衛星應用,例如空間態勢感知、戰場一體化指揮作戰、天地一體化車聯網等,將會發揮重要的軍事、民事作用[1]。然而,與這種網絡化所帶來的便利和優勢相悖的是,網絡的開放性、隨遇接入等特性,也給各種網絡終端的安全帶來了威脅。面向天地一體化網絡的星載操作系統,是一種嵌入式系統,負責星務和星上數據的處理等功能。它作為重要的網絡基礎設施,將暴露在系統漏洞攻擊、數據泄露、網絡惡意流量傳播等一系列安全威脅中[2]。例如,以震網病毒、Flame火焰病毒、Duqu病毒為代表的嵌入式信息安全事件,通過網絡進行傳播[3]。
到目前為止,星載操作系統架構有指令輪詢、RTEMS、VxWorks及Linux等。為了適應衛星應用的網絡化趨勢,需要星載操作系統支持相應的網絡協議棧進行網絡通信。因此,支持網絡協議是星載操作系統在網絡環境下運行的標志。例如,美國國防部的戰術衛星(TacSat)[4]、一網(OneWeb)公司的低軌網絡星座[5]、Facebook互聯網衛星等,都在或者計劃在太空網絡環境下運行。星載操作系統處于太空環境中,導致網絡傳輸時延長、誤碼率高,其支持的網絡協議,如國際空間數據系統咨詢委員會(CCSDS)網絡標準、延遲容忍網絡(DTN),與地面網絡環境不同。此外,網絡環境下的星載操作系統還具備以下特點:①應用與系統低耦合,例如軟件定義衛星概念;②應用程序長時間運行,程序常駐內存,以提供不間斷的網絡服務,例如空間網絡路由[6];③姿態、軌道、熱控等保障衛星在軌生存能力的實時性需求與網絡應用分層次設計[4];④運行于遠程環境,只能通過無線通信與系統取得聯系,無法直觀確認系統是否正常運行。
目前,航天領域對信息安全技術的應用,主要集中在通信中擴調頻信道保密、加密通信等階段。針對星載操作系統網絡信息安全的研究,尚處于起步階段。這是因為,現有天基系統的信息化、數字化程度還不夠高,無法充分支持網絡通信。隨著星載操作系統信息化、數字化程度越來越高,必須采取一定的安全措施,防止可能出現的網絡攻擊等事件。針對網絡環境下星載操作系統的特點,本文采用可信計算技術和插樁技術保護網絡環境下的星載操作系統,提出的星載操作系統進程安全監控設計從應用層和內核層對進程進行監控,能夠實時監測惡意程序的攻擊和入侵,保證星載操作系統運行時的安全。
進程安全監控設計需要充分考慮星載操作系統的安全需求和自身特點。網絡環境下,星載操作系統的安全威脅主要來自于有網絡交互功能的進程或者應用程序。通常情況下,網絡攻擊者通過這些入口對整個星載操作系統展開攻擊[7]。普通操作系統的安全防護措施,例如殺毒軟件、防火墻等,由于結構復雜、系統資源消耗高,不適合部署于星載操作系統等嵌入式系統中。個人電腦級的操作系統,由于其應用接口眾多,應用加載、撤銷頻繁,使用插樁技術實時監控系統的安全狀況帶來的性能開銷巨大,達到30%以上。而星載操作系統具有長時間穩定運行、網絡應用與系統低耦合的特點,使實時監控星載操作系統安全狀況付出的性能代價大幅度減小。同時,可信計算技術提供以硬件芯片為基礎的可信度量與可信計算功能,能夠為星載操作系統提供額外的獨立計算單元。因此,本文采用可信計算芯片提供的硬件可信根,利用該芯片對構成數字信息摘要的散列函數(HASH,又稱為哈希)的計算能力,結合動態插樁技術,實現星載操作系統在網絡環境下的運行安全。
通過監控與網絡相關的進程,實現星載操作系統運行時的安全,是安全監控架構的主要設計目標。利用在內核層中進程創建、進程調度的相關位置進行插樁,以內核層角度輸出并校驗進程相關數據,保證進程的創建和撤銷安全可控。同時,在應用層的角度,實現對網絡應用進程的動態插樁,輸出并校驗程序的控制流,保證應用程序的安全。安全監控架構的具體結構如圖1所示。可信校驗器將校驗來自應用層的進程控制流數據和來自內核層的進程白名單數據。星載操作系統中所運行的應用以及內核層狀態相對固定,運行過程中內核層和應用層的動態數據具有一定的規律,本文將這種數據叫作“預定義數據”。預定義數據可以作為星載操作系統運行時的校驗依據,若實時獲得的內核層和應用層數據與預定義數據不相符,則可以斷定星載操作系統的運行出現了異常。預定義數據由可信計算芯片保存,保證其完整性和保密性。它主要包括進程白名單數據和程序控制流數據,具體將在第2節中闡述。
內核層的安全監控主要關注進程的調度、啟停等以進程為單位的事件,實現星載操作系統進程級的監控。內核層關于進程的插樁所輸出的數據,會交給可信校驗器進行校驗,保證星載操作系統內所有運行的進程都是可信、安全的,或者說包含于進程白名單中[8]。應用層進程內控制流監控,關注進程內程序的執行狀況,通過動態插樁實現對進程控制流的監控,保證程序的運行軌跡符合預期,實時發現程序執行軌跡是否被篡改。
可信校驗器以可信計算芯片作為硬件可信根,根據預先提供的進程白名單和進程調度策略,為星載操作系統的進程調度提供相應的可信根和可信校驗。同時,可信校驗器動態校驗程序的控制流,與預先設定的程序控制流進行比對,實現程序運行時的安全。總體來說,可信校驗器從內核層和應用層兩個層次保證星載操作系統運行時的安全。
星載操作系統對進程數據讀取的傳統接口,無法達到系統監控所需要的實時性,并且該類命令是經過一定接口函數處理后的結果,容易被惡意進程繞過,致使進程數據讀取失敗[9]。為了在星載操作系統中實現對進程數據的實時、可靠讀取,根據對星載操作系統內核層的分析和測試,本文采用插樁技術[10]。插樁技術是指在程序中插入“探針”,由“探針”輸出程序的相關運行數據進而判斷程序的狀態。為達到實時監控進程數據的目的,本文在內核層中選擇進程創建、進程撤銷2個插樁點。進程創建的最終執行函數是do_fork(),進程撤銷的最終執行函數是do_exit()。任何關于進程創建和撤銷的函數,最終都會指向這2個函數。本文在do_fork()和do_exit()函數中的copy_porocess()和profile_task_exit()處插入插樁點,輸出進程創建、撤銷的相關信息,用于可信校驗器判斷和比對。
根據星載操作系統定制化、穩定運行的特點,假定只有固定數量的進程/應用程序運行在其中,也就是說,假定進程在星載操作系統中的進程id(pid)是相對固定的。根據內核層所獲得的進程信息(即pid)查找相應的進程控制塊數據,并由可信校驗器與進程白名單比較,確定進程是否可信。可信校驗器的進程白名單中包括如圖2所示的進程信息。
這些進程信息精準描述了進程的身份以及相關運行屬性。例如:代碼長度、代碼段地址限制了進程要執行的代碼范圍,避免從未知或非法地址加載代碼運行。進程id能夠確認進程身份,防止非法創建未知進程、惡意進程等用于木馬攻擊。在校驗時,將可信校驗器所保管的進程白名單數據和進程控制塊數據進行比較,從內核層的角度發現所運行的進程是否被調換、篡改。
為了防止網絡惡意流量通過返回導向編程(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,可由彈性歷程鏈表示。彈性歷程鏈能夠表達程序控制流圖中的循環、分支等程序控制流的邏輯,能夠動態表達程序控制流。在程序運行時,不管控制流運行時走向如何,彈性歷程鏈都能準確表達出程序的控制流,并能和預定義的程序控制流圖進行校驗,判斷是否有非法控制流出現。通過這種方法,程序的動態控制流能夠由彈性歷程鏈動態表示,實現了星上程序動態控制流的準確記錄和動態校驗。
可信計算技術[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中的數據無縫對接,實現控制流的寫入和校驗的并發,避免控制流讀寫之間的沖突。
內核層插樁對星載操作系統性能的影響較小。在星載操作系統中,任務的創建和撤銷并不頻繁。只有當系統重啟或者程序進行在軌維護更新時,才會進行任務的創建和撤銷等操作。因此,根據進程信息的校驗發生次數少這一特點,其系統性能開銷在進程常駐內存正常運行時可以忽略不計。
在星上程序的執行過程中,進程虛擬機會將程序的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%左右,處于較低水平。
安全性分析也是可信性分析,主要目的是確保星載操作系統在遠程環境中的安全,或者在受到惡意攻擊后依然能保證系統監控結果的可信與可靠。首先,可信計算技術保證了星載操作系統能夠安全啟動,保證星載操作系統鏡像以及關鍵數據(例如進程白名單、預設的程序控制流)不被篡改。因此,在分析安全問題時,本文首先假設初始化后的星載操作系統是安全可信的。如果星載操作系統初始情況不可信,例如星載操作系統超級管理員權限泄露、星載操作系統初始狀態載入惡意程序等情況,將導致進程安全監控機制失效。
在初始安全的情況下,星載操作系統的安全威脅主要來自于網絡(物理形式的安全問題,例如空間捕獲、抓取,不在本文討論范疇)。因此,保護與網絡進行信息交換的相關應用,以及防止星載操作系統內核層木馬進程的產生,是保證星載操作系統可信的關鍵。如圖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分別模擬方式①和方式②。在模擬方式①中,返回導向編程通過棧溢出工具試圖劫持程序控制流,會觸發可信校驗器,導致攻擊失敗。在模擬方式②中,假設木馬病毒通過在軌維護被引入系統(在試驗中,通過安裝包主動安裝),木馬會篡改寄生進程的執行代碼,改變宿主程序的執行路徑,會被進程安全監控架構發現。同時,木馬病毒企圖創建新進程,從而執行其竊取信息的過程,會被白名單機制發現。因此,通過宿主進程企圖攻擊星載操作系統的方式,會被進程安全監控架構發現。
在網絡環境下,開放性、智能性、網絡支持性將成為衛星信息系統的重要屬性,這些屬性使得各異構衛星能夠在天地一體化網絡里實現互聯互通,以及信息的共享和分發。也正是這種屬性,使原本處于封閉狀態的星載操作系統面臨基于網絡的干擾和攻擊。尤其是當衛星處于太空這種遠程環境時,更要保證星載操作系統的安全。本文應用可信計算技術和插樁技術,設計星載操作系統進程安全監控架構,以硬件可信根為基礎,通過動態插樁對星載操作系統的進程進行安全監控,可實現星載操作系統的運行安全。在性能開銷方面,可信計算芯片具有一定的計算性能,能夠使性能開銷保持在較低水平。在面向未來網絡的星載操作系統設計與實現中,本文設計簡潔有效,具有一定的參考性和可行性。后續,將在深入評測對各種攻擊的覆蓋率方面開展進一步的研究工作。
參考文獻(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