(西北工業(yè)大學 a.計算機學院;b.自動化學院, 西安 710072)
摘 要:以信息安全理論和軟件逆向工程技術為依托,研究了操作系統(tǒng)安全機制復合行為模型掘取技術及其實現(xiàn)方法和技術路線。通過結合操作系統(tǒng)的多尺度軟件逆向理解技術,對操作系統(tǒng)安全機制的相關程序進行逆向分析、模型掘取和形式化描述,從而發(fā)現(xiàn)潛在漏洞、后門、隱通道等操作系統(tǒng)高層安全機制存在的安全問題,為實施修補、反制及利用等相應安全措施提供有力依據(jù)。在該技術基礎上實現(xiàn)了一套原型系統(tǒng),實驗驗證該系統(tǒng)的程序理解和模型掘取結果滿足要求。
關鍵詞:操作系統(tǒng)安全機制;靜態(tài)分析;程序理解;模型掘??;形式化描述
中圖分類號:TP39308 文獻標志碼:A
文章編號:10013695(2009)01031403
Research on technology of complex behavior model mining foroperating system security
mechanism
AN Xifenga,LI Weihuaa,XUE Jingb
(a.College of Computer Science, b.College of Automation, Northwestern Polytechnical University, Xi’an 710072, China)
Abstract:Based on theories of information security and technology of software reverse engineering, studied the technology and realizable method of complex behavior model mining for operating system security mechanism. By using the technologies of multiscale program comprehension, reverse analysis, model mining and formal description to the programs correlative with operating system security mechanism, found security problems of security mechanism, such as leaks, back doors, covert channels and so on, in order to provide the conclusive evidences for security defence measures. A prototype was implemented and used to verify the security of operating system. The result of program comprehension and model mining satisfies requirements.
Key words:operating system security mechanism;static analysis;program comprehension;model mining;formal description
信息社會里,互聯(lián)網(wǎng)規(guī)模迅速壯大,依托于網(wǎng)絡的業(yè)務蓬勃發(fā)展,人們不得不面臨網(wǎng)絡安全問題。據(jù)權威機構統(tǒng)計,目前因特網(wǎng)上20%企業(yè)的防火墻、80%的計算機網(wǎng)絡包含嚴重的安全缺陷[1]。研究表明,所有的入侵都是因為軟件系統(tǒng)本身存在漏洞。而操作系統(tǒng)是軟件系統(tǒng)的核心和基礎,它直接管理計算機信息資源,所以信息安全基礎設施的關鍵是操作系統(tǒng)的安全。沒有操作系統(tǒng)安全,就不可能真正解決數(shù)據(jù)庫安全、網(wǎng)絡安全和其他應用軟件的安全問題[2]。因此,操作系統(tǒng)對網(wǎng)絡信息安全的整體安全性具有至關重要的基礎作用。
為實現(xiàn)操作系統(tǒng)安全的這個目標,需要建立相應的安全機制,包括硬件安全機制、標志與鑒別、存取控制、最小特權管理、安全審計等[3]。對操作系統(tǒng)安全機制行為模型的研究,在操作系統(tǒng)安全研究領域中具有重要意義。當前的信息處理和通信系統(tǒng)越來越復雜,在安全機制上難免會存在一些設計者本人在設計時并沒有意識到的在設計、實現(xiàn)以及管理中存在的缺陷,這些漏洞常被他人利用來繞過安全策略。對源程序進行逆向分析和安全審查的目的就是在程序設計階段、在系統(tǒng)運行之前通過分析源代碼發(fā)現(xiàn)潛在的安全缺陷[1]。目前國內(nèi)外作了很多這方面的研究,主要集中在軟件安全性的靜態(tài)分析和漏洞發(fā)現(xiàn)上[4,5],而對安全機制高層模型掘取方面的研究較少。
1 研究內(nèi)容和體系結構
以Linux操作系統(tǒng)作為研究對象,在已有的軟件工程技術和操作系統(tǒng)軟件逆向理解技術的研究基礎上,將操作系統(tǒng)安全機制的理解、高層設計決策信息的提取相結合,并在軟件分析過程中掘取制作功能組件、軟架構,探索出面向操作系統(tǒng)安全機制的復合行為模型掘取技術。
研究操作系統(tǒng)安全機制的復合行為模型掘取技術,從多個層次、多個角度對操作系統(tǒng)安全機制的核心程序、系統(tǒng)結構進行逆向理解,從而發(fā)現(xiàn)系統(tǒng)高層安全機制存在的安全問題。通過結合操作系統(tǒng)的多尺度軟件逆向理解技術,對操作系統(tǒng)安全機制的相關程序進行逆向分析,挖掘系統(tǒng)的潛在漏洞、后門、隱通道,為實施修補、反制及利用等相應安全措施提供有力依據(jù),從而增強操作系統(tǒng)的可控性,提高系統(tǒng)的主動防護、信息對抗的能力。該系統(tǒng)的體系結構如圖1所示。
系統(tǒng)以OS軟件靜態(tài)結構的分析為切入點,采取適當?shù)姆椒▉韯澐殖绦蚪Y構,抽取軟件靜態(tài)需求模型;在操作系統(tǒng)的已知安全機制分析基礎上,形成操作系統(tǒng)軟件分析基本劃分技術,為操作系統(tǒng)的復合行為模型的抽取作準備。
在軟件安全靜態(tài)需求模型分析的基礎上,以靜態(tài)分析所獲取的信息為線索,對功能分級樹進行逐層分析,采取黑盒與白盒相結合的方式進行軟件的動態(tài)測試分析與交互理解,自上而下逐層測試來提取行為語義的動態(tài)信息,抽取模塊功能。同時還要從底層的基本行為語義入手,自下而上逐層理解進行功能合并與功能分級樹的剪枝處理,形成子程序功能樹,使之逐漸進入高層完成全局設計決策和原始結構的抽取。
通過對掘取的操作系統(tǒng)安全機制模型進行形式化描述,使得這種抽取和建模的結果獨立于具體的體系結構,從而使體系結構的設計遵循一定的理論基礎和工程原則。同時,形式化描述可以對模型進行安全驗證,高層設計決策上檢查是否存在安全問題。
2 系統(tǒng)關鍵技術
操作系統(tǒng)安全機制的復合行為模型掘取技術基于操作系統(tǒng)的多尺度逆向理解,探究系統(tǒng)高層結構,抽取操作系統(tǒng)安全機制的復合行為模型。對安全功能模型進行形式化描述,從而發(fā)現(xiàn)系統(tǒng)高層安全機制設計上存在的安全問題。
21 軟件安全靜態(tài)需求模型分析
程序代碼編寫錯誤是軟件安全漏洞產(chǎn)生的重要原因之一。而程序設計語言本身所固有的特性,如C/C++中對數(shù)組、指針無自動的邊界檢查,使得許多錯誤無法在編譯階段被發(fā)現(xiàn)。
本部分以操作系統(tǒng)軟件靜態(tài)源碼的分析為切入點,利用操作系統(tǒng)安全分析機制和靜態(tài)分析工具,重點對軟件源代碼進行靜態(tài)分析,尋找內(nèi)存訪問錯、緩沖區(qū)溢出、競爭條件(race condition)、空指針使用等可能存在的安全隱患。在此基礎上,采取適當?shù)姆椒▉韯澐殖绦蚪Y構,抽取軟件抽象語法樹AST,創(chuàng)建可視化函數(shù)流樹,形成操作系統(tǒng)軟件分析基本劃分技術,并在程序的靜態(tài)分析基礎上,對可視化函數(shù)流樹進行變換,創(chuàng)建可視化文件樹。具體處理流程如圖2所示。
22 全局設計決策和原始結構的抽取
全局設計決策會影響整個程序的控制機制,其最重要的作用是描述整個系統(tǒng)的結構。結構中可能包含操作順序、內(nèi)存管理、訪問控制以及數(shù)據(jù)表示等。在安全逆向分析過程中,掘取并構建可以用于反映實現(xiàn)這些被探測到的設計決策的代碼段之間的相互關系具有重要的意義。
運用上述建立的功能分級樹,在軟件安全靜態(tài)需求模型分析的基礎上,以靜態(tài)分析所獲取的信息為線索,對功能分級樹進行逐層分析,采取黑盒與白盒相結合的方式進行軟件的動態(tài)測試分析與交互理解,自上而下逐層測試來提取行為語義的動態(tài)信息,抽取模塊功能。同時還要從底層的基本行為語義入手,自下而上逐層理解進行功能合并與功能分級樹的剪枝處理,形成子程序功能樹,使之逐漸進入高層完成全局設計決策和原始結構的抽取。
23 安全功能模型的形式化描述
研究用于軟件安全機制的復合行為模型的動態(tài)測試用例與方法,探索在具有獨立功能的程序包與具有完整任務的大塊子程序中運用植入法提取功能模型技術,探索模塊間功能的形式化組合方式,建立系統(tǒng)高層結構的程序實現(xiàn)域到安全機制的復合行為應用域的逆向映射關系及模型,運用植入法并通過測試過程提取模塊中的功能模型信息。在已有的經(jīng)驗基礎上創(chuàng)立植入法的具體方法與實現(xiàn)過程,研究面向高層結構功能拼接整合的智能化agent模塊功能整合算法與技術。
3 實現(xiàn)方法和技術路線
在實現(xiàn)方法上,遵循理論學習、方法探索和工具開發(fā)相結合的途徑,深入學習和探索程序逆向理解與結構抽取技術以及信息安全理論。在正確理論指導下進行研究,探求操作系統(tǒng)安全機制復合行為模型掘取的新技術和新突破。
31 行為結構變換掘取高層設計功能模型安全機制分析技術
在同一抽象層次,使用相同的抽象粒度展示操作系統(tǒng)所有的靜態(tài)結構,勢必會產(chǎn)生一個混亂且難以管理的龐大函數(shù)流樹。從這樣的函數(shù)流樹中所能獲取的有用信息就變得非常有限,系統(tǒng)高層的視圖無法得到。這樣也無法達到輔助系統(tǒng)安全分析人員理解操作系統(tǒng)的目的。因此需要研究可視化函數(shù)流樹的自動生成技術,并確保構建的函數(shù)流樹是模塊化的、層次化的,并且是妥善定義的。研究通過聚集技術,提供給系統(tǒng)安全分析人員一個揭示系統(tǒng)不同層次內(nèi)容的視圖。根據(jù)軟件模塊劃分和認知理論劃分聚集,從而得到操作系統(tǒng)的一個富有語義的、組織為樹狀的、分層的聚集集合。
32 全局設計決策和原始結構的抽取技術
根據(jù)源代碼分析階段得到的代碼的符號信息、符號間的關系、編譯指令和流程結構等信息構建模型數(shù)據(jù)庫;如圖3所示。其中主要包括兩大類數(shù)據(jù):a)對象數(shù)據(jù),記錄全局變量、全局對象、函數(shù)、類、源文件、獨立代碼塊等對象的屬性;b)關系數(shù)據(jù),記錄各類對象之間的各種相互關系。
從源代碼中提取出各類信息后,通過聚類、關聯(lián)分析等方法進行識別,并以適當?shù)男问浇M織為模型描述文檔。符號及其屬性用表格的形式描述,關系則用圖形的方式來描述。由此可以得到能夠反映軟件設計的基本結構框架,在基本模型信息的基礎上作進一步的深度分析可獲得更深層次的模型信息。例如,通過對獨立代碼塊間執(zhí)行關系的分析可以確定代碼段的所有可能運行流程以及相應的運行條件,這是源代碼安全性檢測數(shù)據(jù)設計的重要依據(jù)。另外,通過對軟件模型中的結構、流程和數(shù)據(jù)流分析,還可以幫助設計者找出代碼設計中存在的脆弱點和威脅,從而對代碼安全性設計作出加固和優(yōu)化。
33 采用聚類算法實現(xiàn)高層架構功能模型恢復技術
在軟件逆向分析領域,聚類用于發(fā)現(xiàn)程序的結構。采用聚類算法實現(xiàn)高層架構恢復,以“塊間松耦合、塊內(nèi)緊耦合”為度量準則,在操作系統(tǒng)的全局上實行大粒度的高層聚類形成子程序的體系大模塊;在局部底層實體間建立小粒度的關聯(lián)關系松耦合的功能包模塊,由此建立操作系統(tǒng)的功能分級樹,而體系功能模塊是其子樹,功能包模塊又是體系模塊的子樹,直至數(shù)據(jù)文件為功能分析的最小單位。通過簡化樹的過程來達到最高層的功能模型的信息抽取。
34 操作系統(tǒng)安全機制分析平臺實現(xiàn)
設計并實現(xiàn)了操作系統(tǒng)安全機制分析平臺,能夠實現(xiàn)針對操作系統(tǒng)安全機制的安全性分析,進行全局設計決策抽取和逆向建模,并能識別和標志出系統(tǒng)中存在的內(nèi)存泄露、空指針、隱通道等安全問題。全局設計決策抽取和逆向建模的實現(xiàn)過程設計如圖4所示。
通過全局設計決策抽取和逆向建模得到的軟件模型,從本質(zhì)上說是一種軟件體系結構的高層設計模型,是對軟件體系結構在整個生存期間所實現(xiàn)的功能和安全機制的復合行為的歸納和說明。經(jīng)測試,分析平臺能檢測5大類,共23種(可擴充)軟件系統(tǒng)安全問題,識別率>89.3% 、漏報率<10%、誤報率<6%,程序理解和模型掘取結果滿足要求。
4 結束語
本文提出的操作系統(tǒng)安全機制復合行為模型掘取技術從而增強了操作系統(tǒng)的可控性,提高了系統(tǒng)的主動防護、信息對抗的能力。下一步的工作考慮是通過改進相關模式識別聚類算法進一步提高模型掘取的準確度和安全問題的識別率。
參考文獻:
[1]
劉海燕,楊洪路,王崛.C源代碼靜態(tài)安全檢查技術[J].計算機工程,2004,30(2):2830.
[2]HOLLINGWORTH D S,GLASEMAN M,HOPWOOD.Security test and evaluation tools: an approach to operating system security analysis[M].Calif:Rand Corp, Santa Monica, 1974:5298.
[3]卿斯?jié)h,劉文清,溫紅子. 操作系統(tǒng)安全[M]. 北京:清華大學出版社,2004:2526.
[4]夏一民,羅軍,張民選.基于靜態(tài)分析的安全漏洞檢測技術研究[J].計算機科學,2006,33(10): 279282.
[5]LIONEL C B.The experimental paradigm in reverse engineeringrole, challenges and limitations[C]//Proc of the 13th Working Conference on Reverse Engineering (WCRE’06).Benevento:IEEE Computer Society, 2006.
[6]JENS K,DIRK M,MATTHIAS N.Understanding software architectures by visualizationan experiment with graphical elements[C]//Proc of the 13th Working Conference on Reverse Engineering (WCRE’06).Benevento: IEEE Computer Society,2006.
[7]張闊,徐鵬,李涓子,等.基于優(yōu)化層次聚類的文檔邏輯結構抽取[J].清華大學學報:自然科學版,2005,45(4): 471474.
[8]冀佩剛.程序靜態(tài)分析研究[D].蘭州:蘭州大學,2006.