觀點

Web Application Security─企業開給駭客的窗口

2005 / 12 / 26
陳瑞賢
Web Application Security─企業開給駭客的窗口

網路服務(Web Service)發展至今已經有好一段時日了,近幾年來網路服務也越來越多樣化,這代表著影響企業的潛在風險也越來越高。現在幾乎各大企業都有自己的Web Portal提供網路服務,一般網路使用者也開始習慣利用網路服務來處理各項事務,例如:收發電子郵件、線上購物、工作應徵等。只要打開瀏覽器,連結到想要存取的網站,輸入個人的認證資訊(帳號及密碼)就可以使用所需的服務。以使用者的角度來看,這是一項非常方便的機制;但這對一名駭客(Intruder)來說,卻是提供一個很好的入侵管道。
Web Application
什麼是 Web Application?其實Web Application是一個網路版的應用程式,透過連結Web Server讓使用者能在瀏覽器下執行該應用程式,最常見的有Web Mail、網路銀行(Online Banking)和線上購物(Online Shopping)等。 不過這些網路服務卻隱藏著高度的資訊暴露 (Information Disclosure)。在國際上一些知名的企業都曾經被駭客利用Web Application的弱點而成功入侵,導致企業承受極大的財務及名譽損失。例如:不久前中國反日行動的網路攻擊、鼎鼎大名的Barclays Bank Phishing Attacks事件以及微軟的Hotmail Input Validation Flaw等。這些攻擊都是利用網路應用程式的某一特定漏洞進行攻擊。

為何不安全?
Web Application Security是一項不太被重視的資安漏洞。對大多數的企業來說,這是一個比較陌生的領域,一般企業最常選購防火牆及入侵偵測系統來保護網路安全,以免受到外來的攻擊,很多企業也許會問:我已經建構防火牆或是入侵偵測系統(IDS, Intrusion Detection System),我還需要Web Security嗎?如果公司有提供Web Service的話,那答案仍是肯定的!

