2014年3月17日 星期一

資安系統設計與網站安全漏洞 - 從遠通電收eTag系統談起

資安系統設計與網站安全漏洞 - 從遠通電收eTag系統談起

一個良好的系統,必須要包含以下幾個要素:可靠性(Reliability)、可用性(Availability)、可擴充性(Scalability)以及安全性(Security)。 提供一個不出錯、系統不中斷、可依照需求擴充調整系統規模、低資安顧慮的系統,是理想系統必備的條件。日前「遠通電收」系統問題、資安事件,造成不小的風波。我們單就其中系統的設計問題以及安全漏洞來探討系統應有的防護。

1.可靠性
先從可靠性出發,這次 eTag 系統最令人詬病的就是錯誤扣款問題,包括重複扣款、未行經卻扣款、甚至帳戶金額歸零等問題。若一個與金流有關的系統有著可靠性的問題,廠商必須嚴格從頭檢視系統的問題。紅外線感應裝置的問題多屬硬體技術問題,必須委請專業廠商測量有效的偵測接收範圍,避免錯誤偵測問題。但帳戶金額錯誤的問題實屬嚴重,排除人為疏失,通常為資料庫出錯。廠商必須確認所有系統資料庫的呼叫是否有採用正確的 Transaction(交易)及 Lock(鎖定)機制,避免不同的設備、系統重複寫入資料庫,造成資料庫數據錯誤。

2.可用性與可擴充性
大型網路服務的規模龐大,系統的可用性通常也會根據規模,透過系統的可擴充性調整,如 eTag 此類全國行車民眾會經常使用的系統。系統設計初期,必須要預先評估使用者用量以及伺服器承載量,包括終端設備資料的寫入以及使用者面向的操作使用。評估的方式除了一般使用量之外,也必須要考量尖峰使用量,並且要預估若系統遭到異常大量流量攻擊時,能夠承受的極限值。異常流量的攻擊除了依靠網路資安設備阻擋之外,若系統的承載量沒有隨之調整,也很容易因為設備的過載而造成系統中斷。系統的可擴充性是目前雲端時代系統開發的要點,應可以依照需求調整主機、設備的數量擴充系統承載,而不需改寫程式碼。若在雲端服務上佈署,也可以呼叫雲端 API 自動根據需求擴充伺服器。


3.安全性
資安問題一直都是所有系統最頭痛的點,也是最難根治的點。目前我們看到一般系統的漏洞多半來自開發者的資安概念不足,而在專案層層轉包之下,程式的品質也無法控制。

開發過程中--
系統在開發過程中,應該遵循嚴謹的安全程式碼開發原則(Secure Coding),並且在開發的流程中導入測試,以防開發出含有安全疑慮的程式。若開發人員足夠,強烈建議施行程式碼審查(Code Review)制度。在此制度下,程式撰寫人員提交程式碼後,必須先經由資深開發者檢視,無問題後再合併至專案中,以確保專案的品質。開發的環境也必須與正式上線環境切割,以免開發過程中的殘留檔案在上線環境中,間接透露系統資訊或開發者後台給攻擊者。若開發人員的資安概念不足,應儘速委請專業資安顧問進行安全開發教育訓練。

系統上線前--
在系統上線前,更要委託專業資安團隊進行滲透測試,以人工的方式模擬攻擊者的思維檢視系統、找出漏洞,並且針對漏洞進行修補。資安團隊的選擇非常重要,如果測試團隊專業知識不足,僅使用自動化工具掃描交差了事,將無法找出諸多安全風險,例如常見的邏輯錯誤。eTag 網站中日前的查詢費用系統,僅設計使用身分證字號進行查詢。若有心人士使用工具針對車號、身分證字號進行暴力法攻擊(Bruteforce Attack)掃描,將可以列舉出其餘民眾的資料。而日前民眾指出,輸入錯誤身分證字號也能查詢金額,代表系統未經過嚴謹的邏輯測試。

eTag 系統這次最大的問題在於網站漏洞,在網路上一記事網站 Pastebin 有攻擊者張貼漏洞細節,任意使用者可以透過網站直接下載伺服器內部的資料 ( http://pastebin.com/mGk2bpXx ),包括系統設定、網站原始碼以及其他伺服器資料。如果系統中含有個資或者是其他機敏資料,後果將不堪設想。此種漏洞是基本的本地檔案讀取(Local File Inclusion)漏洞,利用目錄走訪(Directory Traversal)的技巧,存取伺服器中的機敏檔案。這個漏洞也包含在 OWASP 2013 Top 10 十大安全弱點中的「A4 Insecure Direct Object References (不安全的物件參考)」,屬於非常常見的安全漏洞。若系統含有此類漏洞,可想而知系統上線前並未經過完整的安全測試。

除了檔案讀取漏洞之外,系統中的圖形驗證碼(CAPTCHA)也有著安全的疑慮。CAPTCHA 通常是用來防止攻擊者使用自動化攻擊程式進行掃描。圖形的複雜度以及驗證的方式都會直接影響 CAPTCHA 的安全性。eTag 網站上的 CAPTCHA 複雜度屬於簡易,雖容易遭到駭客使用圖形辨識(OCR)方式破解,但考量到民眾的易用性,是可以妥協的範圍。但是該 CAPTCHA 的認證方式卻有很大的問題。在網站 form input 中所傳遞的亂數 validCode 與 CAPTCHA 圖片文字的組合永遠相同,並且沒有阻擋重送攻擊(Replay Attack),因此攻擊者只要記住此 validCode 與圖片文字的配對,重複送出即可繞過 CAPTCHA 防護。此類型問題通常只能依賴具備良好資安概念的測試人員人工檢測才有辦法發現。

目前遠通電收網站上已經都將大部分安全問題修復,但是對政府、企業的傷害已經造成,民眾的不信任感短時間內難以消弭。廠商必須更嚴謹的面對往後的所有事件,並且及時委請專業團隊進駐進行安全檢測、安全防護,以防止更大的危害造成。台灣企業間的專案轉包生態已是常態,如何去管理專案、控管良好的程式碼品質以及安全性,將會是台灣企業面對資訊安全時最嚴峻的挑戰之一。

轉載自《資安人》