Fortify SCA 分析代碼漏洞全解

上次介紹了用FindBugs輔助分析代碼漏洞。此次換了一個工具:Fortify SCA Demo 4.0.0。Fortify是一個在安全方面挺出名的公司,這裏就很少說了。先介紹一下主角:Fortify SCA Demo 4.0.0,儘管現在不知道Fortify SCA的版本號是多少,但可以確定的是,Fortify SCA Demo 4.0.0是一個比較舊的Fortify SCA分析器了,並且仍是Demo版的。因此無論是界面仍是功能上都是比較簡陋的。由於Fortify SCA不是開源的工具,這裏就不提供下載了,你們可以上Fortify主頁申請:>。

  此次演示的是用Fortify SCA靜態分析Java代碼。和FindBugs不一樣的是Fortify SCA還可以靜態分析C/C++,.NET和PL/SQL等代碼。html

一.Fortify SCA靜態分析原理安全

  由於我不是寫這個東東的人。並且接觸這個工具時間也有限。因此對它的工做原理認知比較淺,很是可能是經過它的說明文檔得來的。eclipse

  Fortify SCA靜態分析分兩個階段:工具

  1.Translation:spa

    把各類語言的源碼轉爲一種統一的中間語言代碼。插件

  2.Analysis:htm

    依據中間代碼分析代碼漏洞。並得出報告。blog

  Fortify有很是多個語言轉換器,但核心的靜態分析引擎僅僅有一套。ip

二.Fortify SCA的使用文檔

  先看看Fortify SCA Demo 4.0.0的文件夾:

  

  這個是Fortify SCA Demo 4.0.0的文件夾,這裏主要有兩個文件:auditworkbench.cmd和sourceanalyzer.exe。auditworkbench.cmd是查看靜態分析報告的工具,sourceanalyzer.exe是靜態代碼分析器。這裏咱們還看到了一個FindBugs的文件夾。這是由於這個版本號的Fortify集成了此功能,你可以經過傳參給sourceanalyzer.exe調用FindBugs(但我通常不這麼作,可以直接使用FindBugs的話。爲何還要經過sourceanalyzer.exe調呢?)。

  開始掃描靜態分析,首先CMD進入Java源碼文件夾。而後「H:\Fortify\sourceanalyzer.exe -classpath "**/*.jar" -f test.fpr .」。在當前文件夾獲得結果報告test.fpr。

  用auditworkbench打開test.fpr,效果例如如下圖:

  

  這裏auditworkbench主要分4部分:

  1.左上(Issues):是警告分類,這裏Fortify分了3了,嚴重程度由高至低各自是:hot。warning。info。如下是本次掃描的問題列表,雙擊就能夠定位問題代碼。

  2.右上:源碼。雙擊問題列表就能夠本身主動定位代碼。

  3.左下(analysis trace):問題處的Trace信息,告訴你問題出現在哪裏文件第幾行。

  4.右下(details):問題的具體說明。還有示範代碼。

OK,現在看看其它地方,比方:menubar(Options)-->Show View-->Other,你會看到下圖:

  

  這裏我看到了一個很是像eclipse管理插件的窗體。噢,難道.....OK,讓我看看再找找Fortify的文件夾看看,找到了這個東西:

  

  這裏發現Fortify SCA真的是一個Eclipse插件,只是當我興沖沖地把這個插件放進myeclipse插件庫並從新啓動後,發現這個不能識別:<,好像仍是差了點東西。這個之後研究。

  這個工具還有很是多功能,但暫且先寫這多。

三.Fortify SCA Demo 4.0.0與FindBugs(1.3.7.20081230)對照

  今天試着對同一份代碼進行靜態掃描,發現FindBugs找到的問題種類,數量都比Fortify SCA Demo 4.0.0多很是多:

  FindBugs發現問題種類有:20多種

  Fortify SCA Demo 4.0.0發現問題種類:5種

  在分析發現問題後。發現了一個有趣現象,Fortify SCA Demo 4.0.0和FindBugs發現的BUG類型是全然不一樣,可以說是互補的!

當中,FindBugs發現的問題相對照較重要。但FindBugs僅僅是針對Java代碼的靜態分析器,而Fortify SCA則支持不少其它的語言,並且Fortify SCA對發現問題的解釋相對照較清晰。

  致使這個問題的解決辦法多是:Fortify SCA Demo 4.0.0這個版本號比較老,並且是試用版。規則庫和靜態分析引擎都不全......假設是最新的Fortify SCA商業版,應該是不錯,8個分析不一樣類型問題的靜態分析引擎。龐大的規則庫.......可是俺這樣的窮人還沒機會試:<

  對照兩個Java靜態分析工具,Fortify SCA Demo 4.0.0和FindBugs(1.3.7.20081230),使用FindBugs是不錯的選擇,它相對照較強些,但假設可以兩個都用固然效果更好:>

四.Fortify SCA的Bug類型及解釋說明

  儘管Fortify SCA對問題已經有比較清晰的說明。可是仍是決定本身總結,這樣會更加清晰。(相關問題解釋說明稍後補上)

Hot:

//...

相關文章
相關標籤/搜索