2009年11月6日 星期五

[觀點] 網站應用服務安全防護之道

「我們的網站從來沒有發生問題,程式也運作得很好,有問題你先來攻攻看!」這是最近我從一位壽險業者口中聽到的話,除了感佩他的勇氣之外,也為這家業者和使用者捏了一把冷汗,原因是近來和網站有關的入侵攻擊手法,除了常見的使用者端網路釣魚與鍵盤側錄木馬程式之外,已經逐漸轉移到針對特定網站應用服務的攻擊。

由於以往傳統的蠕蟲、阻斷服務等針對網站伺服器的攻擊手法,在企業佈署了防火牆和IDS/IPS入侵偵測防禦等設備之後,都可以有效的阻擋,讓許多企業因此而卸下了心防。不過,若是採用像SQL Injection、Cross-site Scripting等利用正常連線方式,但卻夾帶著惡意指令與參數的攻擊,一旦網站存在著應用程式的漏洞,其重要的機密資訊像是使用者帳戶資料,就會在不知不覺中一點一滴地被竊取帶走。

防還是不防?這是一個重要問題!

讓我們先來看看,如果針對網站應用服務的惡意攻擊成功了,對於企業所造成的衝擊與影響有哪些:
  1. 使用者身份帳號與密碼遭竊取
  2. 打擊商譽及使用者信心
  3. 擾亂金融秩序
  4. 交易服務崩潰停擺
  5. 網站頁面損壞與資料遭篡改
  6. 損害賠償與回復清除之成本
  7. 非授權者存取到未公開或機密的資料
以上所提到的每一項,對於提供應用服務的企業都是難以承受的,因此在防與不防之間,企業必須根據所提供的關鍵應用服務來加以判斷。目前,提供網站應用服務的企業,主要以金融、購物等電子商務網站居多,但是也有包括製造業供應鍊上下游廠商等的應用系統,這些主管網路安全的人員,經常會犯下的錯誤有二個,一是太依賴防火牆和入侵偵測防禦系統的功能,二是完全忽略了不安全程式碼的問題。

對於一般防火牆來說,通常只有針對連接埠和通訊協定所維護的來源至目的地清單進行安全防護,而應用程式的攻擊,則是運用合法的網路通訊協定與連接埠作為掩護,防火牆會將之視為正常連線而不加以阻擋,因此,防火牆可以有效阻絕網路層的資源存取,但是對於應用層的存取防護卻無能為力。

至於入侵偵測防禦系統是著重在網路與系統的安全,主要針對網路層或是特定應用程式的弱點,以特徵比對的方式來進行過濾和警告,但是面對夾帶組合參數的網路連線行為或是以SSL加密過的封包,是無法加以察覺的。換句話說,入侵偵測防禦系統與防火牆只能提供有限的網路應用服務保護能力,必須還要針對應用程式的Web payload作深入的檢測,才能有效防範這一類的攻擊。

加強程式開發人員資安觀念

除了安全設備之外,另一項重要問題就是企業忽略了應用程式中所存在的不安全程式碼,導致面臨受到攻擊的風險。從ISO 27001標準中我們得知,所謂的風險是因為弱點遇上了威脅才會產生,拿生活中的例子來看,像颱風對生活在台灣的民眾而言,就是一個存在且難以避免的威脅,而為了避免風災所帶來的危害,我們可以從建築物的結構與防水防洪設施去加強,來減少弱點碰上威脅的機會,同時也降低了颱風所造成的傷害。

反觀網站提供應用服務的風險,則是來自於隨手可得的駭客工具與攻擊手法(威脅),加上程式撰寫者的疏忽(弱點)所造成,所以對企業的資安人員而言,想要降低風險就必須從威脅與弱點來著手。只是,多數程式開發人員的第一要務,就是完成系統開發要求中的功能項目,而所謂的資訊安全問題,通常都會在完成系統功能驗收之後,隨著船過水無痕而消失無蹤,因此加強程式開發人員的資安教育,導入安全的程式開發流程,是資安工作中的重要一環。

未雨綢繆則有備無患

所謂「勿恃敵之不來,恃吾有以待之;勿恃敵之不攻,恃吾有所不可攻也」,具有危機意識,是資訊安全時代企業生存的必要條件,面對不斷翻新的應用服務攻擊,個人建議可從「預防」、「監控」、「稽核」等三方面來著手。

首先,在進行應用程式開發時,必須導入一個安全的開發流程(Security Development Lifecycle;SDLC),從需求、設計、測試計畫、程式碼、測試結果到回饋機制的每一階段,都必須以安全性的要求來一一加以檢視,而利用應用程式弱點掃瞄工具,能夠在開發階段即提供安全程式撰寫上的建議,預防可能產生的程式語法漏洞。

接下來,在應用程式正式上線提供網路服務之後,仍必須定期進行弱點掃瞄,並且在閘道端佈署一道網路應用層防火牆(Web Application Firewall),針對所有的網路連線流量一一予以檢查監控,應用層防火牆的好處是可以在網路伺服器之前,協助阻檔各項針對應用服務的攻擊,並且能持續監控連線行為,找出防範應用服務攻擊與漏洞修補的對策。

最後,在了解針對應用服務的攻擊風險之後,還必須分析記錄檔並進行資安稽核,確保漏洞都已經被修補,再藉由不斷地調整企業的資訊安全政策,來降低可能遭受攻擊的風險,以因應可能來自世界各地的網路應用服務攻擊。(本文於2007年4月刊載於CNET網站)

沒有留言: