觀點

網站被駭? 利用Web Profile保護網站

2009 / 09 / 07
林恆生
網站被駭? 利用Web Profile保護網站
在大型企業或資訊服務供應商,有為數眾多的程式開發人員、系統維運人­員以及資訊安全人­­員,為了能夠確保提供最安全最穩­定的網站應用服務,各不同角色彼此之間的合作與資訊就必需要更加的緊密,以避免出現環節之間產生的脆弱點所造成的資安風險。


脆弱環節及網站應用

獨特性造成的難題

網站應用程式常常因為應用需求本身是多樣化及具有獨特性的,各式不同的需求導致網站應用程式在防護安全沒有絕對的標準,因此一般的標準防護產品或是防護措施往往只能滿足一些基本駭客的工具攻擊行為,針對真實的駭客攻擊,應該考量每個網站應用程式的獨特性與特殊性進行設定與防護,並考量完整網站環境的各項狀況,才有可能全面的防護,也因此,在滿足內部網站安全需求的同時,我們透過 Web Security Profile 這個概念與實行來緊密連接各個環節,在未來對外提供網站安全防護服務時,將以這個概念為基礎,在技術上連結不同的工具產品與服務來建構客製化的Web Security Profile,以整體運作環境的觀點,預先防範網站可能暴露出的資安風險。

 

網站遭受駭客入侵!!這是最近這幾年來,許多單位碰到的一個頭痛問題。許多網路管理員因而被質疑是否怠忽職守而導致網站遭受入侵,然而事實上,造成網站被駭客入侵的原因相當多,有可能是網站應用程式的邏輯缺陷造成漏洞,亦或是程式本身的設計缺陷,當然也有可能維運人員因為不了解應用程式的運作,導致各伺服器主機上的權限設定錯誤造成。這麼多的可能因素,都會造成網站遭受入侵的結果。“Weakest Link”反映在網站問題上,就是程式開發人員、系統營運人員以及資訊安全人員之間的連結如果不夠緊密所產生的脆弱點。

 

提出建立網站安全描述(Web Security Profile)的想法,主要就是利用對網站的各項描述,來連接這三方角色,讓系統營運人員能夠提供適當的權限與設定來滿足服務的需求,碰到資安事件時,資訊安全人員能夠正確的判斷問題以及提供適當的處理措施,也讓系統開發人員能夠在交付程式的時後,再確認安全規格以避免資安問題的產生,透過Web Security Profile對網站應用程式的完整描述,提供以整體的角度非單一面向來評估解決資安問題。這就是Web Security Profile所應該扮演的角色。

 

何謂Web Security Profile?

Web Security Profile定義是對各項權限的描述、應用邏輯的描述、公開介面的描述以及基線(Baseline)進行描述,而這些描述的建立與維護是分別在應用程式規劃發展時期、營運時期以及定期檢核等階段,而該份文件的描述範圍是以營運網站所有關於安全性考量對應的項目為範疇,例如程式碼、網頁元件程式庫、網頁及資料庫伺服器等,這些維護項目與安全相關的描述文件,就是該營運網站的Security Profile透過該份文件,資訊安全人員可以用來規劃出各項的網站防護機制與應變機制,系統維運人員也可透過該份文件來妥善的規劃應用程式所需的相關權限,對程式開發人員來說,它就是一個開發階段的規格與規範,在交付前必須做的安全性檢核。


說到Security Profile 的方法,早期經常被使用在異常行為入侵偵測器(Anomaly-based IDS)上,主要的概念是透過統計或學習的方式去產生正常行為的描述模型(Normal Behavioral Model),利用正常行為的標準模型比對出異常行為。延伸這個概念到網頁應用程式,市場上最近相當熱的網站應用程式防火牆(WAF, Web Application Firewall),許多廠商都有提供這類的功能,利用學習正常網頁瀏覽的行為來建立每個網站各自的Profile,並用來辨識異常的行為,阻擋對網站的惡意攻擊。在這裡,我們根據這樣Profile的概念,擴大涵蓋範圍到整個網站安全相關的範疇,建立各項安全描述,如圖1所示,相關的描述項目應該包含如下

