互聯網的發展歷史也能夠說是攻擊與防禦不斷交織發展的過程。目前,全球因特網用戶已達 13.5 億,用戶利用網絡進行購物、銀行轉帳支付和各類軟件下載,企業用戶更是依賴於互聯網構建他們的核心業務,對此,Web 安全性已經提升一個空前的高度。web
然 而,現實世界中,針對網站的攻擊愈演愈烈,頻頻得手。CardSystems 是美國一家專門處理信用卡交易資料的廠商。該公司爲萬事達 (Master)、維薩 (Visa) 和美國運通卡等主要信用卡組織提供數據外包服務,負責審覈商家傳來的消費者信用卡號碼、有效期等信息,審覈後再傳送給銀行完成付款手續。這家公司爲超過 10 萬家企業處理信用卡信息,每一年業務金額超過 150 億美圓。這家已有 15 年曆史的公司怎麼也沒想到,竟然有黑客惡意侵入了它的電腦系統,竊取了 4000 萬張信用卡的資料。這些資料包括持卡人的姓名、帳戶號碼等。這是美國有史以來最嚴重的信用卡資料泄密事件。這次攻擊事件不只僅對消費者,對公司形成了巨大 的損失,甚至對美國的信用卡產業產生了嚴重的影響!sql
然而什麼纔是 Web 安全呢,或者說什麼樣的網站纔是安全的呢?用戶每每有一些常見的誤區。數據庫
然 而這些方法遠遠不能保障 Web 應用的安全,針對應用層面的攻擊能夠輕鬆的突破防火牆保護的網站。例如:最爲常見的 SQL 注入攻擊表現層面徹底是正常的數據交互查詢。對於防火牆或者入侵檢測系統而言,這是最爲正常的訪問鏈接,沒有任何特徵可以說明此種訪問鏈接存在惡意攻擊。 因此,一些簡單的 SQL 注入語句就可使得裝備昂貴網絡安全設備的網站被輕鬆攻破。後端
令 人驚詫的是,幾乎全部關注 Web 安全領域的人都會存在着上面咱們闡述的誤區,而當前 Web 的安全現狀也同時證實了這些誤區的廣泛性。「防火牆、IDS 是主要安全手段,SSL 保證了安全性,…」與之相對的是:互聯網發展到今天,75%的安全問題居然是出如今應用程序自己。正如上面介紹的 SQL 注入攻擊同樣,這是防火牆、SSL、入侵檢測系統沒法預防、解決、和應對的!安全
以下圖所示,目前安全投資中,只有 10%花在瞭如何防禦應用安全漏洞,而這倒是 75%的攻擊來源――10% Vs 75%,這是多麼大的差距!這也是形成當前 Web 站點頻頻被攻陷的一個重要因素。服務器
那 麼,什麼樣的防禦纔是一個完整的解決方案呢?經過附圖 2 咱們能夠看到,一個完整的 Web 防禦不只僅包含了常見的 IDS、Firewall 等防禦手段,更須要針對應用自己作好安全防禦,這也是解決 75%安全漏洞的手段。那麼什麼樣的攻擊是防火牆、IDS、或者 SSL 沒法應對的呢,他們又是如何利用應用自己的漏洞進行攻擊的呢?下面咱們將作詳細的闡述。網絡
目前經常使用的針對應用漏洞的攻擊已經多達幾百種,最爲常見的攻擊爲下表列出的十種。session
應用威脅 | 負面影響 | 後果 |
---|---|---|
跨網站腳本攻擊 | 標識盜竊,敏感數據丟失… | 黑客能夠模擬合法用戶,控制其賬戶。 |
注入攻擊 | 經過構造查詢對數據庫、LDAP 和其餘系統進行非法查詢。 | 黑客能夠訪問後端數據庫信息,修改、盜竊。 |
惡意文件執行 | 在服務器上執行 Shell 命令 Execute,獲取控制權。 | 被修改的站點將全部交易傳送給黑客 |
不安全對象引用 | 黑客訪問敏感文件和資源 | Web 應用返回敏感文件內容 |
僞造跨站點請求 | 黑客調用 Blind 動做,模擬合法用戶 | 黑客發起 Blind 請求,要求進行轉賬 |
信息瀉露和不正確的錯誤處理 | 黑客獲得詳細系統信息 | 惡意的系統檢測可能有助於更深刻的攻擊 |
被破壞的認證和 Session 管理 | Session token 沒有被很好的保護 | 在用戶推出系統後,黑客可以盜竊 session。 |
不安全的木馬存儲 | 過於簡單的加密技術致使黑客破解編密碼 | 隱祕信息被黑客解密盜竊 |
不安全的通信 | 敏感信息在不安全通道中以非加密方式傳送 | 黑客能夠經過嗅探器嗅探敏感信息,模擬合法用戶。 |
URL 訪問限制失效 | 黑客能夠訪問非受權的資源鏈接 | 黑客能夠強行訪問一些登錄網頁、歷史網頁。 |
咱們經過注入缺陷(Injection Flaws,排名第二的攻擊)對攻擊原理進行一下說明。app
在 網站的應用中須要應用到大量的數據庫查詢檢索等功能,例如最簡單的例子是網站登錄,用戶須要輸入登錄名稱和密碼進行登錄認證。在早期的開發中一般使用最爲 簡單的 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 語句登錄進網站、對隱祕數據進行查詢等等。
通 過上述原理描述咱們能夠看到,對於 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 應用將成爲水中花鏡中月。
如 下圖所示,Rational AppScan 工做方式比較簡單,就像一個黑盒測試工具同樣,測試人員不須要了解 Web 應用自己的結構。AppScan 擁有龐大完整的攻擊特徵庫,經過在 http request 中插入測試用例的方法實現幾百中應用攻擊,再經過分析 http response 判斷該應用是否存在相應的漏洞。整個過程簡單易懂高效,測試人員能夠快速的定位漏洞所在的位置,同時 AppScan 能夠詳細指出該漏洞的原理以及解決該漏洞的方法,幫助開發人員迅速修復程序安全隱患。對於攻擊的特徵以及測試用例用戶不須要花費大量的精 力,WatchFire 團隊按期的對特徵庫進行更新,隨着保證與業界的同步,最大化的提升用戶的工做效率。
下面咱們經過簡單的實例介紹一下 Rational AppScan 的使用:
首先肯定掃描站點的 URL,根據默認的模板配置嚮導,肯定掃描的整個站點模型以及你想掃描的漏洞種類。例如,我想掃描企業應用 www.xxx.com
,想根據默認值掃描是否有安全隱患,啓動 AppScan,建立一個掃描,敲入 www.xxx.com
; 根據配置嚮導直至完成。
只須要點擊執行。
如圖所示,AppScan 以各類維度展示了掃描後的結果,不只僅定位了問題發生的位置,也提出了問題的解決方案。
Rational AppScan 同時提供了不少高級功能,幫助客戶對複雜應用進行檢測。支持的掃描配置有:
如 上所述,用戶能夠經過 AppScan 進行一系列高級配置,制定所要檢測的 Web 模型,即哪些須要掃描、哪些不須要、掃描的方式等等;也能夠定義須要掃描漏洞的列表,從而保證了用戶關心的網站模型有無用戶所關心的安全漏洞。在檢測出安 全漏洞以後,AppScan 又提供了全面的解決方案幫助客戶快速解決這些問題,最大化的保證 Web 應用的安全。另外,對於 Web 服務 AppScan 一樣能夠支持。
AppScan 提供了完善的報表功能,能夠支持用戶對掃描的結果進行各類分析,包括對行業或者法規的支持程度;同時,AppScan 也提供了一系列的小工具,例如:Authentication Tester 經過暴力檢測方法掃描被測網站的用戶名稱和密碼;HTTP Request Editor 提供了編輯 Http request 的功能,等等。
在整個軟件開發生命週期中的各個階 段,Rational AppScan 均可以被使用,全面的保障了軟件的安全性。以下圖所示,軟件開發過程當中,軟件開發人員、軟件測試人員、QA、審覈人員等諸多角色均可以經過 AppScan 檢測應用,將漏洞儘早挖掘出來。下面咱們經過一些使用場景介紹一下 AppScan 給軟件開發帶來的利益。
開發人員在開發過程當中可使用 AppScan 或者專用插件,隨時開發隨時測試,最大化的保證我的開發程序的安全性。越早發現問題,解決問題的成本就越低,這爲 Web 應用的安全提供了最爲堅實的基礎保障。
系 統測試人員使用 AppScan 對應用作全面的測試,一旦發現問題,能夠快速的生成 defect,經過與 ClearQuest 的集成能夠實現 defect 電子化跟蹤,再傳遞到開發人員手中,指導開發人員迅速解決問題。極大的提升了開發團隊的開發效率,也提供了完整了溝通平臺解決方案。
這是系統上線前的安全質量關卡。任何系統上線都應該通過嚴格的上線測試,這也最大化的減小了上線後問題的出現,避免生產系統上線後給企業帶來的鉅額損失。
上線的系統應該按期檢測,一旦出現問題更應該及時檢測,越快速的定位發現問題,損失就會越小。
上面咱們介紹的是比較通用的使用場景。固然,不一樣的企業可能不一樣的特色,AppScan 使用場景的原則是最大化的提升使用效率、儘早的把問題暴露出來,爲應用安全打下堅實的基礎。每一個企業均可以根據自身的開發現狀定義適合本身的使用模式。
通 過上面的介紹,咱們對 Web 安全現狀、應用安全重要性、以及應用安全產品 Rational AppScan 的使用有了必定的認識。可是,工具帶給客戶的不只僅是一些功能,更爲重要的是給企業帶來的深層次的收益,給企業在開發過程、安全策略等層面帶來了深入的變 化 . 下面咱們從幾方面闡述 AppScan 給企業帶來的價值:
綜上所述,隨着 Internet 的蓬勃發展,Web 的安全性已經被空前重視,薄弱的安全性也成爲了不少企業發展的瓶頸。然而,即使安全性如此受重視的今天,不少人對如何保障 Web 的安去性都存在着巨大的誤區。現實代表,只有增強 Web 應用的防禦,纔能有效的防範 75%的攻擊,Web 應用的防禦已經成爲安全話題中最爲不可獲缺的部分。IBM Rational 提供了 Rational AppScan 解決方案,在 Web 開發、測試、維護、運營的整個生命週期中,幫助企業高效的發現、解決安全漏洞,最大限度的保證了應用的安全性,爲企業發展提供了堅實的技術保障。
轉載自:http://www.ibm.com/developerworks/cn/rational/r-cn-appscan2/