自動化檢測工具掃瞄漏洞快又準 評選仔細比一比 智慧應用 影音
Event
DFORUM

自動化檢測工具掃瞄漏洞快又準 評選仔細比一比

  • 張維君台北

前言︰自從2004年網路頻寬的租用價格大幅下降,許多企業朝向電子商務營運模式發展,大量的網頁應用系統從這個時期開始被開發出來。緊接著Web 2.0時代,訴求更好的網路使用品質的網站開始運用Ajax網頁開發技術,卻引發了更多網站安全性問題。網站受攻擊事件頻傳,信用卡、個人資料的外洩,引起立法單位對此問題的注意。至此網站安全成為聚光燈焦點,為了比駭客早一步發現系統的漏洞,許多弱點檢查、滲透測試、靜態檢測的工具、服務也跟著一一問市。

今年初起許多網站莫名其妙受到駭客關注,不是被植入iframe隱藏性惡意連結,就是作業系統弱點被利用而遭到零時差攻擊,如4月份的.ANI游標漏洞。攻擊頻率比起以往呈數倍成長。這樣的結果令人不禁想問:是投入駭客工作的人數變多了嗎?沒有官方統計資料不得而知,但可以確定的是,提供駭客自動攻擊的工具變多了,不需要有高超的攻擊技術也可成功入侵他人網站。於是網管人員一時之間風聲鶴唳,唯恐伺服器淪陷。但其實對網管人員而言,這恐怕是非戰之罪,因為需要關注網站安全的,還有程式開發人員。

網頁安全防護解決方案列表

網頁安全防護解決方案列表

我們曾經談論到在SDLC的安全測試階段可利用滲透測試、人工原始碼檢測、自動化檢測工具等方式找出系統漏洞。究竟何謂自動化的靜態檢測(Static Analysis)?與其他方法的差別為何?以靜態檢測來說,有免費的開源碼工具與商用產品,兩者又有何不同?

黑箱VS白箱;動態VS靜態

許多企業已明白網站系統安全的重要性,因此在系統開發完畢、正式上線前會先進行滲透測試,又稱黑箱測試。與弱點掃瞄最大的差別是,滲透測試不止對應用程式伺服器的組態設定,以及第3方元件是否有漏洞做掃瞄,同時也可針對自行開發的網頁應用程式做測試。因此許多企業會聘請外面的資安顧問定期對重要的Web系統做檢測,模擬駭客入侵的角度嘗試尋找系統弱點發動攻擊,例如用暴力破解法猜測密碼。除了有提供滲透測試服務的資安業者之外,也有商品化滲透測試工具,如日前被IBM購併的Watchfire的AppScan。

相對於黑箱測試,也有白箱測試。白箱測試就是直接分析原始碼找出程式漏洞,又稱為靜態檢測。究竟哪種測試工具較好,恐怕各自有擁護者。但由於滲透測試基本上是從外面嘗試尋找系統弱點而非直接從原始碼找,所以滲透測試只能知道系統的那個地方有被入侵的可能,而無法像靜態檢測一樣直接掃出是哪一支程式有安全問題。

看起來似乎靜態檢測工具略勝一籌,代理Fortify的數位資安總經理蘇隄客觀表示,在某些委外開發應用系統的專案上,有時候企業礙於合約未能取得系統核心元件的原始碼,在這種情況也許就只能用黑箱測試,來檢測委外開發系統的安全性了。

此外,Watchfire技術顧問Sam Tew認為,透過靜態檢測找出來的漏洞數量也許很多,但實際上許多都還只是概念性的,利用那些漏洞發動攻擊在現實環境往往並不會發生。而直接透過滲透測試工具檢測,會比較接近真實可能被入侵時所暴露的弱點。

有靜態檢測相對也有動態檢測,就是在系統的重要關口加入檢查程式,例如針對所有的輸入欄位(inputs)以及與安全功能相關的重要sinks。宮力博士認為動態檢測與靜態檢測一樣重要,動態檢測能找到更多漏洞、提升涵蓋率,可以測的比較廣。

免費開源碼工具VS商業化工具

即便使用白箱測試工具與黑箱工具相比,能得到較高的弱點偵測涵蓋率,但市面上除了各種商業的自動靜態檢測工具之外,也有免費的開放原始碼工具可以用,談起兩者的差異性,蘇隄認為是在於對漏洞的辨識理解能力。