Firewall的作用
防火牆並不能透過HTTP通訊協定來控制Web Application,防火牆只能保護企業網路、作業系統和伺服器等。它們最多只能被視為是一個檢查站,檢查哪個通訊端口或是哪項服務可以通過。另外還有一些防火牆具備保護Layer 7的功能,這種防火牆稱為應用層防火牆(Application Level Firewall / Application Proxy),但是它並不能針對SQL Injection或是Parameter tampering等特定的攻擊作出有效回應。 IDS的作用 入侵偵測系統(IDS)同樣也無法保護到Layer 7,它只能偵測到Network Level的已知弱點,它的特點是當有攻擊發生時才發出訊息警告資安人員,所以IDS只能針對現有弱點特徵資料庫(Signature Database)中已有記錄的弱點作出警告。而且最重要的是:IDS針對SSL Traffic是無法偵測的。 從另外一個角度看,如果企業採用Web Application弱點偵測系統,我們可以說這個Web Application Vulnerability Assessment Tool是一個Layer 7的Firewall與IDS整合。很多人會認為網路安全就包括Web Application Security,其實這是一個錯誤的觀念,因為Web Application在OSI的Layer 7也就是Application Layer(應用層)上:Web跟Network在技術上來說是完全互相獨立的。 攻擊手法 駭客多半利用程式本身已知的漏洞或結合Web Server的弱點進行攻擊。 根據OWASP(Open Web Application Security Project – http:// www.owasp.org/documentation/ topten.html)調查公佈,駭客最常利用如表1所示的十種方式來進行攻擊。 攻擊者通常利用結合多種攻擊手法來達到目的。其他攻擊手法還有Session hijacking、Directory Traversal、Unicode Injection、Path Truncation、Parameter Tampering等。

防範之道
了解這麼多種不同攻擊手法後,企業要如何來進行防禦呢?最直接且完整的防禦方法就是企業不開放Port 80/443,或是使用Extranet和Internet來提供網路服務,不過這樣的作法雖有效,但是對企業來說卻是不實際的。因此建議企業必須要先建立一套完整的防禦生命週期。 初始的安全(Start secure) 針對開發人員在Web Application開發的初期將安全性考量進去。同時也必須教育程式開發者使其具備有Security的觀念,使程式開發者在開應用程式的初期就將安全觀念加入到程式設計核心之中。 開發中的安全(QA & Efficiency) 將已完成的程式原始碼透過開發控管的程式,在正式上線前做好QA的測試,落實檢查工作,以便得到最大的安全效益。 持續的安全(Stay Secure) 由於網路發展是一日千里,所以每天有可能有幾百種的安全漏洞被發佈,唯有持續的對Web Application進行監控及檢測,管理最新發佈的漏洞以進一步的對其修補(Patch Update)才能使防禦更加完整。現在市面上已有多種針對Web Application弱點來進行偵測的工具,如:SPI Dynamics的WebInspect,Kavado的ScanDo及Watchfire的AppScan。這些工具都能特定的針對Web Application和Web Server弱點進行不定期或是自動的檢測。另外網管人員也必須隨時保持高度警覺注意最新安全公告,針對Web Server進行維護。

結論
在資訊安全世界裡,沒有百分之百的安全性,再加上駭客攻擊手法的日新月異,根據研究結果發現,資安漏洞越來越多,但是企業對其反應時間卻是越來越短,例如:在1999年時MELISSA病毒出現時,企業的反應時間有288天;但是在2004年時,當SASSER病毒出現時,企業卻只有10天的反應時間。而且企業的反應時間還會越來越短。 除此之外,目前在Web Application Security的開發上並沒有一個明確的規範標準,所以建議企業儘早建立Web Application Security機制,畢竟預防勝於治療。企業同時也應該要對所偵測的弱點進行有效管理(VM, Vulnerability Management),將最關鍵的弱點擺在第一順位優先處理,否則當那1%的機會被駭客利用而成功入侵時,企業有形及無形的損失將是難以估計的。

本文作者任職於精誠資訊,擁有CISSP、SSCP、Security+、CIW Security Analyst、CWNA等證照。


駭客最常利用的10種攻擊方式
1. Invalidated Input 說明:資料在處理前驗証不完整,也就是Server端可接受未經驗證的字元(Characters),駭客利用此弱點Input特殊命令,對資料庫進行存取或查詢的程式碼。
2. Broken Access Control 說明:利用授權機制的漏洞來提高攻擊者的權限。
3. Broken Authentication and Session Management 說明:跟Broken Access Control很類似,不一樣的是,Broken Authentication and Session Management是利用session cookies的特性讓沒有被保護好的帳號、密碼和cookies等,這些重要的credentials被駭客取得並竄改而進一步的將資料竊取。
4. Cross Site Scripting (XSS) Flaws 說明:不要和另一個CSS(Cascading Style Sheets)搞混了。在這裡的CSS是指利用動態網頁(JavaScript、VBScript、ActiveX或Flash)的特性讓攻擊者有機會從遠端植入惡意碼(arbitrary Code),或是以URL的方式包裝指令碼,當使用者瀏覽其網站的內容時,這個網頁會轉送到另一處讓惡意碼啟動。攻擊者可以此手法欺騙使用者來達到竊取資料的目的。
5. Buffer Overflows 說明:製造緩衝區溢位。攻擊者以輸入大量的data超過程式所設計的範圍,使得Buffer空間無法承受而造成系統異常(DoS)。通常此設計缺點(Flaw)較常出現於C或C++語言。知名的例子有:Blaster、SoBig。
6. Injection Flaws 說明:駭客係利用輸入特殊命令(Syntax),讓系統將之與標準的資料庫查詢字串和資料結合在一起,送給資料庫端執行,直接對資料庫修改增加及修改,進而造成資料庫損毀或資料流失。常利用的SQL Injection Syntax: “,' HAVING 1=1
7. Improper Error Handling 說明:又稱為error message identification Error message,對一般使用者來說可能只是單純的警告文字。例如有些語言方便程式開發者除錯而提供此錯誤訊息,但攻擊者通常刻意讓錯誤訊息產生來了解資料表的結構或更完整的資訊執行Reverse-Engineering。解決方法是提供正確的錯誤訊息。避免將開發者所使用的錯誤訊息直接 顯示給使用者。
8. Insecure Storage 說明:有些程式設計者會修改一些檔案,這些舊的檔案可能會被自動存成另外一個的檔案(例如:*.bak)。這些檔通常是被儲存在既定目錄下(Default Folder)。但程式設計者通常部會留意到這些檔,如果這些檔的內容包含著重要資訊,攻擊者可以輕易的取得這些資訊。
9. Denial of Service 說明:攻擊者能將Web Service的資源佔用,或者是不允許使用者使用。Buffer Overflow便是此一型態的攻擊。
10. Insecure Configuration 說明:利用在使用者的瀏覽器上ActiveX Control或JavaScript開啟設定,攻擊者可利用這些特性來對被攻擊者植入木馬。