2009年4月3日 星期五

CAT.NET 初用

一直被問到,SQL Injection 及 XSS attact 如何防範?
雖然知道,但要一個個解釋,總是一個大工程,最好有一個工具,能幫忙檢查同事的程式。檢查出來後再來解釋為何「這段程式容易被攻擊」。

CAT.NET 正好是我所需要的。畢竟我都是使用 Visual Studio 來開發啊!

安裝後,打開 Visual Studio, 在功能表 tools 下會多出一個 CAT.NET Code Analysis.

image

執行後,按下方圈選的圖示,以進行設定

image

為何要進行設定呢?以我的solution為例,共23個專案。CAT.NET 是分析專案輸出的 Assembly 來進行檢查的。它甚至會把測試專案也拿來分析。
因此,設定太多專案的話,目前很容易 Out of memory 的。
 image

按Targets頁,可以看到多個Assembly輸出 。使用 Add/Remove  來移除不甚重要的 assembly。如果不信邪,就會發生如下的訊息。

Code analysis output report: C:\MySolutionFolder\MicrosoftACECodeAnalysisReport.xml
Executing code analysis...
Error: Exception of type 'System.OutOfMemoryException' was thrown.

進行分析後,就會出現一堆的 Issue。天啊,怎麼會這麼多?

image

雙擊 Issue 後,Source Code Editor 就會出現有問題的那一行原始碼。由於我們的程式,都會進行重構/模組化,因此,以人工的方式進行分析是相當辛苦的。
CAT.NET 會將這個 Issue 的呼叫過程,由Data Flow Start 直到 Data Flow End ,整個歷程輸出到右方區塊。(如下圖)

image

因此,如上例,該段程式經過了9個 function call,才完成了可能被攻擊的漏洞。

天啊!再資深的天才,也沒有辦法以人工的方式將所有的漏洞一個個找出來的。

目前只是 CTP 版,因此效能上比較差,記憶體也用的很兇。

未來應該會整合到 Visual Studio 的 Code Analysis 中

沒有留言:

Share with Facebook