蘇隄進一步解釋,使用靜態檢測產品對同1個應用系統做掃瞄,所發現的漏洞會隨著時間而逐漸減少,因為產品會辨識出這類型的漏洞都已被處理過,因此即使系統陸續新增新功能,長期看來系統被找出的漏洞會越來越少。

反之,使用開源碼檢測工具,工具無法得知這類型的漏洞都已被迴避掉,因此每一次檢測都還是會掃出這些漏洞,這樣隨著系統版本更新、功能越加越多,透過此工具所找出的漏洞也會隨時間遞增。即使該找出的漏洞都一樣能找出,但對使用工具檢測的程式設計師來說,其程式開發的成就感是很低的,因為即便已經處理過此漏洞,但系統每次檢測還是會出現,這是工具本身缺乏辨識理解能力的緣故。

昇陽大中華區首席架構師龔紀昶則提出建議,企業在考慮要導入商業化靜態檢測產品之前,可以先用開源碼工具,來實際體驗原始碼靜態檢測工具所能帶來的最大效益與極限何在,有了這樣的經驗後,會更清楚要如何進行檢測工具產品的評選。

自動化檢測工具建議評選條件

接下來,在考慮評估靜態檢測產品時,面對1套動輒新台幣上百萬元起跳的解決方案,企業應特別留意以下整理出來的評估要點:

1、平台內建編譯器(compiler)-阿碼科技執行長黃耀文指出,1套檢測產品如果有內建編譯器,只要直接取得原始碼即可立即掃瞄,不必得要安裝在建置主機(Build Server)上。這樣一來可以省去不少麻煩,二來在掃瞄的過程中所得到的資訊更完整,可使掃瞄結果的誤報率降低、涵蓋率提高。蘇隄則認為,準確性是原始碼檢測產品中最重要的,企業評比時就直接拿1段程式來做掃瞄比較準確性,產品技術層次上的優劣可立見分曉。

2、支援多種程式語言-平台是否能支援企業所使用的程式語言也很重要。尤其現在1套應用系統可能都是使用不同的語言來開發,如核心元件用Java、C++,而前端操作介面用Flash寫,後端又寫一些資料庫相關的預儲程序(store procedure),因此程式碼掃瞄產品得能支援多種程式語言才行。

3、Web-based架構以符合程式開發管理所需-產品功能是否符合企業的程式開發管理流程,也是評估重點。例如有些企業在程式設計師開發完之後,會統一匯集給資深經理做掃瞄檢測,然後再將檢測後應修改的部分經由工作流程(workflow)指派給負責的開發人員。因此,掃瞄軟體必須是Web-based架構才能符合企業原本流程的需要。

4、供應商團隊的客製支援與資安顧問輔導能力-黃耀文認為要導入靜態檢測產品並發揮最大效益,除了上述產品功能兼具之外,供應商團隊的客製能力也很重要。因為許多企業會要求檢測工具與原本的Ticket system、Bug tracking system或者與workflow系統整合,讓檢測工具的使用融入企業原本的軟體開發生命週期當中。因此供應商團隊能否因應不同企業的軟體開發流程提供客製化服務,顯得格外重要。

此外,黃耀文強調,供應商團隊除了需具備軟體開發流程設計經驗外也要有資安專業。畢竟程式碼檢測工具的導入,一方面是牽扯軟體開發流程,另一方面是為了做好資訊安全。所以從一開始對企業網頁應用系統的安全需求評估、解決方案規劃、實際導入、到最後即時的監控,以及萬一還是被入侵之後的事件處理,都是此產品的技術供應商需要具備的專業,所以選擇團隊跟選擇產品一樣重要。

最後,上述已談論到靜態檢測與滲透測試的比較,至於企業是否還要部署也能阻擋入侵攻擊的網頁應用程式防火牆?蘇隄認為有些企業是在系統最後測試階段才使用檢測工具做掃瞄,面對報表上所顯示掃瞄出一大堆的弱點、安全問題,程式人員也沒有充裕的時間能趕在上線日期前一一排除,這時網頁應用程式防火牆就是先扮演前線的防禦角色,讓程式人員可以有一些緩衝時間修復掉弱點。

黃耀文則表示,儘管有了網頁應用程式防火牆,企業還是必須知道這不是一勞永逸的辦法,因為只要駭客入侵功力夠,還是可以突破網頁應用程式防火牆,直搗黃龍,因此企業必須清楚自己的安全需求來規劃配套方案。