iThome

用戶經驗談:逢甲大學地理資訊系統研究中心

 結合開發環境檢測,盡早修復弱點 

逢甲大學地理資訊系統研究中心不只是學術單位,他們自成立以來,便接受公、民營機構委託承辦各類型研發計畫及專案,內部開發團隊有將近40位成員。

他們承包的專案非常多元,只要是與地理相關的性質,例如農村再生、環境觀測、2D和3D的地理圖像及運輸管理等,甚至宗教盛事媽祖繞境活動也有參與。

內部舉辦研討會,交流資安方面的觀念

正因為研究中心服務的對象包括政府單位,而目前所有B級的政府單位都必須通過資訊安全相關的認證,所以他們開發的系統,也要設法符合政府的安全性要求。

過去研究中心對於資安的作法,是舉辦研討會,透過內部交流的方法,強化安全性方面的開發知識。

不過,在資安問題持續受到重視的情況下,資訊中心從97年開始接觸相關產品,實際比較各家方案之後,今年初決定導入Fortify的Secure Code Analyzer,讓安全相關的問題在開發階段就可以及早發現,以降低修復的成本。

顧問的協助對工具有加乘效果

至於選擇Fortify的原因,逄甲大學地理資訊系統研究中心副總工程師林哲暉表示:「SCA的報表很詳細,對我們而言,除錯比較有依循,而且叡揚資訊的支援也很完整。」

林哲暉所謂的支援不只是針對產品本身,他說:「技術的支援不是只教導使用者如何操作,針對弱點的部分,顧問也會告訴我們該怎麼修正。」

除此之外,這類產品多少會有誤判的情況,而叡揚的顧問會指導他們如何設定規則,減少誤判的機率。

開發者的資安觀念也因工具而成長

逢甲大學地理資訊系統研究中心導入SCA之後,現在已應用在各個專案,例如他們現已結合Visual Studio的開發環境,開發者可以在撰寫程式時,隨時執行安全性檢測,及早更正不安全的程式寫法。

不過,程式的掃描畢竟需要時間,執行一次可能要等上幾分鐘甚至10多分鐘,所以針對比較大型的專案,研究中心是採用排程的方式,定期執行安全性掃描。

不過,SCA掃出來的弱點,研究中心不見得會要求全部修改。林哲暉強調,「Hot」等級的弱點一定要改掉,「Info」部分的問題未必會產生威脅,也許在下次遇到同樣情況時,改用較安全的寫法。

事實上,透過工具的輔助,內部成員對於安全的開發觀念也有成長,該單位的系統工程師林嘉成表示:「以前用字串組合SQL是很直覺的想法,經過教育訓練及工具的說明,才知道這種做法是很危險的。」

由於研究中心已通過CMMI Level 2的認證,所以安全性檢測已融入CMMI 的流程領域(Process Area)中,程式碼在稽核過程一定要產出相關的文件,工作才算通過。系統交付到客戶端時,也會檢附相關報告。所以對於工具抓出來的漏洞,開發者沒有閃躲的機會。

 

用戶經驗談:關貿網路

 開發流程結合源碼檢測,把關軟體安全 

隨著資安議題越來越受重視,關貿網路成立了「網安服務課」,負責規畫內部開發及服務客戶所需的安全相關政策與機制,並在2008年導入靜態原始碼安全性檢測工具阿碼CodeSecure,目前所有專案在上線之前,都需要先通過該系統的檢查。

人工審查雖精確,但結合工具才能更全面

事實上,關貿在導入CodeSecure之前,已建置一套品質保證的流程,系統上線之前,需經過人工程式碼審查(Code Review),審查人會依據內部制定的關於程式碼品質及安全性條例,抽查程式碼的寫法。

人工的檢查雖然精準,但是效率畢竟不及自動化工具,再加上無法全面檢驗,所以關貿從2007年開始,評估各家靜態程式碼安全性檢測工具。

網安服務課評選產品,除了價格考量,也評估功能、支援的語言、更新頻率、廠商的服務與技術能力等,花了1年的時間,最後決定導入CodeSecure。

選擇的原因,該公司的資安顧問王瑞祥表示:「由於產品是阿碼自行開發,研發團隊就在臺灣,所以可以快速回應我們的需求。」

關貿網路營運服務群網安服務課資安工程師劉名旂舉例說明:「我們希望CodeSecure支援Struts、Struts 2等Java框架,這方面阿碼有承諾而且已做到。」事實上,阿碼科技的辦公室就位在關貿的樓下,所以雙方溝通也很方便。

另一個原因,是關貿的程式碼透過CVS(Concurrent Versions System)控管,CodeSecure能進一步整合這方面的機制,不像其他產品大多是專注在開發工具的整合。

由於關貿內部大約有120名工程師,因此基於成本考量,目前是在專案上線前執行程式碼的安全性掃描,如果專案團隊希望在開發過程中做檢查的話,可以與網安服務課預約時間加入排程。

參考工具建議,研發統一解法

從開發者的角度來看,程式沒有臭蟲,且能滿足客戶的需求,就是不容易的事。所以導入CodeSecure,對他們而言或多或少拖延上線,造成負擔。所以難免私底下有小小雜音。

所以王瑞祥強調:「我們推動的方式,是要先取得高階主管的支持,並持續與開發者溝通,最重要的是採漸進式推動。」關貿從小規模的試行專案開始,慢慢訂出流程與原則,然後才召開說明會,盡量解決眾人的疑慮與困難,訴求兼顧方便又可以達到安全。

