自從軟件誕生起,軟件的安全性一直就是每一個程序員不可回避的問題。隨著計算機語言的不斷進化和互聯網時代的到來,軟件所面臨的安全性問題也在發生著巨大改變。在這些軟件安全問題中,由于沒有在軟件設計和開發的過程中引入安全開發和測試的情況占了很大比例。在本文中,我們就將結合示例來討論一下如何能夠在軟件開發生命周期中進行軟件安全開發和測試的問題。
序言
自從軟件誕生起,軟件的安全性一直就是每一個程序員不可回避的問題。面對“如何開發出具有高安全性軟件”與“如何利用軟件漏洞進行攻擊”,安全防護人員和黑客,就像中國武俠中的白道高手與黑道高手一樣,在相互的較量中提升自己的功力。隨著計算機語言的不斷進化和互聯網時代的到來,軟件所面臨的安全性問題也在發生著巨大改變。如果將最初的單機病毒攻擊成為軟件安全的第一紀,網絡攻擊稱為第二紀的話,那我們現在正處在軟件安全的第三紀 -- 應用攻擊。Gartner 的數據顯示,75% 的黑客攻擊發生在應用層。而來自 NIST 的數據更為驚人,有 92% 被發現的漏洞屬于應用層而不是網絡。
圖 1. 來自 Gartner 和 NIST 的數據
在這些軟件安全問題中,由于沒有在軟件設計和開發的過程中引入安全開發和測試的情況占了很大比例。其實,從 1968 年軟件工程誕生以來,人們一直企圖在軟件開發生命周期(SDLC)中引入安全開發的理念和方法,并由此出現了安全開發生命周期(Secure Development Lifecycle)。在本文中,我們就將結合示例來討論一下如何能夠在軟件開發生命周期中進行軟件安全開發和測試的問題。
圖 2. 安全開發生命周期示意圖

#FormatImgID_2# #FormatImgID_3# |
#FormatImgID_4#
|
軟件安全的“聞問望切”—基于黑盒的滲透測試
無論是在傳統的瀑布模型開發還是在方興未艾的敏捷軟件開發中,軟件測試都是重中之重;诤诤械臐B透測試,是一種有效地將軟件安全性測試引入軟件開發生命周期(SDLC)中的方法。目前,許多軟件廠商都有針對各自技術研發出的滲透測試產品,如 IBM 的 AppScan、HP 的 WebInspect 等。說到滲透測試,就不能不提到由 Barton Miller 和 Lars Frederickson 等人在 1990 年提出的 Fuzz 技術。傳說在 1989 年一個雷電交加的夜晚,Barton Miller 用 Modem 連接自己的主機時,一個閃電過后,電路中的高低位互換了,Miller 由此想到了利用“crash、break、destroy”的方式來進行軟件測試的技術——fuzz。著名的 Fuzz 工具有 Fuzzing 網絡協議的 SPIKE、大桃子 Peach等等。Fuzz 技術自上世紀 90 年代初期起,慢慢的廣泛應用于系統平臺測試,應用軟件測試和網絡安全測試中。
下面我們將展示如何針對一個 Web 應用進行基于安全漏洞檢測的滲透測試。在這里我們選用 IBM Rational AppScan Standard Edition V7.8 (以下簡稱 AppScan)作為測試工具。
首先,我們在 AppScan 里建立一個新的掃描。AppScan 提供了許多預定義的掃描模板來幫助工程師建立針對不同 Web 應用和 Web Service 的掃描。
圖 3. 用 Rational AppScan 模板創建掃描

在這個示例中,我們將對架設在筆者本地的 Tomcat V5.5 服務器上一個名為 AltoroMutual 的電子商務系統進行安全滲透測試。
文章來源于領測軟件測試網 http://www.kjueaiud.com/