江 導
(順德職業技術學院 廣東 528000)
WEB 瀏覽器是一個軟件程序,用于與 WWW 建立聯結,并與之進行通信,它可以在 WWW 系統中根據鏈接確定信息資源的位置,并將用戶感興趣的信息資源取回來,對 HTML 文件進行解釋,然后將文字圖像顯示出來,或者將多媒體信息還原出來。瀏覽器主要包括用戶界面、瀏覽器引擎、網絡、JS解釋器、數據存儲等組件。目前典型的 WEB 瀏覽器有 Internet Explorer、360極速瀏覽器、360安全瀏覽器、搜狗瀏覽器、獵豹瀏覽器等,它們適用于各種不同的環境。
WEB漏洞:
WEB應用程序的正常運行,涉及到客戶端瀏覽器、網絡協議傳輸、服務器響應、數據庫査詢等許多方面。其中無論哪一方面出現漏洞,均可能導致WEB安全問題。漏洞即某個程序(包括操作系統)在設計時未考慮周全,當程序遇到一個看似合理,但實際無法處理的問題時,引發的不可預見的錯誤。系統漏洞又稱安全缺陷,如漏洞被惡意用戶利用,會造成信息泄漏,如黑客攻擊網站即利用網絡服務器操作系統的漏洞。任何事物都非十全十美,作為應用于桌面的操作系統—Windows 以及運行于該環境中的 WEB 瀏覽器也是如此。這直接危害到我們使用計算機的安全行為,漏洞受病毒及惡意代碼利用,容易導致巨大損失。OWASP于2010年發布的Top 10應用程序,其中涉及到WEB應用程序的方面的有:客戶端的注入漏洞、跨站腳本漏洞、服務端的授權管理、安全誤配置、不安全的密碼存儲、網絡傳輸層的失效的 URL訪問重定向、弱保護等。
跨站腳本是服務端代碼漏洞產生的問題,因此唯有從服務端入手才能徹底解決。下面我們就主要討論瀏覽器XSS動態檢測技術。
動態檢測技術之所以稱為“動態”,是指它不直接在文本層次分析可執行代碼的行為,而是在代碼運行時進行動態調試、分析。動態檢測技術將代碼語義分析工作交給現成的代碼解析器,可以極大降低系統復雜度,避免語法語義分析不到位導致的誤判。
在XSS攻擊檢測領域,動態檢測意味著瀏覽器端XSS過濾器不再是一個相對獨立的附加組件,而是與瀏覽器各組件結合更緊密的一個安全機制。從瀏覽器架構的角度看,動態檢測技術工作在HTML解析器和Javascript解析器之間,即在HTML解析器生成的文檔對象模型(Document Object Model,簡稱DOM)樹中檢測腳本節點,完成后才將DOM樹中的腳本結點傳遞給JavaScript引擎執行。因此,動態檢測技術可以完全規避瀏覽器的 HTML解析“怪癖”,直接在 DOM樹中命中HTML文檔中的可執行腳本,準確率大幅提升。動態檢測技術有其優點,動態檢測技術在DOM樹的基礎上作檢測,因此與靜態檢測技術相比,它最顯著的優點就是不受瀏覽器解析怪癖的影響。無論多么復雜晦澀的HTML文檔,只要瀏覽器能解析出DOM樹,動態檢測時就不會產生歧義。同時,動態檢測直接從DOM樹的腳本節點下手還有個優點,它無須重復掃描分析HTML文檔。與傳統的模擬解析方法相比,這可以提升一定的性能。有優點,自然也少不了缺點,XSSAuditor假設服務端只采用簡單的幾種參數變換,并使用字符串精確匹配算法從URL中查找可疑腳本,這顯然不能覆蓋所有場景。一旦攻擊者發現服務端采用了XSSAuditor未知的參數轉換方法,就可以繞過它的檢測。另外,檢測策略不夠完善,對間接腳本注入無能為力。常見的反射型XSS攻擊都是將可執行腳本作為參數直接注入HTML響應中的,而XSSAuditor也作了針對性的匹配檢測。然而,對于間接注入的惡意代碼,XSSAuditor就無能為力了。
針對XSSAuditor未考慮復雜的服務端參數轉換,攻擊者可以針對存在復雜參數轉換的服務端發起反射型XSS攻擊。
例如,下面的服務端代碼會把參數中的“you”改成“me”,然后返回給瀏覽器:
1
2
Hello3
4 $name=$_GET[‘name’];
5 $new_name=str_replace("you",''me",$name);
6 echo $new_name;
7 ?>
正常的URL請求如下所示:
http://l 27.0.0.l/xss5.php?name=you
服務端收到請求后,會將參數中的“you”替換成“me”,因此正常的HTTP回應內容如下段代碼所示:
2
3 Hello
4 me
5