JavaScript 常見安全性漏洞和自動化檢測技術_javascript技巧

來源:互聯網
上載者:User

前言

隨著 Web2.0 的發展以及 Ajax 架構的普及,富用戶端 Web 應用程式(Rich Internet Applications,RIA)日益增多,越來越多的邏輯已經開始從伺服器端轉移至用戶端,這些邏輯通常都是使用 JavaScript 語言所編寫。但遺憾的是,目前開發人員普遍不太關注 JavaScript 代碼的安全性。據 IBM X-Force 2011 年中期趨勢報告揭示,世界五百強的網站及常見知名網站中有 40% 存在 JavaScript 安全性漏洞。本文將結合代碼向讀者展示常見 JavaScript 安全性漏洞,旨在協助讀者能夠在日常編碼工作中規避這些安全性漏洞。此外,用戶端 JavaScript 安全性漏洞與伺服器端安全性漏洞原理略為不同,自動化檢測 JavsScript 安全性漏洞目前存在較大的技術難題,本文將結合案例跟讀者分享如何利用 IBM Rational AppScan Standard Edition V8.0 新特性(JavaScript Security Analyzer,JSA)技術自動化檢測 JavaScript 安全性漏洞。

JavaScript 常見安全性漏洞

2010 年 12 月份,IBM 發布了關於 Web 應用程式中用戶端 JavaScript 安全性漏洞的白皮書,其中介紹了 IBM 安全研究機構曾做過的 JavaScript 安全狀況調查。樣本資料包括了 675 家網站,其中有財富 500 強公司的網站和另外 175 家著名網站,包括 IT 公司、Web 應用程式安全服務公司、社交網站等。為了不影響這些網站的正常運行,研究人員使用了非侵入式爬蟲,僅掃描了無需登入即可訪問的部分頁面,每個網站不超過 200 個頁面。這些頁面都被儲存下來,研究人員採用 IBM 的 JavaScript 安全分析技術離線分析了這些頁面,集中分析了基於 DOM 的跨網站指令碼編製及重新導向兩種漏洞。

測試結果令人驚歎,這些知名網站中有 14% 存在嚴峻的 JavaScript 安全問題,駭客可以利用這些漏洞進行植入流氓軟體,植入釣魚網站,以及劫持使用者會話等。更令人驚歎不已的是,隨著 IBM 的 JavaScript 安全分析技術的成熟發展,2011 年中期 X-Force 報告顯示,IBM 重新測試了上述這些知名網站並發現了更多的安全性漏洞,大約有 40% 的網站存在 JavaScript 安全性漏洞。

java企業級通用許可權安全架構源碼 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

下文本文將結合代碼向讀者展示常見這些 JavaScript 安全性漏洞,以便讀者在實際編碼過程中注意到這些安全問題,及早規避這些風險。

基於 DOM 的跨網站指令碼編製

我們都聽說過 XSS(Cross Site Script,跨網站指令碼編製,也稱為跨站指令碼攻擊),指的是攻擊者向合法的 Web 頁面中插入惡意指令碼代碼(通常是 HTML 程式碼和 JavaScript 代碼)然後提交請求給伺服器,隨即伺服器響應頁面即被植入了攻擊者的惡意指令碼代碼,攻擊者可以利用這些惡意指令碼代碼進行工作階段劫持等攻擊。跨網站指令碼編製通常分為反射型和持久型:當請求資料在伺服器響應頁面中呈現為未編碼和未過濾時,即為反射型跨網站指令碼編製;持久型指的是包含惡意代碼的請求資料被儲存在 Web 應用程式的伺服器上,每次使用者訪問某個頁面的時候,惡意代碼都會被自動執行,這種攻擊對於 Web2.0 類型的社交網站來說尤為常見,威脅也更大。應對跨網站指令碼編製的主要方法有兩點:一是不要信任使用者的任何輸入,盡量採用白名單技術來驗證輸入參數;二是輸出的時候對使用者提供的內容進行轉義處理。

但鮮為人知的是還有第三種跨網站指令碼編製漏洞。2005 年 Amit Klein 發表了白皮書《基於 DOM 的跨網站指令碼編製—第三類跨網站指令碼編製形式》("DOM Based Cross Site Scripting or XSS of the Third Kind"),它揭示了基於 DOM 的跨網站指令碼編製不需要依賴於伺服器端響應的內容,如果某些 HTML 頁面使用了 document.location、document.URL 或者 document.referer 等 DOM 元素的屬性,攻擊者可以利用這些屬性植入惡意指令碼實施基於 DOM 的跨網站指令碼編製攻擊。

下面我們將通過一個很簡單的 HTML 頁面來示範基於 DOM 的跨網站指令碼編製原理。假設有這麼一個靜態 HTML 頁面(如清單 1 所示),用來展示歡迎使用者成功登入的資訊。

清單 1. 存在 DOM based XSS 的 HTML 程式碼

<HTML><TITLE>Welcome!</TITLE>Hi<SCRIPT> var pos=document.URL.indexOf("name=")+5; document.write(document.URL.substring(pos,document.URL.length));</SCRIPT><BR>Welcome to our system…</HTML>

按照該頁面 JavaScript 代碼邏輯,它會接受 URL 中傳入的 name 參數並展示歡迎資訊,如清單 2 所示:

清單 2. 正常情況下的存取 URL

http://www.vulnerable.site/welcome.html?name=Jeremy

但如果惡意攻擊者輸入類似如下的指令碼,見清單 3,該頁面則會執行被注入的 JavaScript 指令碼。

清單 3. 存取 URL 中注入指令碼

alert(document.cookie)http://www.vulnerable.site/welcome.html?name=

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.