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