使用 Rational AppScan 應對 Web 應用攻擊
互聯網的發展歷史也可以說是攻擊與防護不斷交織發展的過程。當前,Web 安全性已經提高一個空前 的高度,然而針對網站的攻擊卻頻頻得手。如何最大化的保護 Web 應用呢,IBM Rational 提出了全面的 解決方案。第一部分 介紹了 Web 安全與 Rational AppScan 的入門知識。本文將針對 Web 安全的現狀 、根源、以及 Rational AppScan 產品的技術細節做全面的介紹,最後闡述IBM解決方案給企業帶來的深 層次價值。
1 當前 Web 安全現狀
互聯網的發展歷史也可以說是攻擊與防護不斷交織發展的過程。目前, 全球因特網用戶已達 13.5 億,用戶利用網絡進行購物、銀行轉賬支付和各種軟件下載,企業用戶更是依 賴於互聯網構建他們的核心業務,對此,Web 安全性已經提高一個空前的高度。
然而,現實世界中,針對網站的攻擊愈演愈烈,頻頻得手。CardSystems 是美國一家專門處理信用卡 交易資料的廠商。該公司為萬事達 (Master)、維薩 (Visa) 和美國運通卡等主要信用卡組織提供數據外 包服務,負責審核商家傳來的消費者信用卡號碼、有效期等信息,審核後再傳送給銀行完成付款手續。這 家公司為超過 10 萬家企業處理信用卡信息,每年業務金額超過 150 億美元。這家已有 15 年歷史的公 司怎麼也沒想到,居然有黑客惡意侵入了它的電腦系統,竊取了 4000 萬張信用卡的資料。這些資料包括 持卡人的姓名、賬戶號碼等。這是美國有史以來最嚴重的信用卡資料洩密事件。此次攻擊事件不僅僅對消 費者,對公司造成了巨大的損失,甚至對美國的信用卡產業產生了嚴重的影響!
1.1 Web 安全的認識誤區
然而什麼才是 Web 安全呢,或者說什麼樣的網站才是安全的呢?用 戶往往有一些常見的誤區。
“Web 網站使用了防火牆,所以很安全”無論是應用級還 是端口級的防火牆針對的都是網絡層面的攻擊,通過設置可訪問的端口或者應用,把惡意訪問排除在外, 然而如何鑒別善意訪問和惡意訪問是一個問題。訪問一旦被允許,後續的安全問題就不是防火牆能應對了 。“Web 網站使用了 IDS,所以很安全”通過模式識別對網絡層面的攻擊做出防護措施。然而 類似於防火牆,通過利用程序漏洞,通過正常連接進行攻擊的訪問無法被識別和處理。“Web 網站 使用了 SSL 加密,所以很安全”SSL 對網站發送和接收的信息都進行加密處理,然而 SSL 無法保 障存儲在網站裡的信息的安全和網站訪問者的隱私信息。采用 64 位甚至 128 位 SSL 加密的網站被黑客 攻陷的例子舉不勝舉。“漏洞掃描工具沒發現任何問題,所以很安全”當前漏洞掃描工具已經 被廣泛使用去查找一些明顯的網絡安全漏洞。同理,掃描工具無法對網站應用程序進行檢測,無法查找應 用本身的漏洞。“我們每季度都會聘用安全人員(Pen Tester)進行審計,所以很安全”人為 的檢測考察不僅僅效率低,不可控因素也較多,同時對於代碼變更頻繁的今天,Pen Tester 也無法滿足 全面的安全需求
然而這些方法遠遠不能保障 Web 應用的安全,針對應用層面的攻擊可以輕松的突破防火牆保護的網站 。例如:最為常見的 SQL 注入攻擊表現層面完全是正常的數據交互查詢。對於防火牆或者入侵檢測系統 而言,這是最為正常的訪問連接,沒有任何特征能夠說明此種訪問連接存在惡意攻擊。所以,一些簡單的 SQL 注入語句就可以使得裝備昂貴網絡安全設備的網站被輕松攻破。
1.2 Web 安全現狀
令 人驚詫的是,幾乎所有關注 Web 安全領域的人都會存在著上面我們闡述的誤區,而當前 Web 的安全現狀 也同時證明了這些誤區的普遍性。“防火牆、IDS 是主要安全手段,SSL 保證了安全性, …”與之相對的是:互聯網發展到今天,75%的安全問題竟然是出現在應用程序本身。正如 上面介紹的 SQL 注入攻擊一樣,這是防火牆、SSL、入侵檢測系統無法預防、解決、和應對的!
如下圖所示,目前安全投資中,只有 10%花在了如何防護應用安全漏洞,而這卻是 75%的攻擊來源―― 10% Vs 75%,這是多麼大的差距!這也是造成當前 Web 站點頻頻被攻陷的一個重要因素。
圖 1. 當前安全現狀統計分析圖
那麼,什麼樣的防護 才是一個完整的解決方案呢?通過附圖 2 我們可以看到,一個完整的 Web 防護不僅僅包含了常見的 IDS 、Firewall 等防護手段,更需要針對應用本身做好安全防護,這也是解決 75%安全漏洞的手段。那麼什 麼樣的攻擊是防火牆、IDS、或者 SSL 無法應對的呢,他們又是如何利用應用本身的漏洞進行攻擊的呢? 下面我們將做詳細的闡述。
圖 2. Web 應用的網絡防護
常見針對 Web 應用 攻擊的十大手段
目前常用的針對應用漏洞的攻擊已經多達幾百種,最為常見的攻擊為下表列出的 十種。
應用威脅 負面影響 後果 跨網站腳本攻擊 標識 盜竊,敏感數據丟失… 黑客可以模擬合法用戶,控制其帳戶。 注入 攻擊 通過構造查詢對數據庫、LDAP 和其他系統進行非法查詢。 黑客可以訪問後端數 據庫信息,修改、盜竊。 惡意文件執行 在服務器上執行 Shell 命令 Execute,獲取控制權。 被修改的站點將所有交易傳送給黑客 不安全對象引用 黑客訪問敏感文 件和資源 Web 應用返回敏感文件內容 偽造跨站點請求 黑客調用 Blind 動作,模擬合法用戶 黑客發起 Blind 請求,要求進行轉帳 信息瀉露 和不正確的錯誤處理 黑客得到詳細系統信息 惡意的系統檢測可能有助於更深入的攻擊 被破壞的認證和 Session 管理 Session token 沒有被很好的保護 在用戶推出系統後,黑客能夠盜竊 session。 不安全的木馬存儲 過於簡單的加密技術導致黑客破解編密碼 隱秘信息被黑客解密盜竊 不安全 的通訊 敏感信息在不安全通道中以非加密方式傳送 黑客可以通過嗅探器嗅探敏感信息 ,模擬合法用戶。 URL 訪問限制失效 黑客可以訪問非授權的資源連接 黑客可以強行訪問一些登陸網頁、歷史網頁。
我們通過注入缺陷( Injection Flaws,排名第二的攻擊)對攻擊原理進行一下說明。
在網站的應用中需要應用到大量 的數據庫查詢檢索等功能,例如最簡單的例子是網站登陸,用戶需要輸入登陸名稱和密碼進行登陸認證。 在早期的開發中通常使用最為簡單的 select 語句實現此功能,即 select * from users where username = “XXXX” and password = “XXXX”( 假設數據庫 user 表名稱為 users,用戶名和密碼字段名稱為 username 和 password)。通過截取用戶在文本框中錄入的字符串,再 進行拼接,形成 select 語句,最終如果表 users 中有符合此條件的記錄(即該用戶名和密碼),系統 將會返回有效記錄,從而允許登陸系統中。
然而,此開發方法隱藏了一個巨大的漏洞,黑客可以 通過 SQL 注入攻擊攻入網站。如下圖所示,黑客在登陸界面錄入的不是用戶名,而是一串字符串 (’or 1=1 --)。黑客的目的是在原本應該錄入用戶的地方錄入了一串字符串,導致整個 select 語 句發生了變化:select * from users where username=’’or 1=1。熟知 Select 語句的人 知道,在條件語句中,無論用戶名稱是否正確,由於 1=1 永遠是正確的,所以 select 將會將所有 users 表中的數據返回。最終的結果是,黑客登陸到這個系統中。通過 SQL 注入攻擊,黑客可以輕松的 敲入一些 sql 語句登陸進網站、對隱秘數據進行查詢等等。
圖 3. 攻擊舉例
通過上述原理描述我們可以看到,對於 SQL 注入攻擊無論是防火牆還是入侵檢測系統都無法預 防和阻止,唯一的辦法是將應用本身的漏洞關閉。例如通過參數的傳遞配合存貯過程來實現數據庫查詢, 這比動態的構建 sql 語句安全很多。比如在 ASP.net 中通過下面的程序將會避免攻擊:
' Visual Basic example
Dim DS As DataSet
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter
Dim SelectCommand As String = "select * from users where username = @username"
...
MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@username",
SqlDbType.NVarChar, 20))
MyCommand.SelectCommand.Parameters("@username").Value = UserNameField.Value
// C# example
String selectCmd = "select * from Authors where state = @username";
SqlConnection myConnection = new SqlConnection("server=...");
SqlDataAdapter myCommand = new SqlDataAdapter (selectCmd, myConnection);
myCommand.SelectCommand.Parameters.Add(new SqlParameter ("@username",
SqlDbType.NVarChar, 20));
myCommand.SelectCommand.Parameters ["@username"].Value = UserNameField.Value;
除了注入缺陷攻擊,常見的應用攻擊 還有跨網站腳本攻擊、惡意文件執行攻擊、不安全直接對象應用攻擊、跨站點請求偽造攻擊、信息洩漏以 及利用錯誤處理機制展開攻擊、等等。每種攻擊都類似與 SQL 注入攻擊,根據應用程序本身的漏洞,對 系統進行破壞工作,例如:獲取系統權限、獲取機密信息、模擬合法用戶等等。
綜上所述,這些 利用 Web 應用漏洞的攻擊是 Web 安全最主要的威脅來源,75%的攻擊來源於此,只有對應用程序本身進 行改造才能避免攻擊。然而,如何發現這些應用漏洞是保證安全的第一前提,我們如何以最快最有效的方 式發現 Web 應用本身的漏洞呢?沒有高效檢測手段,安全的 Web 應用將成為水中花鏡中月。
3 通過 Rational AppScan 如何應對網站攻擊
IBM Rational AppScan 正是應對這一挑戰的利器。
如下圖所示,Rational AppScan 工作方式比較簡單,就像一個黑盒測試工具一樣,測試人員不需 要了解 Web 應用本身的結構。AppScan 擁有龐大完整的攻擊特征庫,通過在 http request 中插入測試 用例的方法實現幾百中應用攻擊,再通過分析 http response 判斷該應用是否存在相應的漏洞。整個過 程簡單易懂高效,測試人員可以快速的定位漏洞所在的位置,同時 AppScan 可以詳細指出該漏洞的原理 以及解決該漏洞的方法,幫助開發人員迅速修復程序安全隱患。對於攻擊的特征以及測試用例用戶不需要 花費大量的精力,WatchFire 團隊定期的對特征庫進行更新,隨著保證與業界的同步,最大化的提高用戶 的工作效率。
圖 4. Rational AppScan 工作示意圖
下面我們通過簡單的 實例介紹一下 Rational AppScan 的使用:
定義掃描
首先確定掃描站點的 URL,根據默認 的模板配置向導,確定掃描的整個站點模型以及你想掃描的漏洞種類。例如,我想掃描企業應用 www.xxx.com,想根據默認值掃描是否有安全隱患,啟動 AppScan,創建一個掃描,敲入 www.xxx.com; 根據配置向導直至完成。
圖 5. 默認的模板配置向導
圖 6. 創建一 個掃描
掃描啟動,進行測試
只需要點擊執行。
掃描結果查看
如圖所示,AppScan 以各種維度展現了掃描後的 結果,不僅僅定位了問題發生的位置,也提出了問題的解決方案。
圖 7. 掃描後的結果
4 Rational AppScan 深入介紹
Rational AppScan 同時提供了很多高級功能,幫助客戶對復雜 應用進行檢測。支持的掃描配置有:
Starting URL:起始 URL,制定被測應用的起始地址
Custom Error Pages:制定錯誤網頁提高測試效率
Session IDs:管理測試過程中的 session
Automatic Server Detection:自動檢測應用所在的應用服務器、web server、操作系統
Exclusion and Inclusion:制定哪些 Web 被掃描或者被排除,哪些文件類型不被掃描
Scan Limits:其他高級掃描限制,例如掃描次數限制等
Advanced:掃描的方式,是寬度掃描還是深度 掃描
Communication Settings:對掃描中的延時、線程數量進行配置
Proxy Settings:代 理設置vLogin/logout:對被測應用的登陸進行設置,可以采用錄制回放的方式、也可以使用自動登陸的 方式
configure a Test Policy: 配置測試測量,即想測試哪些漏洞。
……
如上所述,用戶可以通過 AppScan 進行一系列高級配置,制定所要檢 測的 Web 模型,即哪些需要掃描、哪些不需要、掃描的方式等等;也可以定義需要掃描漏洞的列表,從 而保證了用戶關心的網站模型有無用戶所關心的安全漏洞。在檢測出安全漏洞之後,AppScan 又提供了全 面的解決方案幫助客戶快速解決這些問題,最大化的保證 Web 應用的安全。另外,對於 Web 服務 AppScan 同樣可以支持。
AppScan 提供了完善的報表功能,可以支持用戶對掃描的結果進行各種 分析,包括對行業或者法規的支持程度;同時,AppScan 也提供了一系列的小工具,例如: Authentication Tester 通過暴力檢測方法掃描被測網站的用戶名稱和密碼;HTTP Request Editor 提供 了編輯 Http request 的功能,等等。
5 Rational AppScan 的使用場景
在整個軟件開發 生命周期中的各個階段,Rational AppScan 都可以被使用,全面的保障了軟件的安全性。如下圖所示, 軟件開發過程中,軟件開發人員、軟件測試人員、QA、審核人員等諸多角色都可以通過 AppScan 檢測應 用,將漏洞盡早挖掘出來。下面我們通過一些使用場景介紹一下 AppScan 給軟件開發帶來的利益。
圖 8. AppScan 使用場景
5.1 開發人員使用 AppScan
開發人員在開發過程中可以使用 AppScan 或者專用插件,隨時開發隨時測試,最大化的 保證個人開發程序的安全性。越早發現問題,解決問題的成本就越低,這為 Web 應用的安全提供了最為 堅實的基礎保障。
測試人員使用 AppScan
系統測試人員使用 AppScan 對應用做全面的測 試,一旦發現問題,可以快速的生成 defect,通過與 ClearQuest 的集成可以實現 defect 電子化跟蹤 ,再傳遞到開發人員手中,指導開發人員迅速解決問題。極大的提高了開發團隊的開發效率,也提供了完 整了溝通平台解決方案。
5.3 審核人員上線前使用 AppScan
這是系統上線前的安全質量關 卡。任何系統上線都應該經過嚴格的上線測試,這也最大化的減少了上線後問題的出現,避免生產系統上 線後給企業帶來的巨額損失。
5.4 上線後審計、監控人員使用 AppScan
上線的系統應該定 期檢測,一旦出現問題更應該及時檢測,越快速的定位發現問題,損失就會越小。
上面我們介紹 的是比較通用的使用場景。當然,不同的企業可能不同的特點,AppScan 使用場景的原則是最大化的提高 使用效率、盡早的把問題暴露出來,為應用安全打下堅實的基礎。每個企業都可以根據自身的開發現狀定 義適合自己的使用模式。
6. 為企業帶來的收益
通過上面的介紹,我們對 Web 安全現狀、 應用安全重要性、以及應用安全產品 Rational AppScan 的使用有了一定的認識。但是,工具帶給客戶的 不僅僅是一些功能,更為重要的是給企業帶來的深層次的收益,給企業在開發過程、安全策略等層面帶來 了深刻的變化 . 下面我們從幾方面闡述 AppScan 給企業帶來的價值:
AppScan 是 Web 應用安全 的堅實保障正如上面所論述的一樣,當前 Web 安全 75%的漏洞出自於應用本身,快速全面的定位問題並 提供完善的解決方案將會幫助開發團隊構建一個健壯的應用。AppScan 使得開發成本降低、開發效率提高 開發測試人員通過 Rational AppScan 可以迅速的定位安全隱患,早期發現問題不僅有助於解決問題,更 降低了開發成本,避免問題過晚出現所造成的巨大損失。AppScan 給企業提供了統計分析能力Rational AppScan 提供了靈活報表功能,可以支持對掃描結果進行統計分析;支持對規范法規遵循的分析;更提供 了 Delta 比較報告,可以比較兩次檢測的結果從而作為質量檢驗的基礎數據 AppScan 幫助建立 企業級的測試策略庫Rational AppScan幫助企業根據不同的應用類型建立不同的測試策略,同時用戶可以 定義針對不同威脅的解決方法,持續的知識積累保證了企業擁有更完善的安全解決方案。
總結
綜上所述,隨著 Internet 的蓬勃發展,Web 的安全性已經被空前重視,薄弱的安全性也成為了 很多企業發展的瓶頸。然而,即便安全性如此受重視的今天,很多人對如何保障 Web 的安去性都存在著 巨大的誤區。現實表明,只有加強 Web 應用的防護,才能有效的防范 75%的攻擊,Web 應用的防護已經 成為安全話題中最為不可獲缺的部分。IBM Rational 提供了 Rational AppScan 解決方案,在 Web 開發 、測試、維護、運營的整個生命周期中,幫助企業高效的發現、解決安全漏洞,最大限度的保證了應用的 安全性,為企業發展提供了堅實的技術保障。