1.權限與設定的描述

包含網站各目錄所需具備的權限、網站伺服器的權限、後端資料庫的使用權限等。以最小權限(Least Privilege)的概念去規劃配置的權限,才能避免權限錯誤造成的影響,這一兩年多來造成大規模的網站掛馬事件,Mass SQL injection自動化攻擊除了利用網站應用程式輸入參數檢核的漏洞之外,更是利用對應用程式在資料庫伺服器使用權限配置錯誤所造成的攻擊手法。權限與設定上的正確需仰賴應用程式的相關規格描述,定期對權限與設定進行檢核,可避免駭客入侵後取得過高的權限,而造成更嚴重的損失。

2.應用邏輯的描述

對網站應用程式運作流程的描述,例如像是電子商務交易流程、帳號密碼驗證流程、檔案上傳流程等等。這些流程的描述,可提供資訊安全人員針對使用的技術是否存在缺陷或漏洞等風險進行評估,也可利用外部提供的滲透測試服務針對商業邏輯上進行檢核,避免運作邏輯錯誤造成的損失。常見的問題像是Authentication Bypass等。

3.技術規格的描述

包含像是網頁頁面的參數、應用程式所使用的函式庫或是元件庫等。這部份的描述很自然的在應用程式設計發展階段,就應該被明確記錄於軟體設計規格書中,並提供給軟體品保人員進行相關檢核。將這部份的資訊涵蓋進入Web Security Profile最大的目的是,透過這些具體的技術規格描述,在做營運規劃時的權限與資源配置,就能夠提供營運人員參考,並提供資訊安全人員的風險評估。另外,也可搭配像是應用程式防火牆等資安產品提供更細微更客製化的網站防護。

4.基線的描述與建立(Baseline)

像是檔案指紋庫建立與檢查(SIV, Signature Integrity Verification)或是開放的外部連結清單(白名單或是黑名單)等。建立了基線標準的好處是,提供明確判斷異常狀況,僅需要透過簡單的基線比較。但是這個基線方式的缺點,就是如果網站應用程式是經常處於變動環境之下的話,基線標準相對就較難建立了,所以基線的建立與維護得視每個實際應用程式的環境而有所不同。

基本上,基線建立的好處,例如當網頁程式碼遭受到惡意竄改或是網站被植入了網馬等狀況,檔案指紋庫的比對是可以幫助找出這些異常的變動;另外像是論壇頁面被駭客惡意植入惡意的連結時,也可以透過外部連結白名單比對,拒絕這個惡意連結在論壇上的發佈。然而維護這份白名單,需要額外的成本,且成效因為應用程式的環境不同而不同,評估使用時須考量實際環境。

建立Web Security Profile來防護網站安全

理想上,於程式開發完成後,品保人員會去檢核應用程式是否有缺陷,應用程式人員會提出所需要的權限與資源,而營運管理人員根據需求,進行相關的權限規劃與管理,此時對應用程式所需使用的權限與資源就必須做一次完整的安全性評估,避免違反最小權限原則(Least Privilege)。然而,在實務上,常常因為案子上線時程的壓力,資安的問題往往被忽略,遑論提供各項安全描述說明文件來建立所謂的Web Security Profile,所以安全上的問題通常是仰賴具有經驗與資安素養的程式開發團隊來自我把關,也因為素質不一,導致每個團隊或個人所開發出來的網站應用程式安全品質不同。

此外,以網站而言,許多公司都採取委外開發,當系統驗收後就直接交付營運人員上線使用,也因此許多目前營運中的網站,其實存在許多未被發現的資安漏洞,這也是導致這一兩年來的網站自動化攻擊之所以造成這麼大影響的原因。因此,除了倚賴程式開發團隊提供規格資訊來建立Web Security Profile之外,亦可利用許多資安產品、工具或是服務來協助建立Web Security Profile,並結合應用來防護我們的網站。

 

自動學習網站介­面參數型態

阻擋惡意輸入攻擊

