抓出不安全的程式碼,告訴你改寫的方法──靜態程式碼安全性檢測工具採購特輯

近兩年個資外洩的新聞頻傳,最主要的問題源自於Web應用程式的漏洞,然而開發人員在技能養成的過程中,資訊安全相關的觀念傳授少之又少。這已成為現今企業面臨的難題,也就因為如此,靜態程式碼安全性檢測工具應運而生

根據美國電腦網路危機處理暨協調中心(Computer Emergency Response Team/Coordination Center,CERT/CC)安全漏洞統計報告,軟體的安全漏洞是逐年增加的,而且成長幅度驚人。軟體的安全漏洞引發的問題可從新聞事件中看出端倪:

● 2008年,刑事局破獲兩岸駭客聯手入侵政府機關盜取個人資料牟利的案子,資料庫多達5,000多萬筆。

● 2008年11月,台彩官網遭駭客植入惡意網頁與程式,台彩公司表示10月底就發現駭客入侵,已經清了20多次,但網友依然發現網頁含毒,因此質疑駭客可以在官網「加料」,是否代表能竄改開獎數字,甚至取得彩金得主資料。

● 2006年,臺灣最大部落格網站「無名小站」發生會員資料外洩事件。刑事警察局偵九隊三組查獲,由東海大學大三陳姓學生與洪姓高三生組成的駭客集團,以XSS(跨網站腳本攻擊)方式入侵無名小站。

以上是最近兩年發生較為重大新聞的事件整理,然而未爆彈不知凡幾。

再者,根據外電報導:有69%的資料外洩事件是由第三方所揭露。而且99%的資料外洩筆數是儲存在伺服器及應用程式等網路資產中,而非眾所關切的桌上型電腦、行動裝置或可攜式媒體。

事實上,國內處理最多類似事件的偵九隊也表示相近的看法──多數發生個資外洩的網站業者,自己也搞不清楚到底有沒有外洩資料。而且更重要的是,個資外洩事件大多源自於Web應用程式的漏洞。

Gartner的分析呼應這個說法。大部分的網站或多或少都有漏洞,90%的網站具備可進行應用程式攻擊的漏洞,所以Gartner預估在2010年之前,80%的組織將經歷應用程式的資安事件。


新版「個人資料保護法」將衝擊所有蒐集個資的網站
也就因為資安事件的成長速度驚人,受害企業遍及全球,國外有一項統計數據表示,2008年個資外洩筆數已超越過去4年的總合。而在臺灣,立委諸公們也無法置身事外地受到波及,因而意識到現行的「電腦處理個人資料保護法」已經不合時宜,積極推動新版「個人資料保護法」,目前的進度是二讀通過。

待新法三讀之後,適用對象將擴大到蒐集個資的所有網站,不再局限於現行的八大類企業。對於擁有眾多會員資料庫的企業網站,一旦個人資料遭洩漏,除非網站業者能證明遭人破壞竊取,否則網站對於會員資料庫的維安責任有過失,受害會員可以向網站業者請求損害賠償,總額最高可達5,000萬。


企業的難題:無法確保應用程式開發是否落實安全性考量
面對新版的「個人資料保護法」勢在必行,企業不得不正視Web應用程式的安全問題。然而,企業面臨的難題在於,內部的資安人員大多是IT基礎架構的成員,過去聽到的「資安」議題,多是網管或系統管理組的負責領域。

關於應用程式面的資安,企業的了解相對而言很有限,而開發人員本身更不用說。我們一般會問「你會不會寫程式」,少見詢問「你會不會寫『安全的』程式」。

程式設計師在技能養成的過程中,就不曾接觸過相關議題,據了解,直至今日的大專院校仍少見「安全的程式開發」相關課程。

再加上專案時程緊湊,能夠準時、無誤又符合需求地交付上線,就是很不容易的事情,因此「安全」更是無暇顧及的事情。現在資訊主管要求開發者寫「安全的程式碼」,幾乎是緣木求魚。


