The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

介紹好用工具:CAT.NET (靜態程式碼安全檢測工具)

市場上已經有許多類似的靜態程式碼分析軟體商業軟體,在這一期的 iThome 雜誌(第 405 期)就有介紹好幾套程式碼安全檢測軟體,像我就親自領教過阿碼科技CodeSecure™ 以及 FortifySource 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 靜態程式碼安全檢測工具 (有比沒有好),分析方式似乎跟 FortifySource 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 開啟工具視窗

先用 Visual Studio 開啟開發中的專案,然後從選單 Tools –> CAT.NET Code Analysis 開啟工具視窗

也不用多說些什麼,體驗威力時“Play”鍵熊熊給他按下去就對了:

CAT.NET Code Analysis

若要進行進階設定,可以按下如下圖那一排工具列,可以讓你挑選要套用哪些規則、要掃瞄專案中哪些組件、…等等。

CAT.NET Code Analysis - Settings

掃瞄時間依據專案大小而定,通常都會掃瞄一段時間,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 是給人看的,裡面有問題描述、出現問題的程式行號、以及建議的解決之道。

其中 MicrosoftACECodeAnalysisReport.xml 是完整的分析報告,以 XML 方式儲存。另一個是 report.html 是給人看的,裡面有問題描述、出現問題的程式行號以及建議的解決之道。

Code Analysis Report

除了以上兩種方式外,事實上還可以跟 FxCop 與 MSBuild Task 結合,讓開發流程中導入 CAT.NET 成為標準化流程中的一環,建議可參考以下文章:Running CAT.NET as a Custom MSBuild Task

我個人是很期待正式版的推出 (也許是 V2.0 才會出正式版),不過我想應該還要等一段時間,畢竟資安工具是馬虎不得的,即便如此也並不代表這套工具不能用,事實上從微軟部落格得知,微軟內部也是用這套來掃瞄他們開發的軟體,所以建議各位可以一試。

相關連結