|
![]() | 級別: 初級 趙靜, 技術(shù)顧問, IBM 2007 年 12 月 21 日
當(dāng) 今世界,Internet(因特網(wǎng))已經(jīng)成為一個非常重要的基礎(chǔ)平臺,很多企業(yè)都將應(yīng)用架設(shè)在該平臺上,為客戶提供更為方便、快捷的服務(wù)支持。這些應(yīng)用在 功能和性能上,都在不斷的完善和提高,然而在非常重要的安全性上,卻沒有得到足夠的重視。由于網(wǎng)絡(luò)技術(shù)日趨成熟,黑客們也將注意力從以往對網(wǎng)絡(luò)服務(wù)器的攻 擊逐步轉(zhuǎn)移到了對 Web 應(yīng)用的攻擊上。根據(jù) Gartner 的最新調(diào)查,信息安全攻擊有 75% 都是發(fā)生在 Web 應(yīng)用而非網(wǎng)絡(luò)層面上。同時,數(shù)據(jù)也顯示,三分之二的 Web 站點都相當(dāng)脆弱,易受攻擊。然而現(xiàn)實確是,絕大多數(shù)企業(yè)將大量的投資花費在網(wǎng)絡(luò)和服務(wù)器的安全上,沒有從真正意義上保證 Web 應(yīng)用本身的安全,給黑客以可乘之機。 本文將從對 Web 應(yīng)用現(xiàn)狀的分析入手,通過列舉常見的攻擊手段,闡明 Web 應(yīng)用目前面臨的挑戰(zhàn),同時,通過對 Rational AppScan 平臺的介紹,協(xié)助企業(yè)制定 Web 應(yīng)用安全解決方案,為企業(yè)的 Web 應(yīng)用披上盔甲。
在討論 Web 應(yīng)用安全之前,先簡單介紹一下 Web 應(yīng)用基礎(chǔ)概念,這樣便于理解為什么 Web 應(yīng)用是脆弱的,容易受到攻擊。 1、 什么是 Web 應(yīng)用 Web 應(yīng)用是由動態(tài)腳本、編譯過的代碼等組合而成。它通常架設(shè)在 Web 服務(wù)器上,用戶在 Web 瀏覽器上發(fā)送請求,這些請求使用 HTTP 協(xié)議,經(jīng)過因特網(wǎng)和企業(yè)的 Web 應(yīng)用交互,由 Web 應(yīng)用和企業(yè)后臺的數(shù)據(jù)庫及其他動態(tài)內(nèi)容通信。 2、 Web 應(yīng)用的架構(gòu) 盡管不同的企業(yè)會有不同的 Web 環(huán)境搭建方式,一個典型的 Web 應(yīng)用通常是標(biāo)準(zhǔn)的三層架構(gòu)模型,如圖 1 所示。 圖 1: Web 應(yīng)用通常是標(biāo)準(zhǔn)的三層架構(gòu)模型 ![]() 在這種最常見的模型中,客戶端是第一層;使用動態(tài) Web 內(nèi)容技術(shù)的部分屬于中間層;數(shù)據(jù)庫是第三層。用戶通過 Web 瀏覽器發(fā)送請求(request)給中間層,由中間層將用戶的請求轉(zhuǎn)換為對后臺數(shù)據(jù)的查詢或是更新,并將最終的結(jié)果在瀏覽器上展示給用戶。 當(dāng)討論起 Web 應(yīng)用安全,我們經(jīng)常會聽到這樣的回答: 圖 2: 信息安全全景 ![]() 在 企業(yè) Web 應(yīng)用的各個層面,都會使用不同的技術(shù)來確保安全性。為了保護客戶端機器的安全,用戶會安裝防病毒軟件;為了保證用戶數(shù)據(jù)傳輸?shù)狡髽I(yè) Web 服務(wù)器的傳輸安全,通信層通常會使用 SSL(安全套接層)技術(shù)加密數(shù)據(jù);企業(yè)會使用防火墻和 IDS(入侵診斷系統(tǒng))/IPS(入侵防御系統(tǒng))來保證僅允許特定的訪問,不必要暴露的端口和非法的訪問,在這里都會被阻止;即使有防火墻,企業(yè)依然會使 用身份認(rèn)證機制授權(quán)用戶訪問 Web 應(yīng)用。 但是,即便有防病毒保護、防火墻和 IDS/IPS,企業(yè)仍然不得不允許一部分的通訊經(jīng)過防火墻,畢竟 Web 應(yīng)用的目的是為用戶提供服務(wù),保護措施可以關(guān)閉不必要暴露的端口,但是 Web 應(yīng)用必須的 80 和 443 端口,是一定要開放的??梢皂樌ㄟ^的這部分通訊,可能是善意的,也可能是惡意的,很難辨別。這里需要注意的是,Web 應(yīng)用是由軟件構(gòu)成的,那么,它一定會包含缺陷(bugs),這些 bug 就可以被惡意的用戶利用,他們通過執(zhí)行各種惡意的操作,或者偷竊、或者操控、或者破壞 Web 應(yīng)用中的重要信息。 因此可以看出,企業(yè)的回答,并不能真正保證企業(yè)的應(yīng)用安全:
只要訪問可以順利通過企業(yè)的防火墻,Web 應(yīng)用就毫無保留的呈現(xiàn)在用戶面前。只有加強 Web 應(yīng)用自身的安全,才是真正的 Web 應(yīng)用安全解決之道。
在討論常見的 Web 應(yīng)用攻擊之前,我們需要先了解兩個組織:WASC 和 OWASP。這兩個組織在呼吁企業(yè)加強應(yīng)用安全意識和指導(dǎo)企業(yè)開發(fā)安全的 Web 應(yīng)用方面,起到了重要的作用。 Web Application Security Consortium(WASC),是一個由安全專家、行業(yè)顧問和諸多組織的代表組成的國際團體。他們負(fù)責(zé)為 WWW 制定被廣為接受的應(yīng)用安全標(biāo)準(zhǔn)。WASC 組織的關(guān)鍵項目之一是“Web 安全威脅分類”,也就是將 Web 應(yīng)用所受到的威脅、攻擊進行說明并歸納成具有共同特征的分類。該項目的目的是針對 Web 應(yīng)用的安全隱患,制定和推廣行業(yè)標(biāo)準(zhǔn)術(shù)語。WASC 將 Web 應(yīng)用安全威脅分為如下六類:
可以通過如下的網(wǎng)址訪問該組織網(wǎng)站,獲得更多詳細信息:www.webappsec.org。也可以通過參考資料中鏈接,具體了解“Web 安全威脅分類”項目。 Open Web Application Security Project(OWASP),該組織致力于發(fā)現(xiàn)和解決不安全 Web 應(yīng)用的根本原因。它們最重要的項目之一是“Web 應(yīng)用的十大安全隱患”,總結(jié)了目前 Web 應(yīng)用最常受到的十種攻擊手段,并且按照攻擊發(fā)生的概率進行了排序。這個項目的目的是統(tǒng)一業(yè)界最關(guān)鍵的 Web 應(yīng)用安全隱患,并且加強企業(yè)對 Web 應(yīng)用安全的意識。 圖 3: Web 應(yīng)用十大安全隱患 ![]() 可以通過如下的網(wǎng)址訪問該組織,了解更為詳細的信息:www.owasp.org。也可以通過參考資料中鏈接,具體了解“Web 應(yīng)用十大安全隱患”項目。 IBM Rational,是上述兩個組織的成員。 在 OWASP 組織列舉的十大 Web 應(yīng)用安全隱患中,有兩個概率最高的攻擊手段,它們分別是“跨站點腳本攻擊”(Cross-Site Scripting)和“注入缺陷”(Injection Flaws)。下面將通過舉例來說明這兩種攻擊是如何實施的。 1、 跨站點腳本攻擊 首先來看一下跨站點腳本的利用過程,如圖 4。 圖 4: 跨站點腳本攻擊的過程 ![]() 在 上圖中,惡意攻擊者(這里使用 Evil.org 表示)通過 E-mail 或 HTTP 將某銀行的網(wǎng)址鏈接發(fā)給用戶(銀行用 bank.com 表示),該鏈接中附加了惡意的腳本(上圖步驟一);用戶訪問發(fā)來的鏈接,進入銀行網(wǎng)站,同時,嵌在鏈接中的腳本被用戶的瀏覽器執(zhí)行(上圖步驟二、三);用 戶在銀行網(wǎng)站的所有操作,包括用戶的 cookie 和 session 信息,都被腳本收集到,并且在用戶毫不知情的情況下發(fā)送給惡意攻擊者(上圖步驟四);惡意攻擊者使用偷來的 session 信息,偽裝成該用戶,進入銀行網(wǎng)站,進行非法活動(上圖步驟五)。 因此,只要 Web 應(yīng)用中,有可被惡意攻擊者利用執(zhí)行腳本的地方,都存在極大的安全隱患。黑客們?nèi)绻梢宰層脩魣?zhí)行他們提供的腳本,就可以從用戶正在瀏覽的域中偷到他的個人 信息、可以完全修改用戶看到的頁面內(nèi)容、跟蹤用戶在瀏覽器中的每一個動作,甚至利用用戶瀏覽器的缺陷完全控制用戶的機器。 目前,跨站點腳本攻擊是最大的安全風(fēng)險。 2、 注入缺陷 目 前的 Web 應(yīng)用中,絕大多數(shù)都會向用戶提供一個接口,用來進行權(quán)限驗證、搜索、查詢信息等功能。比如一個在線銀行應(yīng)用,首先會有對注冊客戶進行身份驗證的登錄界面, 在正確登錄后,會提供更多交互功能,如根據(jù)客戶的銀行卡號信息,查詢客戶的最近交易、轉(zhuǎn)賬細節(jié)等。這些都是注入缺陷的最佳利用場景。所謂注入缺陷,就是在 上述場景中,用戶輸入的數(shù)據(jù)被當(dāng)做命令和查詢的一部分,送到后端的解釋器中解釋執(zhí)行。如果用戶的輸入是正常合法的,Web 應(yīng)用自然會返回正常合理的結(jié)果,但是,如果惡意攻擊者,利用輸入數(shù)據(jù)可被后臺執(zhí)行的原理,偷梁換柱,使用非法的輸入,脆弱的 Web 應(yīng)用會怎樣呢? 下 面我們舉一個例子來說明注入缺陷是如何進行的。在一個交易網(wǎng)站中,用戶必須輸入產(chǎn)品 ID 號才可以查看該產(chǎn)品的詳細信息。為了實現(xiàn)這個需求,通常會用 SQL 語句查詢數(shù)據(jù)庫來實現(xiàn)。開發(fā)人員在編寫應(yīng)用程序時,可能會使用如下的 SQL 語句來實現(xiàn)上述目的(這里僅為示例): 1) 這里的 products 是數(shù)據(jù)庫中用來存放產(chǎn)品信息的表,+號表示 SQL 語句需要和用戶輸入的真實 ID 進行拼接。如果用戶輸入 325,則該語句在執(zhí)行時變?yōu)椋?/p>
數(shù)據(jù)庫會將 ID 為 325 的產(chǎn)品信息返回給用戶。 2) 在界面上,需要用戶輸入產(chǎn)品 ID 的地方,黑客會輸入如下數(shù)據(jù):
可以看到,黑客并沒有輸入正常合法的產(chǎn)品編號。 3) 通過黑客的非法輸入,需要執(zhí)行的 SQL 語句變?yōu)椋?/p>
可以看出,SQL 語句的意義就完全改變了,當(dāng)產(chǎn)品 ID 為空或者 1=1 時,返回產(chǎn)品所有信息,而 1=1 是永遠成立的條件,因此,黑客并沒有輸入任何產(chǎn)品編號,就可以返回數(shù)據(jù)庫中所有產(chǎn)品的詳細信息。 通過這個例子,我們可以看出,注入缺陷是風(fēng)險非常高的安全漏洞,一旦 Web 應(yīng)用中給用戶提供了需要其輸入數(shù)據(jù)的接口,就有可能遭到攻擊,將后臺的數(shù)據(jù)完全暴露在用戶的面前。 上述說明的“跨站點腳本攻擊”和“注入缺陷攻擊”,是目前 Web 應(yīng)用中比例最高的兩種攻擊手段,按照 OWASP 的項目排序,還有如下八種風(fēng)險性較高的攻擊方法:
在這里,我們就不過多的討論這幾種安全隱患,可以使用 3.1 節(jié)中提供的鏈接得到更多的描述信息。
功 能和性能,往往是我們衡量應(yīng)用是否滿足需求的指標(biāo),但是,對于載體為 Internet 的特殊應(yīng)用-Web 應(yīng)用而言,安全性也是必要的考量標(biāo)準(zhǔn),皮之不存,毛將焉附?如果失去了安全性,即使功能再完備、性能再可靠的 Web 應(yīng)用,一旦遭到黑客的攻擊和破壞,一切都失去了意義。因此企業(yè),尤其是提供 Web 應(yīng)用的企業(yè),一定要加強對應(yīng)用安全的重視程度。 針對目前 Web 應(yīng)用安全性不高的現(xiàn)狀,IBM Rational 提出了構(gòu)筑安全 Web 應(yīng)用的解決方案。 一 個根本、底層的戰(zhàn)略手段就是加強企業(yè)全員的應(yīng)用安全意識。正如前面所闡述過的,對于應(yīng)用而言,無論是開發(fā)人員、測試人員、質(zhì)量管理人員還是項目經(jīng)理、企業(yè) 高層,都會對其功能和性能做更多的關(guān)注,這也是由于早期應(yīng)用多為 C/S 架構(gòu)的應(yīng)用,安全問題并不突出。但是在當(dāng)今的環(huán)境,就不得不將安全作為應(yīng)用質(zhì)量的基礎(chǔ)。 圖 5 中功能、易用性、可靠性、性能、可支持性,是由 Rational Unified Process(RUP)定義的 FURPS 質(zhì)量模型,它告訴我們應(yīng)用的質(zhì)量需要從這幾個方面著手衡量,對于 Web 應(yīng)用,就必須將安全性作為質(zhì)量模型的基礎(chǔ)條件。 圖 5: 適于 Web 應(yīng)用的質(zhì)量模型 ![]() 要加強全員應(yīng)用安全意識,就需要對每一個相關(guān)角色落實安全要求。 1) 對于需求分析、設(shè)計人員而言,是否已將產(chǎn)品的安全性考慮到產(chǎn)品的需求設(shè)計中,從而保證在項目初期,安全因素已被關(guān)注; 2) 對于開發(fā)人員,在應(yīng)用中實現(xiàn)了身份認(rèn)證等安全功能,并不意味著在編程中已考慮到了應(yīng)用安全性,它們還必須掌握 Web 應(yīng)用安全編程規(guī)范等技術(shù); 3) 對于測試人員,驗證了應(yīng)用的 FURPS,不能保證產(chǎn)品已具備安全性,還需要借助其他工具或平臺,對應(yīng)用的安全隱患,進行自動化的掃描,得出全面的安全性報告; 4) 對于質(zhì)量管理人員,產(chǎn)品的質(zhì)量過關(guān),也不等于產(chǎn)品已經(jīng)安全可靠,他們和測試人員一樣,需要借助工具,掌握 Web 應(yīng)用全面的安全隱患匯總和分析。 在 企業(yè)全員都具有了應(yīng)用安全意識之后,必須將該意識貫徹到項目的具體工作之中,除了要求每個人具備嚴(yán)謹(jǐn)認(rèn)真、不斷學(xué)習(xí)的態(tài)度之外,還需要借助先進的工具,對 開發(fā)的 Web 應(yīng)用進行自動化的安全隱患發(fā)現(xiàn)、分析、報告、提供修復(fù)意見等工作,建立人工檢查和自動化工具配合的完整保障措施。IBM Rational AppScan,正是這樣一種 Web 應(yīng)用自動化診斷工具,下面我們對其進行簡單的介紹。 Rational AppScan,是對 Web 應(yīng)用和 Web Services 進行自動化安全掃描的黑盒工具,它不但可以簡化企業(yè)發(fā)現(xiàn)和修復(fù) Web 應(yīng)用安全隱患的過程(因為這些工作,以往都是由人工進行,成本相對較高,但是效率卻非常低下),還可以根據(jù)發(fā)現(xiàn)的安全隱患,提出針對性的修復(fù)建議,并能形 成多種符合法規(guī)、行業(yè)標(biāo)準(zhǔn)的報告,方便相關(guān)人員全面了解企業(yè)應(yīng)用的安全狀況。圖 6 說明了 AppScan 在軟件開發(fā)生命周期中的各個階段,都可以協(xié)助安全隱患的診斷。 圖 6: AppScan 對軟件開發(fā)生命周期的支持 ![]() 1) 開發(fā)過程中的安全保障 AppScan DE(AppScan 開發(fā)版)可以作為多種平臺的插件,這些平臺包括 Eclipse、WebSphere、Visual Studio、JBuilder,協(xié)助開發(fā)人員對編寫的模塊進行自我安全診斷。圖 7 是 AppScan DE 作為 Visual Studio 插件使用的示例。 圖 7: AppScan DE 作為 Visual Studio 的插件 ![]() 2) 質(zhì)量管理過程中的安全保障 通過和 Rational ClearQuest 的集成,AppScan 可以將發(fā)現(xiàn)的安全隱患方便的導(dǎo)入到變更管理平臺中,確保發(fā)現(xiàn)的每一個問題,都被記錄,并詳細跟蹤其在整個修復(fù)過程中的狀態(tài)變化。如圖 8 所示。 圖 8: AppScan 和 Rational ClearQuest 集成 ![]() 除 Rational ClearQuest 之外,AppScan 還可以和 Mercury 的 Quality Center 集成。 3) 在集成和發(fā)布階段中的安全保障 在 集成和發(fā)布階段,可以通過簡單的配置,使用 AppScan 對應(yīng)用進行全面的掃描,企業(yè)僅需要指明 Web 應(yīng)用的入口鏈接,AppScan 就會利用網(wǎng)絡(luò)爬行(Crawling)技術(shù),遍歷應(yīng)用中所有需要測試的鏈接,并對每個鏈接發(fā)送多種測試參數(shù),診斷其有無漏洞可被利用。最后將結(jié)果呈現(xiàn)在用 戶面前。如圖 9 是對示例網(wǎng)站 http://demo.testfire.net 進行診斷的結(jié)果。 從結(jié) 果可以看出,本次診斷共發(fā)現(xiàn)了 88 個安全隱患,并按照嚴(yán)重程度進行了統(tǒng)計。診斷結(jié)果的中部,顯示了 AppScan 掃描出來的應(yīng)用結(jié)構(gòu)、每個模塊或鏈接包含的漏洞數(shù);右上方則按照嚴(yán)重程度,對掃描出來的漏洞進行了分類;結(jié)果的右下方對每一種隱患,進行了解釋,并提出了 詳細的修復(fù)建議,同時說明了為發(fā)現(xiàn)這個漏洞,AppScan 發(fā)送了哪些測試參數(shù)等。 圖 9: AppScan 的診斷結(jié)果示例 ![]() 4) 對診斷結(jié)果進行全面的分析和報告 Rational AppScan 不僅可以對 Web 應(yīng)用進行自動化的掃描、指出安全漏洞的修復(fù)意見,還可以將診斷結(jié)果,使用不同的行業(yè)標(biāo)準(zhǔn)、法規(guī),形成針對性的報告,讓相關(guān)人員對應(yīng)用安全狀況和法規(guī)遵從等 有了全面的認(rèn)識。如圖 10,左圖是 AppScan 可以自動生成的行業(yè)標(biāo)準(zhǔn)報告,而右圖則是近 40 種的法規(guī)遵從報告,如賽班斯法規(guī)遵從等。 圖 10: 自動生成的行業(yè)標(biāo)準(zhǔn)報告 ![]()
通 過上述對 Web 應(yīng)用現(xiàn)狀和常見的 Web 應(yīng)用攻擊示例分析,我們可以看出,目前因特網(wǎng)上的 Web 應(yīng)用,存在著極大的安全隱患和風(fēng)險,企業(yè)對 Web 應(yīng)用安全的保護,已經(jīng)刻不容緩。IBM Rational AppScan,作為先進的 Web 應(yīng)用自動化診斷工具,可以協(xié)助企業(yè)在整個 Web 應(yīng)用開發(fā)生命周期,將安全意識貫徹到企業(yè)全員具體的工作中,高效率的發(fā)現(xiàn)應(yīng)用中存在的安全隱患、給出詳細的修復(fù)建議、并生成多種符合行業(yè)標(biāo)準(zhǔn)和法規(guī)的報 告,已在全球擁有近千個成功案例,是一個完整的、端到端的 Web 應(yīng)用安全解決方案,能真正為企業(yè)的 Web 應(yīng)用披上安全的盔甲。
|