錢力
摘 要:本文旨在闡述信息系統安全測試技術,首先對整個安全測試框架進行闡述,介紹了安全測試技術的重要性,然后著重學習了安全測試技術,主要包括數據流分析、控制流分析等在內的代碼靜態分析技術以及模仿黑客對信息系統進行攻擊的滲透測試技術,從而實現信息系統的安全測試。
關鍵詞:安全測試技術;靜態分析;滲透測試
1 引言
隨著社會的不斷發展以及科學技術的不斷進步,信息系統已經成為社會不可分割的一部分,在社會的各個領域中廣泛應用。隨著人們業務需求的不斷拓展,信息系統的功能也不斷龐大,設計的模塊也越來越多,這就使得人們對信息系統的正常完整的運行有著更高的要求。在信息系統開發伊始,人們便希望通過某種方法和技術將開發的信息系統能夠正確無誤地投入到生產環境中,此時軟件測試應運而生。軟件測試的的種類有很多,最常見的應用最早的是對信息系統的功能測試,隨著時間的推移和技術的發展,功能測試的方法、技術以及策略等都已經趨于成熟,而信息系統的結構不斷復雜、功能不斷繁多,使得其他方面的需求也逐漸被重視起來,例如信息系統在實現軟件功能時是否快速地正確地響應,是否能夠保證在整個運行過程中保證信息的安全等,所以對于信息系統的安全測試也逐漸被人們重視起來,逐漸成為主流的測試技術應用在軟件開發的過程中。所以對于信息系統安全測試技術的研究對于信息系統的開發來說,就有非常重要的現實意義。
2 安全測試的主要框架
對于信息系統的安全測試,需要有良好的測試框架支撐,只有這樣才能很好地開展安全測試,很好地認識安全測試在什么階段做什么事情。如下圖所示,為信息系統安全測試的主要應用框架[2] 示意圖。
對信息系統的安全測試需要一個完整的安全測試體系框架來支撐,對待交付的新系統進行安全測試,首先要制定詳細的安全測試策略,從而指導安全測試的過程以及安全測試實踐。在此基礎上,對信息系統的安全測試需要有測試標準,即對測試的內容以及缺陷的定位提供最重要的依據。同時需要對整個信息系統安全知識點和軟件測試方法的深入了解,并且掌握當前最流行的安全測試工具以及相關的安全技術知識。最后,根據制定的安全測試策略以及掌握的安全測試知識,就可以根據信息系統的基本需求中的關于安全問題的描述開展安全測試。整體來看,安全測試與普通的軟件測試沒有太大的區別,只是在測試技術或測試工具上有不同,所以對于一個熟悉軟件測試的人員來說,開展安全測試最重要的就是掌握軟件安全技術以及軟件安全測試技術的知識。
3 安全測試技術及其原理
軟件安全測試技術大體上包含兩部分,第一就是靜態測試,第二就是動態測試。簡單來說,靜態測試就是不實際運行被測信息系統,直接對軟件的代碼、文檔等進行測試,而動態測試則要運行被測系統,然后按照相應的方法去對被測信息系統執行相應的操作,最后將被測信息系統得出的結果與期望的結果進行對比,如果與期望結果相同,則說明被測系統符合信息系統規格需求描述,如果不符合,則說明被測信息系統存在缺陷。
(1)靜態分析技術。信息系統的安全測試的靜態測試[1],主要是采用靜態分析技術,對信息系統的代碼進行靜態分析。常見的靜態分析方法有對數據流的分析方法、控制流分析方法、語義分析方法、結構分析方法、配置分析方法。其中數據流分析方法就是跟蹤代碼的數據傳遞過程,深入跟蹤并分析數據的聲明、定義、賦值、使用、消亡等過程,然后判斷哪些數據在數據的聲明周期中是否被外部的輸入或用戶操作或其他非法操作感染,并被傳遞到那個函數等,并分析可能造成的危害,從而識別SQL注入、命令注入等安全漏洞??刂屏鞣治龇椒▌t是對代碼的程序操作流程或者代碼的執行順序進行分析,判斷整個代碼是否出現惡意跳轉或者非法路徑操作,從而識別代碼中是否存在安全漏洞。語義分析方法則是對代碼的各種函數或者其他API進行分析,判斷程序內部是否可能出現安全漏洞,該方法主要識別系統的緩沖區溢出等主要安全問題。結構分析方法主要對代碼的程序結構、函數的構建方式等進行判斷識別,從而發現可能潛在的安全漏洞。配置分析方法則是對主要的配置文件、配置規則等進行分析來發現潛在的安全漏洞。
(2)滲透測試技術。對信息系統的安全動態測試則是滲透測試,該測試技術屬于黑盒測試的范疇,即在不了解信息系統內部結構和運作機制的情況下,按照網絡黑客攻擊信息系統的方法來對其進行檢測,從而發現信息系統存在的安全漏洞。滲透測試針對不同的安全漏洞采用的測試方法有所不同,以SQL注入為例,采用滲透測試的方法就有很多。首先,對信息系統進行安全滲透測試,要驗證信息系統所有的輸入點,包括常見的get,post,Cookie以及其他的URL地址的http請求;然后使用常見的SQL對字符串的引用符合、語句分割符號以及注釋符號,配合SQL關鍵子And或者Or來構建SQL注入字符,從而構成了能夠注入SQL信息的URL請求。在構建注入請求時,要保證整個URL的有效性,包括輸入合法的判斷以及長度是否越界的判斷。 此外,還可以使用Union操作符偽造查詢請求或使用數據庫存儲過程進行盲注來對信息系統的SQL注入漏洞進行測試。
信息系統的安全漏洞由很多,測試方法也大同小異,但是通過手工測試的方法來開展安全測試需要浪費大量的人力和物力,此時可以通過工具來實現對信息系統的測試?;萜盏腤ebInspect是商業的非常有效的滲透測試工具,可以自動地對SQL注入、跨站腳本攻擊等各種安全漏洞進行掃描,并生成專業的測試包括,從而實現安全測試的過程。
4 總結
信息系統的安全測試技術主要包括了對代碼的靜態分析技術以及對系統的滲透測試技術,依照兩個測試技術,可以對信息系統進行安全測試,并對潛在的安全漏洞進行報告,最后通過開發人員修復安全漏洞,最終完成對信息系統的安全測試過程。
參考文獻:
[1]王春喜,歐陽勁松.系統功能安全測試技術研究[J].自動化儀表,2006(S1).
[2]江常青,鄒琪,林家駿. 信息系統安全測試框架[J].計算機工程,2008(02).
[3]程秀權.信息系統安全規劃框架與方法[J].現代電信科技,2007(06).