雖然CodeSecure會提供修正程式弱點的建議,但劉明旂表示:「關貿不可能讓開發者用各自的方法解弱點。」這樣很像貼狗皮膏藥,會變得沒有規範,即使這次檢測過了,仍可能有解法不夠好、強度不夠深的問題,也許駭客多花一點時間就可以攻破。

所以網安服務課的作法,是收集各專案的弱點,分析問題、提供統一的解法。關貿甚至自製函式庫(Library),開發者只要參考內部的案例文件,了解原因和建議寫法之後,直接套用即可。

這樣的好處,是如果將來對於安全的要求有所改變時,只需要更動函式庫或框架就好。後續網安服務課也規畫導入研發部門設計的框架(Framework),企圖從架構面解決安全的問題。

工具與流程結合,才能強制開發者落實安全的寫法

事實上,關貿在導入CodeSecure之前,已經透過教育訓練的方式,逐步地強化開發者的資訊安全觀念。而導入後的最大差異,在於有工具結合到開發流程中,落實安全的程式開發。

以前開發者若存有僥倖心態未依照內部的安全規範撰寫,未必會被發現。而CodeSecure導入到流程之後,至少會在程式上線之前,由它做最後的把關,不安全的寫法在工具的掃描下無所遁形,於是開發者被迫一定要採取兼顧安全的寫法,相對就提升了資安的知識。

現階段,關貿手上開發的各專案在上線前,都必須經過CodeSecure驗證的關卡。王瑞祥表示,長遠來看的目標是,要求每個開發人員的開發工具都外掛CodeSecure的掃描機制,以利在開發的早期就結合掃描機制,提升程式碼的安全性與品質。

 

用戶經驗談:經濟部水利署

 現行專案需通過檢測,舊專案則限期改善 

水利署是個每年執掌預算多達數百億的單位,因此在資訊安全方面,也特別受到兩岸駭客的關注。所以外部防禦方面,如防火牆、IDP(Intrusion Detection and Prevention,入侵偵測與防護)、防毒等機制早已齊備。

到了2007年,該單位的資訊室將重心轉向Web應用程式本身的安全性問題,因此開始評估程式碼安全性檢測工具,當時相關的參考資訊並不多,後來預算允許的情況下,導入Fortify Source Code Analyzer。現在所有開發中的軟體專案,都必須階段性地接受SCA的掃描,風險高的弱點必須修正完畢,才能驗收上線。

透過工具檢驗,才能徹底控管

在導入Source Code Analyzer之前,資訊室的同仁為了把關負責系統的安全性,上網搜集了許多檢測的小工具,甚至整理出一套相對應的處理方式。但是經濟部水利署資訊室主任楊正德分析,2006年以前的駭客不算兇,大陸的「網軍」在這兩年才變得可怕,所以導入程式碼安全性檢測工具還是勢在必行。

事實上,水利署對內、外的Web應用系統,大多數是委外開發,只有小部分是內部建置。楊正德認為:「如果沒有工具檢驗,只是靠書面的注意事項,概括說明資安規範,專案的品質很難控管。」

一般認為驗證外包廠商的開發品質,運用黑箱測試工具即可,並不需要細究底層的程式碼。不過楊正德認為,直指問題程式碼才不會給廠商推拖的機會。所以水利署在專案進行的過程中,要求廠商每隔一段時間接受Source Code Analyzer的檢測,掃描程式碼是否有安全性弱點。

事實上,合作廠商也樂見這樣的把關機制,因為工具不但能抓出不安全的程式寫法,還提供修正建議,所以要解掉問題並不算困難,對他們而言,降低上線後出狀況的機率也是有好處。

針對合約結束的專案,採軟硬兼施策略

然而,一些合約已經結束的廠商,就未必樂意配合。對於那些已經結案的系統,水利署現在回頭檢查程式碼,並要求廠商限期修正,其實已不具強制力。

這方面楊正德採取三種策略,第一種是軟硬兼施,除非廠商決心未來不再合作,否則請在一定期限內修改完畢。雖然配合的積極程度不高,大部分廠商還是有逐步地修復弱點。第二個策略是針對緊迫性不強、使用客戶不多的系統,直接切斷對外連線,只允許內部運作。

最後,面對廠商無法配合修改,又不能切斷對外連線的系統,目前採用網頁應用程式防火牆(Web Application Firewall,WAF)過濾可能的攻擊行為,算是「治標不治本」的權宜之策。

現行專案不允許存在高風險等級的弱點

資訊室第一次使用SCA掃描,產出的報表嚇壞一票人,因為有幾萬個弱點!雖然風險程度有低/中/高的差別,不過,負責人苦惱地說:「一輩子也解不完。」後來漸漸了解之後,才知道系統是採取嚴謹的檢驗方式,所以才這麼多,而且不是每個弱點都會造成威脅。

而且有一些弱點可能叫用了同一個不安全的物件,楊正德回憶解弱點最有效率的一次經驗是:「當時請逢甲大學的高手來幫忙,竟然只是改了一小段程式,高風險弱點當場就少了4,000多個。」

現階段楊正德的策略就是,他要求現行的專案不能存在等級為「高風險」的弱點,至於其次「警告」和最低「資訊」類的風險,就不強制要立即修復。畢竟水利署是一級的公家單位,資訊安全方面的把關馬虎不得。

 

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


Advertisement

更多 iThome相關內容