1. 程式人生 > >安全測試-優秀測試工程師必備的4項安全測試方法!

安全測試-優秀測試工程師必備的4項安全測試方法!

但是 實現 組合關系 方法 軟件安全 常見 比較 人員 加密算

用您5分鐘時間閱讀完,希望能對您有幫助!

一.安全性測試

1、安全性測試方法
測試手段可以進行安全性測試,目前主要安全測試方法有:
  
1)靜態的代碼安全測試

主要通過對源代碼進行安全掃描,根據程序中數據流、控制流、語義等信息與其特有軟件安全規則庫進行匹對,從中找出代碼中潛在的安全漏洞。

靜態的源代碼安全測試是非常有用的方法,它可以在編碼階段找出所有可能存在安全風險的代碼,這樣開發人員可以在早期解決潛在的安全問題。而正因為如此,靜態代碼測試比較適用於早期的代碼開發階段,而不是測試階段。
  
2)動態的***測試

***測試也是常用的安全測試方法。是使用自動化工具或者人工的方法模擬***的輸入,對應用系統進行***性測試,從中找出運行時刻所存在的安全漏洞。

這種測試的特點就是真實有效,一般找出來的問題都是正確的,也是較為嚴重的。但***測試一個致命的缺點是模擬的測試數據只能到達有限的測試點,覆蓋率很低。
  
3)程序數據掃描

一個有高安全性需求的軟件,在運行過程中數據是不能遭到破壞的,否則就會導致緩沖區溢出類型的***。數據掃描的手段通常是進行內存測試,內存測試可以發現許多諸如緩沖區溢出之類的漏洞,而這類漏洞使用除此之外的測試手段都難以發現。

例如,對軟件運行時的內存信息進行掃描,看是否存在一些導致隱患的信息,當然這需要專門的工具來進行驗證,手工做是比較困難的。
  
2、反向安全性測試過程
  
大部分軟件的安全測試都是依據缺陷空間反向設計原則來進行的,即事先檢查哪些地方可能存在安全隱患,然後針對這些可能的隱患進行測試。

因此,反向測試過程是從缺陷空間出發,建立缺陷威脅模型,通過威脅模型來尋找***點,對***點進行已知漏洞的掃描測試。好處是可以對已知的缺陷進行分析,避免軟件裏存在已知類型的缺陷,但是對未知的***手段和方法通常會無能為力。
  
1)建立缺陷威脅模型

建立缺陷威脅模型主要是從已知的安全漏洞入手,檢查軟件中是否存在已知的漏洞。建立威脅模型時,需要先確定軟件牽涉到哪些專業領域,再根據各個專業領域所遇到的***手段來進行建模。
  
2)尋找和掃描***點

檢查威脅模型裏的哪些缺陷可能在本軟件中發生,再將可能發生的威脅納入***點矩陣進行管理。如果有成熟的漏洞掃描工具,那麽直接使用漏洞掃描工具進行掃描,然後將發現的可疑問題納入***點矩陣進行管理。

 
3)***矩陣的驗證測試

創建好***矩陣後,就可以針對***矩陣的具體條目設計對應的測試用例,然後進行測試驗證。
  
3、正向安全性測試過程
  
為了規避反向設計原則所帶來的測試不完備性,需要一種正向的測試方法來對軟件進行比較完備的測試,使測試過的軟件能夠預防未知的***手段和方法。
  
1)先標識測試空間

對測試空間的所有的可變數據進行標識,由於進行安全性測試的代價高昂,其中要重點對外部輸入層進行標識。

例如,需求分析、概要設計、詳細設計、編碼這幾個階段都要對測試空間進行標識,並建立測試空間跟蹤矩陣。
  

2)精確定義設計空間

重點審查需求中對設計空間是否有明確定義,和需求牽涉到的數據是否都標識出了它的合法取值範圍。

在這個步驟中,最需要註意的是精確二字,要嚴格按照安全性原則來對設計空間做精確的定義。
  
3)標識安全隱患
根據找出的測試空間和設計空間以及它們之間的轉換規則,標識出哪些測試空間和哪些轉換規則可能存在安全隱患。
例如,測試空間愈復雜,即測試空間劃分越復雜或可變數據組合關系越多也越不安全。還有轉換規則愈復雜,則出問題的可能性也愈大,這些都屬於安全隱患。
  
4)建立和驗證***矩陣

安全隱患標識完成後,就可以根據標識出來的安全隱患建立***矩陣。列出潛在安全隱患,標識出存在潛在安全隱患的可變數據,和標識出安全隱患的等級。其中對於那些安全隱患等級高的可變數據,必須進行詳盡的測試用例設計。
  
4、正向和反向測試的區別
正向測試過程是以測試空間為依據尋找缺陷和漏洞.

反向測試過程則是以已知的缺陷空間為依據去尋找軟件中是否會發生同樣的缺陷和漏洞,兩者各有其優缺點。

1)正向測試
過程的優點是測試比較充分,但工作量相對來說較大。因此,對安全性要求較低的軟件,一般按反向測試過程來測試即可,對於安全性要求較高的軟件,應以正向測試過程為主,反向測試過程為輔。

