原文地址:http://net.zdnet.com.cn/network_security_zone/2007/0824/468077.shtml
隨著Web應(yīng)用程序的增多,隨之而來的就是這些Web應(yīng)用程序所帶來的安全漏洞。不遵從規(guī)范化的編碼指導(dǎo),會使企業(yè)、員工以及企業(yè)的客戶面對嚴(yán)重的安全風(fēng)險,遭到各種惡意攻擊。
我們將向大家介紹Open Web Application Security Project(開放式Web應(yīng)用程序安全項目,OWASP)10要素,以及OWASP建議大家在軟件開發(fā)生命周期中應(yīng)該嵌入的標(biāo)準(zhǔn)化方法。
商業(yè)風(fēng)險
現(xiàn)在的企業(yè)都在向客戶提供通過瀏覽器訪問企業(yè)信息的功能,同時集成Web服務(wù)的應(yīng)用程序也越來越多,這些都導(dǎo)致企業(yè)所面臨的風(fēng)險不斷增加。這并不代表開發(fā)人員沒有認(rèn)真的對待程序開發(fā)工作,只是當(dāng)Web應(yīng)用程序的數(shù)量越來越多,其潛在的隱患也會越來越頻繁的暴露在互聯(lián)網(wǎng)下。根據(jù)OWASP的觀點:
“當(dāng)企業(yè)發(fā)布了一個Web應(yīng)用程序,它們就是在邀請全球的網(wǎng)民向其發(fā)送HTTP請求。而攻擊內(nèi)容也可以隨著這些正常的HTTP請求穿過防火墻,過濾系統(tǒng),系統(tǒng)平臺上的安全措施以及網(wǎng)絡(luò)中的入侵檢測系統(tǒng),而不被企業(yè)所發(fā)現(xiàn)。這意味著企業(yè)的Web應(yīng)用程序代碼本身就是企業(yè)安全圍墻的一部分。隨著企業(yè)所采用的Web應(yīng)用程序數(shù)量和復(fù)雜度的增加,企業(yè)的安全圍墻將更多的暴露在網(wǎng)絡(luò)中。”
目前,企業(yè)所開發(fā)的很多新應(yīng)用程序都是Web應(yīng)用程序。另外,Web服務(wù)也越來越頻繁的被用來集成Web應(yīng)用程序或與Web應(yīng)用程序進(jìn)行交互。所帶來的問題就是,Web應(yīng)用程序和服務(wù)的增長已經(jīng)超越了程序開發(fā)人員所接受的安全培訓(xùn)以及安全意識的范圍。
隨著存在安全隱患的Web應(yīng)用程序數(shù)量的增長,OWASP也總結(jié)出了Web應(yīng)用程序的十大脆弱點。在這個10要素列表中,不但包括了Web應(yīng)用程序的脆弱性介紹,還包括了OWASP的建議內(nèi)容,幫助程序開發(fā)人員和企業(yè)盡量避免這些脆弱點給企業(yè)系統(tǒng)帶來的風(fēng)險。
OWASP 10要素中還包括了一個指南,幫助企業(yè)決定該如何向客戶提供信息。比如聯(lián)邦貿(mào)易委員會(FTC)就在2003年1月的商業(yè)案例文檔中將這個列表作為了信息安全的參考內(nèi)容。同年,F(xiàn)TC還將OWASP 10要素列表作為指控Guess公司沒有盡力做好客戶的信息安全保護(hù)工作的參考資料。
10要素列表
以下列表來自O(shè)WASP 10要素項目:(OWASP,2006):
一、Unvalidated Input 非法輸入——在數(shù)據(jù)被輸入程序前忽略對數(shù)據(jù)合法性的檢驗,是一個常見的編程漏洞。隨著我們對Web應(yīng)用程序脆弱性的調(diào)查,非法輸入的問題已經(jīng)成為了大多數(shù)Web應(yīng)用程序安全漏洞的一個主要特點。
二、Broken Access Control 失效的訪問控制——大部分企業(yè)都非常關(guān)注對已經(jīng)建立的連接進(jìn)行控制,但是,允許一個特定的字符串輸入可以讓攻擊行為繞過企業(yè)的控制。
三、Broken Authentication and Session Management 失效的賬戶和線程管理——良好的訪問控制并不代表萬事大吉了。企業(yè)還應(yīng)該保護(hù)用戶的密碼,會話令牌,賬戶列表以及其它任何可以給攻擊者提供有利信息幫助他們攻擊企業(yè)網(wǎng)絡(luò)的內(nèi)容。
四、Cross Site Scripting (XSS) Flaws 跨站點腳本攻擊——XSS是一種常見的攻擊。當(dāng)攻擊腳本被嵌入企業(yè)的Web頁面或其它可以訪問的Web資源中,當(dāng)沒有保護(hù)能力的臺式機訪問這個頁面或資源時,腳本就會被啟動。這種問題可以影響成百上千的員工以及企業(yè)客戶的終端電腦。
五、Buffer Overflows 緩存溢出——緩存溢出問題一般出現(xiàn)在較早的編程語言如C語言編寫的程序中。這種編程錯誤其實也是由于沒有很好的確定輸入內(nèi)容在內(nèi)存中的位置所草成的。在本文的后續(xù)部分中,我們會講到,通過一些高級的編程環(huán)境,如Java以及.Net,可以很好的控制此類問題。
六、Injection Flaws 注入式攻擊——如果沒有成功的阻止帶有語法含義的輸入內(nèi)容,有可能導(dǎo)致對數(shù)據(jù)庫信息的非法訪問。比如在Web表單中輸入的內(nèi)容,應(yīng)該保持簡單,并且不應(yīng)該還有可被執(zhí)行的代碼內(nèi)容。
七、Improper Error Handling 異常錯誤處理——當(dāng)錯誤發(fā)生時,向用戶提交錯誤提示是很正常的事情,但是如果提交的錯誤提示中包含了太多的內(nèi)容,就有可能會被攻擊者分析出網(wǎng)絡(luò)環(huán)境的結(jié)構(gòu)或配置。
八、Insecure Storage 不安全的存儲——對于Web應(yīng)用程序來說,妥善的保存密碼,用戶名,以及其它與身份驗證有關(guān)的信息是非常重要的工作。對這些信息進(jìn)行加密是非常有效的方式,但是一些企業(yè)會采用那些未經(jīng)實踐驗證的加密解決方案,其中就可能存在漏洞。
九、Application Denial of Service 程序拒絕服務(wù)——與拒絕服務(wù)攻擊(DoS)類似,應(yīng)用程序的DoS攻擊利用大量非法用戶搶占應(yīng)用程序資源,導(dǎo)致合法用戶無法使用該Web應(yīng)用程序。
十、Insecure Configuration Management 不安全的配置管理——有效的配置管理過程可以為Web應(yīng)用程序和企業(yè)的網(wǎng)絡(luò)架構(gòu)提供良好的保護(hù)。 針對以上列表,我有兩點要說明一下。首先,這個列表并不能涵蓋企業(yè)的Web應(yīng)用程序中的全部脆弱點,它只是OWASP的成員組織最常遇到的問題,因此也是你應(yīng)該著重檢查的內(nèi)容。
另外,這個列表并沒有先后順序。它只是根據(jù)每個OWASP成員根據(jù)自己企業(yè)的Web應(yīng)用程序環(huán)境的脆弱性所排列的。
跨站點腳本是Web程序很常見的漏洞,不論是個人用戶還是商業(yè)用戶,都會由于這種漏洞而遭受攻擊。這里我們將詳細(xì)介紹跨站點腳本的脆弱性,以及由此使得個人用戶和企業(yè)用戶所面臨的風(fēng)險。最后還會介紹如何消除或者抵御這類攻擊。
我們將著重介紹Web應(yīng)用程序中最大的脆弱性領(lǐng)域――跨站點腳本(XSS)。XSS的脆弱性由來已久,然而,隨著越來越多的蠕蟲和病毒利用這一脆弱性進(jìn)行破壞活動,企業(yè)系統(tǒng)中與XSS相關(guān)的安全風(fēng)險也越來越明顯。
什么是XSS?
XSS漏洞一般出現(xiàn)在可以注入代碼的Web程序中。利用這一漏洞的腳本可能來自服務(wù)器,但是并不在服務(wù)器上執(zhí)行,而是在客戶端的工作站上執(zhí)行。目前有三種基本的XSS漏洞攻擊:映射,存儲和基于DOM(文檔對象模塊)
其中反射攻擊最為常見。這類漏洞經(jīng)常出現(xiàn)在網(wǎng)頁中可以動態(tài)輸入內(nèi)容并返回結(jié)果的區(qū)域。搜索頁面就是一個很典型的例子。當(dāng)攻擊者發(fā)現(xiàn)了存在這一漏洞的網(wǎng)頁,他只需要將腳本輸入文本框。當(dāng)頁面重新顯示整段文字時,腳本便被執(zhí)行了。
在很多情況下,黑客通過一些社會學(xué)工程來引誘用戶點擊經(jīng)過特殊處理的鏈結(jié) ,從而導(dǎo)致攻擊發(fā)生。這種方式可以讓黑客將腳本注入到網(wǎng)頁中。(Jeremiah Grossman, "Cross-site Scripting Worms and Viruses," April 2006)
存儲型弱點正如其名字所表示的意思。攻擊者將惡意代碼提交到有XSS漏洞的網(wǎng)站,或者網(wǎng)站的某個經(jīng)常被用戶訪問的部分。比如一些社會網(wǎng)站以及用戶提交評論的頁面。當(dāng)受害者打開相應(yīng)的頁面時,惡意腳本就會在用戶不知情的情況下自動執(zhí)行。因為瀏覽器認(rèn)為這個存儲型惡意腳本是來自受信的Web網(wǎng)站或服務(wù)器的。
以下是一個非常簡單的存儲型腳本攻擊的例子。
腳本一般會插入到表單中,這在很多論壇或者擁有大量用戶的服務(wù)器上很常見。比如黑客會將以下代碼通過正常的發(fā)貼方式上傳到在線論壇:
<script>alert('Hello World')</script>
當(dāng)不知情的用戶打開這個帖子,代碼就會在用戶的電腦上執(zhí)行。雖然我給出的這段代碼沒有任何有害的內(nèi)容,但是如果代碼中包含了以下內(nèi)容,就不那么樂觀了:
◆顯示許可權(quán)限錯誤信息
◆提示用戶輸入密碼
◆將用戶的密碼通過郵件發(fā)送到黑客設(shè)定的服務(wù)器上
最后一種XSS弱點是基于DOM的攻擊。作為AJAX的一部分,DOM是一種:
“讓程序員可以訪問和控制Web頁面文檔內(nèi)容的接口。它提供了一種結(jié)構(gòu)化的面向?qū)ο蟮姆椒ǎ梢詫撁嬷刑囟ǖ膬?nèi)容進(jìn)行檢索以及設(shè)定對象的屬性。” (Mike Hall, "Introduction to the Document Object Model," 2007).
在客戶端的腳本中,存在DOM漏洞。一般來說這出現(xiàn)在腳本模塊訪問URL需要參數(shù)的時候。如果腳本使用的參數(shù)信息沒有經(jīng)過編碼或過濾就寫入到了HTML文件中,那么很有可能會存在XSS漏洞。有關(guān)這方面的例子和更詳細(xì)的說明,可以參考2005年Amit Klein的文章"DOM Based Cross Site Scripting or XSS of the Third Kind,"基于DOM的XSS攻擊難以防御。因為DOM頁面層中的所有方法都是受信的,植入在參數(shù)中的惡意代碼可以和其他代碼一樣被執(zhí)行。與存儲型XSS攻擊一樣,DOM腳本攻擊的防御還是要依靠程序員在編程時的細(xì)心和安全意識。
商業(yè)沖擊
根據(jù)Grossman的觀點,當(dāng)攻擊者成功利用XSS漏洞進(jìn)行攻擊后,可能進(jìn)一步實施以下工作:
◆強制發(fā)送電子郵件信息
◆轉(zhuǎn)移資本
◆刪除或修改數(shù)據(jù)
◆使用被害人的電腦攻擊其他服務(wù)器
◆下載非法內(nèi)容
基本上說,Web網(wǎng)頁腳本所能做的工作,黑客都可以通過成功的XSS攻擊而實施。
預(yù)防XSS攻擊
由于很多Web應(yīng)用程序都包含有漏洞,因此最好的預(yù)防XSS攻擊的方式就是檢測輸入內(nèi)容的合法性。比如,確保輸入內(nèi)容中不包括尖括號。這看上去很簡單,但確是防御XSS攻擊一個非常有效的手段。根據(jù)McClure, Scambray, 以及 Kurtz的說法:
“我們遇到的幾乎所有的XSS攻擊都沒有對輸入內(nèi)容的尖括號進(jìn)行屏蔽或者重新編碼” (Hacking Exposed, p. 565) 。
但是這并不僅僅是尖括號的問題。任何語法符號都不應(yīng)該被允許。語法符號可能是來自數(shù)據(jù)庫,或其他服務(wù)器。輸入Web應(yīng)用程序的任何內(nèi)容必須經(jīng)過過濾,確保用戶最終看到的是單純的文本內(nèi)容。
企業(yè)應(yīng)對XSS攻擊的方式還包括:
1.教育員工在點擊電子郵件中的鏈結(jié)或即時消息中的鏈結(jié)時,要特別小心。
2.建立互聯(lián)網(wǎng)接入控制策略,限制企業(yè)員工訪問高風(fēng)險網(wǎng)站(比如成人網(wǎng)站以及盜版媒體網(wǎng)站) 以及未知風(fēng)險的網(wǎng)站。
3.確保用戶的電腦上都安裝了最新版的防火墻軟件和反病毒軟件。設(shè)置防火墻限制流出的數(shù)據(jù)。
4.確保所有敏感功能不會通過機器人或者第三方服務(wù)器來啟動。 (Grossman).
5.手動或自動進(jìn)行代碼掃描,主動發(fā)現(xiàn)潛在的XSS漏洞。
總結(jié)
XSS漏洞會給企業(yè)網(wǎng)絡(luò)帶來嚴(yán)重的安全風(fēng)險。企業(yè)的敏感數(shù)據(jù)很可能由于XSS漏洞被泄露出去。正如我們上面介紹的,預(yù)防XSS攻擊,需要企業(yè)終端用戶以及程序員的協(xié)同努力,通過良好的技術(shù)方案抵御這種人為危害。
posted on 2008-10-22 13:42
阿蜜果 閱讀(1023)
評論(1) 編輯 收藏 所屬分類:
Web