一種基于模式的動態(tài)漏洞挖掘集成系統(tǒng)和方法
【技術領域】
[0001]本發(fā)明涉及一種針對二進制程序的動態(tài)漏洞挖據集成系統(tǒng)和方法,屬于軟件工程和信息安全領域。
【背景技術】
[0002]隨著信息技術的快速發(fā)展和社會的不斷進步,信息對于現代社會的發(fā)展越來越重要,由此產生的信息安全問題也更加的受到人們的重視。網絡安全作為信息安全的重要組成部分,關系國家安全和社會穩(wěn)定,并且其重要性隨著全球信息化步伐的加快而日趨突出。
[0003]一直以來,軟件安全漏洞是導致各種網絡安全的主要根源。據國家計算機病毒應急處理中心調查分析,“未修補網絡(系統(tǒng))安全漏洞”是網絡安全事件發(fā)生的最主要原因。漏洞的發(fā)現及利用不僅僅出現在常見的網絡設備和操作系統(tǒng)中,它越來越多的出現在了新的應用領域。未知的安全漏洞是蠕蟲、病毒等惡意代碼的重要傳播途徑,隨著漏洞的危害越來越嚴重,發(fā)展趨勢的形式也是日益嚴峻。歸根結底,就是漏洞存在并被攻擊者惡意利用。軟件由于在設計初期考慮不周導致的漏洞造成的問題仍然沒有得到很好的解決,人們依然用著“亡羊補牢”的方法來度過每一次攻擊,利用漏洞的攻擊成為人們心中永遠的痛。
[0004]保障網絡系統(tǒng)安全的一個重要前提就是,快速全面地挖掘系統(tǒng)中的安全漏洞,消除系統(tǒng)的安全隱患。國內外出現大量的專業(yè)漏洞研宄組織,如國內外病毒防范公司、白帽子組織、軍方研宄組織和政治組織等,還有大量的民間研宄組織和愛好者。正是借著所有這些同興趣者的共同努力,出現了大量有效的漏洞挖掘技術和成熟工具。
[0005]目前主要的漏洞檢測方法分為白盒測試、黑盒測試和灰盒測試。其中白盒測試是針對源程序進行靜態(tài)漏洞檢測,它能檢測到代碼中的每條路徑和分支,但是檢測到的缺陷可能在運行中不能觸發(fā)。黑盒測試主要針對二進制程序,它是一種動態(tài)漏洞挖掘方法,它不需要了解程序內部細節(jié),找到的漏洞都是在程序運行中可觸發(fā)的,但是由于把程序看做一個黑盒子進行測試,測試過程有很大的盲目性。而灰盒測試結合了白盒測試和黑盒測試的優(yōu)點,既考慮程序結構,又在動態(tài)運行中檢測漏洞。目前大部分的軟件不提供源程序,難以開展有效的靜態(tài)分析,尤其是在采用進口軟件等商業(yè)軟件,且無法完全掌控軟件開發(fā)的各個環(huán)節(jié)的情況下,對軟件實現的安全性進行深入分析和嚴格評估是確保信息系統(tǒng)安全的重要手段,灰盒測試就顯得尤為重要了。
[0006]在針對二進制程序的動態(tài)漏洞挖掘過程中,最常用的方法就是白盒測試和黑盒測試,白盒測試檢測到的缺陷可能在運行中不能觸發(fā),黑盒測試則具有很大的盲目性。同時,測試過程中往往利用單一的一種方法,效率低而且針對性較差,而且不同的漏洞具有不同的模式,不能對所有的漏洞類型一概而論。
【發(fā)明內容】
[0007]本發(fā)明技術解決問題:克服現有技術的不足,本發(fā)明提供了一種基于模式的動態(tài)漏洞挖掘系統(tǒng)和方法,它是一種基于灰盒測試的方法,同時針對具體的漏洞模式具體設計系統(tǒng),并集成多種漏洞挖據技術,有效消除或降低了漏洞挖據過程制約因素,提升漏洞挖掘的效率。
[0008]本發(fā)明的技術解決方案:這種針對二進制程序的動態(tài)漏洞挖據集成系統(tǒng)和方法將符號執(zhí)行、動態(tài)污點分析和模糊測試三種漏洞挖掘方法結合起來,明確了不同漏洞挖掘技術及工具之間的交叉驗證關系和相互數據支持能力,依據特定的漏洞模式,將漏洞挖掘的核心流程按照流水線的模式進行組織,在可控時空條件下保證流水片段之間的數據關聯和流水片段的并行化處理,實現漏洞挖掘工具的深度集成,提升漏洞挖掘過程的規(guī)模增效能力。本系統(tǒng)主要在待測試的可執(zhí)行二進制程序、動態(tài)污點分析模塊、約束求解模塊和用例選擇模塊之間進行信息傳遞,其中:
[0009]動態(tài)污點分析模塊主要實現對二進制可執(zhí)行文件的插粧操作,從而獲得程序的控制流結構,利用符號執(zhí)行技術,將得到的信息形成符號化的輸出,之后將輸出結果傳遞給約束求解模塊,通過約束求解器的計算可以得到新的輸入數據,而這些新的數據都是通過對約束求解樹進行深度遍歷得到的,因而大大提高了測試的路徑覆蓋率,最后通過用例選擇模塊對測試用例進行排序,將這些測試數據重新輸入應用程序中,這個過程就是模糊測試的過程。
[0010]本發(fā)明涉及基于模式的動態(tài)漏洞挖據集成系統(tǒng)和方法,它基于漏洞模式設計,采用任務流水機制,針對二進制程序實現了漏洞挖掘技術及工具的深度集成,主要包括動態(tài)污點分析、符號執(zhí)行和模糊測試三種技術及相關工具。系統(tǒng)的實現包含了動態(tài)污點分析模塊、測試用例選擇模塊、約束求解模塊和管理模塊。首先把種子用例傳輸給應用程序,動態(tài)污點分析模塊會對污點數據在程序中的傳播進行跟蹤,并將傳播蹤跡用符號化表示出來,即結合了動態(tài)污點分析技術和符號執(zhí)行技術,得到符號化的污點傳播路徑,之后作為約束求解模塊的輸入,約束求解得到新的測試用例,并將測試用例重新傳輸給應用程序,繼續(xù)進行后續(xù)操作,整個過程都是在管理模塊的統(tǒng)一調度管理下進行的。本發(fā)明提高了針對二進制程序的動態(tài)漏洞挖據的自動化程度和效率,結合動態(tài)污點分析技術和符號執(zhí)行技術指導生成測試用例,生成的測試數據準確度和效率很高,使得模糊測試的過程更加有針對性。
[0011]一種基于模式的動態(tài)漏洞挖據集成系統(tǒng),其特征在于:依據具體的漏洞模式設計,并采用任務流水機制,集成了動態(tài)污點分析、符號執(zhí)行和模糊測試三種技術;包括動態(tài)污點分析模塊、約束求解模塊、用例選擇模塊和管理模塊;動態(tài)污點分析模塊使用了動態(tài)污點分析技術和符號執(zhí)行技術,即采用灰盒測試方法,在動態(tài)執(zhí)行程序的過程中考慮了二進制程序的結構,管理模塊不斷保存新的測試用例,這些測試用例都是對種子測試用例進行變異得到的,將其傳遞給動態(tài)污點分析模塊進行測試的過程即使用了模糊測試技術,實現了對二進制程序的自動化測試;在考慮幾個模塊的集成時,需要分析不同模塊核心技術和工具之間的關聯性,對不同技術和工具的中間成果進行集成利用,最終將三種動態(tài)漏洞挖據技術和相應的工具集成,形成集成系統(tǒng);
[0012]動態(tài)污點分析模塊:結合動態(tài)污點分析技術和符號執(zhí)行技術,將被測試的可執(zhí)行二進制程序作為此模塊的參數,同時標記二進制程序的輸入數據為污點數據;執(zhí)行此模塊的過程就是對二進制程序進行動態(tài)插粧的過程,通過動態(tài)監(jiān)控二進制程序的執(zhí)行過程,獲得污點數據在二進制程序中的執(zhí)行軌跡,同時通過控制漏洞模式的配置,依據具體的漏洞模式設計在污染傳播的過程中需要標記的操作,從而標記出相應的危險操作,最終將其以符號化的形式輸出,得到符號化的污點傳播蹤跡;另一方面,當目前操作的測試用例執(zhí)行完成后,管理模塊會從測試用例集中選取一個測試用例傳遞給此模塊,繼續(xù)執(zhí)行上述操作;
[0013]約束求解模塊:采用STP求解器進行約束求解操作,輸入文件是管理模塊利用污點分析模塊得到的污點傳播蹤跡文件,包含了二進制程序內部結構和跳轉分支的條件信息,然后提取STP求解所需要的約束條件集合,計算相對應的輸入符號應滿足的條件;管理模塊利用得到的約束條件生成新的測試用例,并保存到測試用例集合中;
[0014]用例選擇模塊:取出管理模塊中保存的約束求解模塊中生成的新的測試用例,然后計算每個測試用例相對于之前未被覆蓋的代碼塊的代碼覆蓋率,為每一個測試用例打分,得分高的測試用例優(yōu)先執(zhí)行,并送至管理模塊;通過這個優(yōu)先執(zhí)行代碼覆蓋率高的測試用例能夠提高測試的代碼覆蓋率;
[0015]管理模塊:實現動態(tài)污點分析模塊、約束求解模塊和用例選擇模塊之間的交互,協調模塊之間的工作,同時能夠保存所有的測試用例,并將能夠導致目標可執(zhí)行二進制程序崩潰的測試用例保存下來,使得觸發(fā)漏洞的過程能夠重現,具體功能實現如下:
[0016](I)將測試用例傳遞給動態(tài)污點分析模塊,動態(tài)污點分析模塊執(zhí)行完成后,將輸出的符號化的污點蹤跡信息傳遞回管理模塊;
[0017](2)將符號化的污點蹤跡信息傳遞給約束求解模塊,約束求解模塊將約束求解得到的約束條件的計算結果傳遞回管理模塊,管理模塊根據這些值生成新的測試用例,保存到測試用例集合中;
[