弱點在開發早期解決,成本最低
該怎麼處理這樣的問題?許多對資安敏感性較高的產業,早已選擇滲透測試,請資安專家以駭客的手法檢驗網站的安全性。然而滲透測試費用不低,無法頻繁地執行,一般而言,是一年1至2次,所以無法時時把關安全性。

因此,市面上也出現了「靜態程式碼安全性檢測」及「動態程式碼安全性檢測」工具,希望幫助企業在資安意識不足的情況下,透過工具的自動化掃描,抓出安全性漏洞,並提供弱點解說與修正建議,進而學會處理的方式。

動態程式碼檢測工具及滲透測試都是在模擬駭客的手法,嘗試找到網站的弱點,並提供相關報告。這種作法比靜態程式碼安全性檢測全面,因為可以抓出作業系統、應用伺服器的漏洞,及設定面問題。

不過,靜態程式碼安全性掃描工具的強項在於,能地毯式地掃描程式碼、抓出不安全的寫法,並提供修正建議,是從根源就做好防護的安全性作法。

畢竟軟體上線後才發現問題,再去解決的成本是開發階段的100倍。

OWASP(Open Web Application Security Project)主席Jeff Williams在2008年的美國年會上,開宗明義說道:「很多單位把大部分的資安預算花在『駭(Hacking)』,也就是做滲透測試跟掃描。這沒什麼錯,這些工作是重要的,但是我們沒辦法把自己『駭』得更安全。」
在開發階段就落實正確而安全的程式寫法,是最徹底的解決辦法。若再搭配滲透試,可進一步驗證成效


套裝工具能幫你省掉的工作
此次採購特輯來說,介紹4家靜態程式碼安全性檢測工具,規納出以下共通的主要特性包括:

● 與IDE整合:為了要方便開發者檢查並修正不安全的寫法,各家產品均可與IDE開發環境整合,讓他們在Visual Studio或Eclipse下,能隨時可以按下掃描鍵啟動檢查機制。

● 嚴重等級分類:各種弱點產生的威脅嚴重程式不同,所以工具一般是參考OWASP將弱點分類並標示嚴重等級,例如XSS及SQL Injection是歸類為高風險的弱點。分級的好處在於,幫助企業將資源投入在真正重要的地方,而資訊類的弱點,未必會造成威脅,就可以排出處理的優先順序。

● 直指問題程式碼的位置:如果無法找出問題程式碼,此類工具的作用就和滲透測試差不了多少,指出問題關鍵是靜態程式碼安全性檢測工具的價值。

● 提供修復建議:這也是靜態程式碼安全性檢測工具的最重要特色,由於多數開發者對於「安全」的程式開發沒有概念,系統提供完整的修復建議與程式範例,絕對有助加速弱點修復的效率。


工具結合流程和人配合才能成功
此類工具的售價並不便宜,然而要能成功套用在企業的開發流程,並不是買來裝上去就可以簡單上手。導入這樣的系統,選擇適合的產品固然重要,但是人員與流程的配合才是成功的關鍵。

叡揚資訊軟體安全顧問及工程部經理范家禎表示:「工具要成功,必須搭配人員、流程與技術的整合。」,以該公司代理的Fortify為例,導入的作法,除了安裝、建置,還包括教育訓練。而教育訓練不光是操作的教學,還包含什麼是「安全的程式開發」、何謂「OWASP Top 10」等。

然後顧問必須協助客戶制訂標準和稽核的流程,因為如果在導入的初期沒有跟開發人員溝通規則,很容易引發反彈。最後,以實際的專案試行,再視情況調整。


修復建議未必適用,此時需靠顧問提供最佳方案
企業導入靜態程式碼安全性檢測解決方案,還要有一個認知:工具提供的修正建議,未必派得上用場。