2)反向測試
過程主要的一個優點是成本較低,只要驗證已知的可能發生的缺陷即可,但缺點是測試不完善,無法將測試空間覆蓋完整,無法發現未知的***手段。

二.常見的軟件安全性缺陷和漏洞

軟件的安全有很多方面的內容,主要的安全問題是由軟件本身的漏洞造成的,下面介紹常見的軟件安全性缺陷和漏洞。
  
1、緩沖區溢出
  
緩沖區溢出已成為軟件安全的頭號公敵,許多實際中的安全問題都與它有關。造成緩沖區溢出問題通常有以下兩種原因。
1)設計空間的轉換規則的校驗問題

即缺乏對可測數據的校驗,導致非法數據沒有在外部輸入層被檢查出來並丟棄。非法數據進入接口層和實現層後,由於它超出了接口層和實現層的對應測試空間或設計空間的範圍,從而引起溢出。

2)局部測試空間和設計空間不足
當合法數據進入後,由於程序實現層內對應的測試空間或設計空間不足,導致程序處理時出現溢出。
  
2、加密弱點
  
這幾種加密弱點是不安全的:

1)使用不安全的加密算法。加密算法強度不夠,一些加密算法甚至可以用窮舉法破解。

2)加密數據時密碼是由偽隨機算法產生的,而產生偽隨機數的方法存在缺陷,使密碼很容易被破解。

3)身份驗證算法存在缺陷。

4)客戶機和服務器時鐘未同步,給***者足夠的時間來破解密碼或修改數據。

5)未對加密數據進行簽名,導致***者可以篡改數據。所以,對於加密進行測試時,必須針對這些可能存在的加密弱點進行測試。
  
3、錯誤處理
  
一般情況下,錯誤處理都會返回一些信息給用戶,返回的出錯信息可能會被惡意用戶利用來進行***,惡意用戶能夠通過分析返回的錯誤信息知道下一步要如何做才能使***成功。

如果錯誤處理時調用了一些不該有的功能,那麽錯誤處理的過程將被利用。錯誤處理屬於異常空間內的處理問題,異常空間內的處理要盡量簡單,使用這條原則來設計可以避免這個問題。

但錯誤處理往往牽涉到易用性方面的問題,如果錯誤處理的提示信息過於簡單,用戶可能會一頭霧水,不知道下一步該怎麽操作。所以,在考慮錯誤處理的安全性的同時,需要和易用性一起進行權衡。
  
4、權限過大
  如果賦予過大的權限,就可能導致只有普通用戶權限的惡意用戶利用過大的權限做出危害安全的操作。

例如:沒有對能操作的內容做出限制,就可能導致用戶可以訪問超出規定範圍的其他資源。進行安全性測試時必須測試應用程序是否使用了過大的權限,重點要分析在各種情況下應該有的權限,然後檢查實際中是否超出了給定的權限。權限過大問題本質上屬於設計空間過大問題,所以在設計時要控制好設計空間,避免設計空間過大造成權限過大的問題。

三.做好安全性測試的建議

許多軟件安全測試經驗告訴我們,做好軟件安全性測試的必要條件是:

  
1、充分了解軟件安全漏洞
  評估一個軟件系統的安全程度,需要從設計、實現和部署三個環節同時著手。我們先看一下Common Criteria是如何評估軟件系統安全的。
首先要確定軟件產品對應的Protection Profile(PP)。一個PP定義了一類軟件產品的安全特性模板。
例如:數據庫的PP、防火墻的PP等。然後,根據PP再提出具體的安全功能需求,如用戶的身份認證實現。最後,確定安全對象以及是如何滿足對應的安全功能需求的。因此,一個安全軟件的三個環節,哪個出問題都不行。
  
2、安全性測試的評估
  當做完安全性測試後,軟件是否能夠達到預期的安全程度呢?這是安全性測試人員最關心的問題,因此需要建立對測試後的安全性評估機制。一般從以下兩個方面進行評估。

1)安全性缺陷數據評估
  如果發現軟件的安全性缺陷和漏洞越多,可能遺留的缺陷也越多。進行這類評估時,必須建立基線數據作為參照,否則評估起來沒有依據就無法得到正確的結論。

2)采用漏洞植入法來進行評估
漏洞植入法和可靠性測試裏的故障插入測試是同一道理,只不過這裏是在軟件裏插入一些有安全隱患的問題。采用漏洞植入法時,先讓不參加安全測試的特定人員在軟件中預先植入一定數量的漏洞,最後測試完後看有多少植入的漏洞被發現,以此來評估軟件的安全性測試做得是否充分。
  
3)采用安全測試技術和工具
  
可使用專業的具有特定功能的安全掃描軟件來尋找潛在的漏洞,將已經發生的缺陷納入缺陷庫,然後通過自動化測試方法來使用自動化缺陷庫進行轟炸測試。
例如,使用一些能夠模擬各種***的軟件來進行測試。
  
安全測試是用來驗證集成在軟件內的保護機制是否能夠在實際中保護系統免受非法的侵入。一句通俗的話說:軟件系統的安全當然必須能夠經受住正面的***——但是它也必須能夠經受住側面的和背後的***。
以上建議僅供參考!【樂搏軟件測試】【樂搏學院】
如有侵權請聯系,立即刪除

安全測試-優秀測試工程師必備的4項安全測試方法!