市場上已經有許多類似的靜態程式碼分析軟體商業軟體,在這一期的 iThome 雜誌(第 405 期)就有介紹好幾套程式碼安全檢測軟體,像我就親自領教過阿碼科技的 CodeSecure™ 以及 Fortify 的 Source Code Analyzer 的威力,誤判是難免,但專業度倒是沒話說,對軟體品質與安全性絕對可大幅提昇。雖然這類商業軟體都所費不貲,微軟為了拯救龐大的開發人員,也不落人後推出了一套 Microsoft Code Analysis Tool .NET (CAT.NET) 工具。
目前 CAT.NET 工具還處於 CTP 階段,而且也發展一段時間了,在之前的 CTP 版有許多問題,常常在 Visual Studio 中執行到一半就會掛掉,所以一直不敢推薦,但最近出的 v1.1.1.9 就穩定非常多了,建議各位大內高手可以放手一試。
Microsoft Code Analysis Tool .NET (CAT.NET) 是一套還算不錯的 .NET 靜態程式碼安全檢測工具 (有比沒有好),分析方式似乎跟 Fortify 的 Source Code Analyzer 分析方式有點像,他可以直接分析二位元的 .NET 組件,並可協助找出在組件中潛在的安全性漏洞,例如:Cross-Site Scripting (XSS), SQL Injection, XPath Injection, File Canonicalization, … 等知名且常見的漏洞,目前僅支援 8 條規則而已,但規則都是以 XML 定義,很容易擴充 (如果你看的懂得話)。
使用 CAT.NET 有 2 種方式:
1. 直接從 Visual Studio 中開啟 CAT.NET Code Analysis 工具 ( 包括 VS2005 與 VS2008 )
先用 Visual Studio 開啟開發中的專案,然後從選單 Tools –> CAT.NET Code Analysis 開啟工具視窗
也不用多說些什麼,體驗威力時“Play”鍵熊熊給他按下去就對了:
若要進行進階設定,可以按下如下圖那一排工具列,可以讓你挑選要套用哪些規則、要掃瞄專案中哪些組件、…等等。
掃瞄時間依據專案大小而定,通常都會掃瞄一段時間,Visual Studio 感覺會像當掉了一樣「白白的一片」,總之要有點耐性。若 Visual Studio 執行到一半掛掉,那是 CTP 的關係,沒有人會負責的。
如果專案太大,且每次 Visual Studio 都會掛掉的話,建議用第二種方式進行檢測。
2. 直接在「命令提示字元」下執行掃瞄工具
先進入組件所在目錄,然後執行如下的指令:
C:\WebSite\bin>"c:\Program Files\Microsoft\CAT.NET\CATNetCmd.exe" /file:WebSite.dll
Microsoft (R) Code Analysis Tool for .NET (CAT.NET) Version 1.1.1.9
Copyright (C) Microsoft Corporation. All rights reserved.
Running in 32-bit mode
2009/7/2 下午 04:16:23:Info : Starting analysis [1 modules]
2009/7/2 下午 04:16:23:Info : Analyzing module WebSite...
2009/7/2 下午 04:16:35:Info : 2 Exception Information issues found.
2009/7/2 下午 04:16:37:Info : Analysis completed.
如上範例,你可以發現有兩個 Issue 被找到,而且是跟 “Exception Information”有關。
執行完之後,會在同目錄下看到兩個新增的檔案:
其中 MicrosoftACECodeAnalysisReport.xml 是完整的分析報告,以 XML 方式儲存。另一個是 report.html 是給人看的,裡面有問題描述、出現問題的程式行號以及建議的解決之道。
除了以上兩種方式外,事實上還可以跟 FxCop 與 MSBuild Task 結合,讓開發流程中導入 CAT.NET 成為標準化流程中的一環,建議可參考以下文章:Running CAT.NET as a Custom MSBuild Task
我個人是很期待正式版的推出 (也許是 V2.0 才會出正式版),不過我想應該還要等一段時間,畢竟資安工具是馬虎不得的,即便如此也並不代表這套工具不能用,事實上從微軟部落格得知,微軟內部也是用這套來掃瞄他們開發的軟體,所以建議各位可以一試。
相關連結