事實上,知道問題出在哪一行,和真正修復弱點,兩者之間可能有一段距離。阿碼科技產品經理吳明蔚以Twitter蠕蟲為例,總共出現了六代,這些駭客用的是OWASP排名第一的CSS,而針對這個普遍的弱點,各家工具都有修復問題的標準答案。

然而同樣的問題,Twitter團隊修了好幾次仍不成功,前後經歷兩周才真正解決。他認為原因在於:「應用程式能否套用標準答案,與使用情境有關,如何調整才能達到最佳效果,要視情況而定。」所以,顧問的資訊安全經驗的充裕度與專業度,是企業選擇廠商時必須考量的重點。


適用於打算在開發的早期修復弱點的企業
白箱測試(White-Box Testing)與黑箱測試(Black-Box Testing)在測試領域是由來已久兩種模式,各有優缺點,主要是應用時間點的不同。

就軟體開發而言,在開發的早期搭配靜態程式碼安全性檢測工具,可以盡早發現不安全的寫法,再加上黑箱測試手法無法找出弱點的問題所在,所以採用白箱測試工具,修復漏洞的成本與效率是優於黑箱。

綜觀此次採購特輯的4家產品的特性,各家都兼具白箱、黑箱測試手法的產品,甚至包括資訊安全風險管理平臺。不過,側重的層面仍有所不同。

除了上述4家產品的解決方案之外,其實軟體品質領域和軟體生命周期管理領域的廠商,例如DevPartner、ParaSoft及微軟的Visual Studio,也都在資訊安全的檢查上有所著墨。

主要的差異在於支援語言的多寡、弱點說明與修復建議的詳細程度、規則數量及更新頻率、與軟體開發各階段的整合方式,以及資安顧問的服務,企業可依著重的面向選擇適合的產品。


偵九隊:個資外洩絕大多數源自網站的漏洞

Web應用程式最新十大安全漏洞

<圖表>軟體的安全漏洞逐年激增
<圖表>靜態程式碼安全性檢測產品規格表


解開程式碼安全檢測的10個疑問
做好程式碼的安全性檢測,抓出不好的程式寫法導致的資安漏洞,才能防範門戶洞開的情況
● 在程式碼安全性檢測方面,黑箱與白箱的檢測手法有何不同?
● 黑箱會不會比白箱測試更可靠?
● 工具會有誤判的問題?
● 工具抓出來的弱點越多表示越厲害?
● 修正建議真的有助於解掉程式碼中的安全性弱點?
● 導入安全性測試工具後,我們就不需要滲透測試了?

<圖表>自動化工具與滲透測試的比較


用戶經驗談
● 逢甲大學地理資訊系統研究中心 結合開發環境檢測,盡早修復弱點
● 關貿網路 開發流程結合源碼檢測,把關軟體安全
● 經濟部水利署 現行專案需通過檢測,舊專案則限期改善


產品報導
阿碼 CodeSecure 3.4.2
Fortify Source Code Analyzer 5.6
HP DevInspect 5.1
IBM Rational AppScan Developer 7.8

《詳細內文請見iThome電腦報405期(www.ithome.com.tw),天瓏、誠品、何嘉仁、搜主義、敦煌、法雅客、Page one書店均有銷售》


405期其他精采內容
.焦點新聞:新式水平空調系統不需戶外機
.焦點新聞:1TB硬碟跌破3千元
.CIO TALK:彈性運用IT委外策略 高雄捷運公司IT精省有道
.IT實戰:用AIK建立Vista自動安裝光碟
.採購指南:如何採購多主機板式x86伺服器
.程式人:沒時間讀 UML/OOAD 書之挑讀筆記最終回:分析癱瘓(六)
     拖垮OOAD專案的十大惡習/邱郁惠
.iT邦幫忙精選:如何評估網站效能瓶頸所在?/建置RAID 6的必要性?/如何評估網路電話的建置?