iThome

根據美國電腦網路危機處理暨協調中心(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排名第一的XSS,而針對這個普遍的弱點,各家工具都有修復問題的標準答案。

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

適用於打算在開發的早期修復弱點的企業

白箱測試(White-Box Testing)與黑箱測試(Black-Box Testing)在測試領域是由來已久兩種模式,各有優缺點,主要是應用時間點的不同。

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

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

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

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

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

駭客透過各種手法滲透到Web系統竊走資料,成為網站業者最害怕的夢魘。根據阿碼科技的分析,個資外洩事件衝擊企業營運,影響時間可能持續1~2年,而且業績至少掉4成。

即便承認發生個資外洩有損商譽,多數企業仍願意主動配合偵九隊的調查,因為他們希望盡快找到原因,才能避免事件持續擴大,並挽回消費者信心。

處理的過程大致如下:偵九隊偵查的第一步,會請IT人員清查內部的系統,只要查閱記錄檔(Log),就可以看出有多少客戶資料外洩。此外,相關負責人員必須到偵九隊做筆錄,並提供相關的資訊。

雖然不能保證可以馬上破案,偵九隊表示,一般都可以追查出受駭的源頭。只是網路犯罪的調查程序複雜,需要耗費很長的時間偵辦,例如2008年破獲的兩岸駭客聯手盜走個資的例子,耗費了一年的時間才宣告偵破。

而罪魁禍首的下場,偵九隊不諱言,這些駭客大部分都逍遙法外,因為他們幾乎都是對岸的網軍(軍方有系統培育的網路駭客)。不過,他們至少可以追查出臺灣這邊幕後購買資料,並從事不法勾當的有心人士。

事實上,企業本身對於個資是否真的外洩,通常是狀況外。當相關單位介入調查,清查的對象首當其衝是內部的員工。不過,依偵九隊的經驗,絕大部分個資外洩事件,是源自Web應用系統的漏洞,員工盜取資料的例子目前並不多見。

 

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

此分列表是CVE(Common Vulnerabilities and Exposures)根據所有提報弱點的統計,由於包含非Web相關的弱點,所以常見的Web應用程式弱點,例如XSS、SQL Injection的占有率相對被拉低,實際上的經驗,XSS會超過50%,SQL Injection則約25%。而有些低占有率的弱點排在前面,是因受重視程度及未來趨勢調整的結果。(資料來源:OWASP、阿碼科技,iThome整理,2009年6月)

 

 降低資安風險的Web開發注意事項 

資訊安全需要考慮的層面非常廣泛,也因此讓開發人員感到眼花瞭亂,4家靜態程式碼安全性檢測廠商提供的建議包括:

●使用者輸入的資料都要視為不可信任的資料

●不可信任的資料都需追蹤流向

●當資料離開系統或者接近敏感區域時(例如資料庫),要做檢查

 

陳宏一(鼎鼎聯合行銷技術管理部經理)

●會員資料傳送需全程以HTTPS進行。

●HTML表單輸入,建議多加CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart,區分電腦與人類的全自動圖靈測試)驗證碼,避免程式自動化方式侵入。

●透過HTTP Filter的設計方式,確保每個頁面是以網站所設計的流程進行,而非由外部非法直接連入。

●使用者的登入機制上,強烈要求密碼強度。

●開發階段即套用資安檢驗工具,在未上線前即做到初步安全性檢核。

●系統有異動的話,上線前建議以動態程式碼安全性檢測工具,再進行全面性的黑箱測試。

●HTML表單的隱藏變數,避免傳遞個資、密碼等敏感性資料。

 

王建興(iThome程式人專欄特約作者、雲義科技研發部協理)

●許多伺服器遭受緩衝區溢位(Buffer Overflow)的攻擊,是因為開發者在處理記憶體中的資料時,沒有留意到所配置的空間大小是否足夠,對此,像Visual C++之類的開發工具,已經提供strcpy_s及emcpy_s之類的函式,可取代strcpy及memcpy,協助開發者寫出更安全的程式碼。

 

李明儒(微軟最有價值專家)

●企業應從架構上拆解,用現成的內建功能或其他元件去處理資安問題,不要放任開發者自己寫。不寫就不會犯錯。

 

 靜態程式碼安全性檢測產品規格表 

 

【相關報導請參考「靜態程式碼安全性檢測採購大特輯」】

熱門新聞

Advertisement