為了管理軟件安全風險,軟件安全從業人員必須完成許多不同的工作,比如:
● 創建安全濫用/誤用案例。
● 列舉標準化的安全需求(以及安全特性和功能)。
● 執行體系結構風險分析。
● 制定基于風險的安全測試計劃。
● 執行靜態分析工具。
● 進行安全測試。
● 在最終環境中進行滲透測試。
● 在安全被破壞后進行清理。
其中有三種方法聯系特別緊密:體系結構風險分析、基于風險的安全測試計劃和安全測試——因為安全測試的一個重要方面就是直接探測安全風險。
“軟件安全并不是安全的軟件”這句精辟的諺語道出了安全測試的重要推動力。雖然安全特性,比如加密、強認證和訪問控制,在軟件安全中起著重要的作用,但是安全本身是整個系統的一種新特性,而不僅僅是安全的機制和特性。緩沖區溢出是一種安全問題,不論它出現在安全特性中還是在不重要的GUI中。
由于這個原因,安全測試必須包含兩種不同的方法:
1.功能性安全測試 測試安全機制以保證正確地實現了它們的功能。
2.對抗性安全測試 執行通過理解和模擬攻擊者的方法而設計的基于風險的安全測試。
這兩種不同的活動一起構成了融合了白帽子(確保功能的安全)和黑帽子(確保能抵御攻擊)的基本方法。安全測試必須綜合這兩種方法,否則就不能涵蓋重要的領域。
許多開發人員都錯誤地認為安全僅僅就是大量地應用和使用各種不同的安全特性,這種不正確的觀念認為“增加SSL”就萬事大吉了。解決這類問題的方法往往都過分地依賴“有魔力的加密方法”,軟件安全從業人員對此感到沮喪。負責安全測試的軟件測試人員也常常有同樣的苦惱。
我們并非不應該測試加密方法以確定其魔力。大多數安全攻擊都忽略幫助查找系統中的軟件缺點的安全機制。安全測試不但需要涵蓋安全功能,而且還應該考慮攻擊者的想法。
原文轉自:http://www.anti-gravitydesign.com