但是,滲透測試的全面性和覆蓋率一直都是困擾著眾多軟件安全測試人員的問題。而且對于開發人員來說,他們更為關心如何能夠在軟件開發的早期階段就能引入安全性的分析,讓他們能夠根據漏洞分析的提示,盡可能早地將安全問題 Fix 在開發階段,這就引入了基于白盒的源代碼安全分析。
如果把檢測軟件漏洞比作去醫院看病,那滲透測試就如同中醫的“聞問望切”一般,通過給軟件把脈,將病例病因一一道來。而基于白盒的源代碼分析,更像是西醫的內觀外治,先做完 X 片、B 超,然后對癥下藥。
其實長久以來,基于黑盒的滲透測試和基于白盒的源代碼分析到底誰更為有效的問題一直爭論不下,以至于還有了灰盒測試(Gray Box)的出現。接下來就讓我們一起通過示例看看白盒黑盒孰優孰劣。
#FormatImgID_15# #FormatImgID_16# |
#FormatImgID_17#
|
給軟件拍一張 X 光片—基于白盒的源代碼分析
源代碼分析技術由來已久,Colorado 大學的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上發表了著名的 Data Flow Analysis in Software Reliability,其中就提到了數據流分析、狀態機系統、邊界檢測、數據類型驗證、控制流分析等技術。隨著計算機語言的不斷演進,源代碼分析的技術也在日趨完善,在不同的細分領域,出現了很多不錯的源代碼分析產品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的產品。而在靜態源代碼安全分析方面,Fortify 公司和 Ounce Labs 公司的靜態代碼分析器都是非常不錯的產品。2009 年 7 月底,IBM 發布收購要約,將 Ounce Labs 納入 Rational 產品線。在本示例中,我們選用 Ounce Labs 的安全分析器(Ounce Security Analyst 6.1)和 Rational Software Analyzer 來分別對示例代碼進行靜態源代碼安全分析和代碼質量分析。
為了保持示例一致性,我們選用 AltoroMutual 應用的源代碼進行靜態分析。首先,我們用 Ounce Security Analyst 6.1 進行源代碼安全分析。
Ounce 的安全分析器(Ounce Security Analyst)支持多種部署方式,可以獨立運行,也可以通過 Plug-in 的方式運行在軟件開發人員的集成開發環境中。在軟件開發生命周期(SDLC)中,對于開發人員,更多的是希望在日常的開發過程中能夠進行源代碼的安全分析和檢查,因此在本文的示例中我們選擇將 Ounce 安全分析器(Ounce Security Analyst)通過插件的方式 Plug-in 到基于 Eclipse 的 IBM Rational AppScan Developer Edition 7.8.1 中來使用。
圖 12. Ounce Labs 在 RADE 中的插件

(點擊查看大圖)
下面我們在裝有 Ounce Security Analyst 的 Rational AppScan Developer Edition 中,將 AltoroMutual 的源文件導入,我們發現 Plug-in 后的 Rational AppScan Developer Edition 上會多了一個名稱為 Ounce 的菜單。
圖 13. 在 RADE 中將 AltoroJ 項目編譯通過

(點擊查看大圖)
對于一般的靜態安全分析而已,保持代碼在做靜態安全分析前的可編譯性是一項非常重要的工作。因此建議軟件開發人員在進行靜態安全分析前首先保證自己的代碼是編譯通過的。我們首先將 AltoroMutual 的源代碼進行編譯,然后在 Ounce 菜單中選擇對 AltoroMutual 源代碼進行掃描。
下圖中所示的是進行掃描之后的情況。在 Rational AppScan Developer Edition 的控制臺中,我們看到 Ounce Security Analyst 總共掃描了 AltoroMutual 項目的 97 個源文件,在 10625 行代碼里發現了 742 個安全問題,總共用時 62 秒。
圖 14. 利用 Ounce Security Analyst 進行源代碼掃描

(點擊查看大圖)
將視圖切換到 Ounce Labs Perspective 后,打開 Assessment Summary,我們可以查看發現的漏洞類別與數量。
圖 15. 掃描發現的 Top10 的漏洞類別與數量

(點擊查看大圖)
文章來源于領測軟件測試網 http://www.kjueaiud.com/