網站介面參數的檢核不完整,往往提供了駭客絕佳的滲透進入點。在許多公司以委外開發的網站應用程式裡,這樣的檢核完整性不見得在驗收階段時能發現這些潛在的資安漏洞。在驗收階段,可委託第三方對程式原始碼進行安全檢測(源碼檢測服務,Code Analysis),可以協助找出應用程式可能存在的滲透點,亦或是利用網站應用程式防火牆這類的資安產品所提供的Profiling功能,利用Sniffing、Crawling等被動或主動的方式建構出網站每個頁面的可能參數型態,再產生白名單為基礎的過濾器提供網站應用程式防火牆阻擋惡意的攻擊輸入字串。

 

利用Sniffing這樣的技術來建立參數的描述文件,優點是減少人工的建立成本,缺點是必須側錄一段時間的正常網站流量,這過程又被稱做是學習階段,而學習的結果往往會隨著行為的差異而有些許的不同,此外在學習過程中,如果有部分的網站攻擊流量也一併被視為是正常行為,也可能導致學習結果的不正常。

 

利用滲透測試服務

檢查應用程式商業應用邏輯

前面文章提到的應用邏輯的描述,最大的目的是定期的檢視該應用邏輯是否安全,使用的技術是否被發現新的漏洞。應用程式的商業邏輯,通常是在應用程式設計規劃階段就已經確認,而在應用程式技術實作階段,卻有可能因為使用技術的不同,而導致網站應用程式暴露在資安風險而卻不自知,完整的網站滲透測試服務除了利用工具找出可能的滲透點之外,也應該能夠對商業邏輯的流程以及技術實作方面進行檢核,因此挑選滲透測試服務時不僅只是考量該滲透測試團隊的經驗而已,更須考量團隊成員的專業領域,如果團隊成員多數都有應用程式商業邏輯設計評估經驗的團隊,也就更可能提供完整的商業邏輯缺陷上的檢視。

 

常見的商業邏輯缺陷像是帳號密碼驗證的邏輯錯誤、商業交易的各項流程使用技術錯誤或是檔案上傳上稿頁面的錯誤等等。在實務上,有許多業者將網站應用程式外包,交付系統的同時,並未要求系統開發商交付軟體設計規格書,也因此無從了解這些細部商業邏輯運作所可能產生的風險。專業的滲透測試服務,能協助對應用程式的運作邏輯進行檢核,再將運作邏輯評估結果記錄於Web Security Profile,以提供定期的審查檢視,避免因為使用技術被發現新的攻擊手法時,卻仍然不自知網站已經不再安全穩固了。

 

基線的建立與網站防護監控

有了基準線,監控的指標項目會更加明確。明確的監控指標常是許多提供資安監控服務業者的兩難,市場對提供資安監控服務業者的期待是包山包海的監控,只要有風吹草動的異常,就務必要進行監控與通報,然而,真的這樣做只會造成業者與客戶對非真正構成威脅的假警報疲於奔命,這也導致對於警報事件使否需要通報沒有明確的標準,成為監控上的主觀認定的模糊線。針對監控指標規劃並建立基準線,讓監控目標明確,成效明確,這是提供監控服務業者必須努力的方向。

 

在技術上,基準線通常也搭配不同的感測器(Sensor),在監測到超過基準線後立即進行通報。而根據網站威脅常見的問題像是網頁竄改(Defacement)、網馬植入、惡意連結植入、網頁掛馬等,對應的檢查基準線包含網頁程式異動檢查,惡意連結植入檢查等,每種技術對問題解決都有不同的涵蓋面,有效的串聯才能提供完整的網站防護監控。

 

Web Security Profile協助掌握現況
發掘潛在風險

針對具獨特性的網站應用,集合權限描述、技術規格、應用邏輯、基線標準的描述文件,提供資訊安全人員定期檢核,以避免實作技術被發現新漏洞所暴露出的風險,也提供資訊安全人員及營運人員規劃出適當的防護機制,並在應用程式的功能改版時,快速提供整體性風險評估的參考資料。透過這份安全描述文件,連結了系統開發、系統維運以及資訊安全人員有了共通的文件,同時透過對完整環境的評估後,所規劃使用適當的資安技術與產品,完整串連了技術上的防線,避免脆落連結暴露出的資安風險。

本文作者為關貿網路營運服務群資安工程師