黃林偉
(廣東工業(yè)大學(xué)華立學(xué)院 廣東 廣州 511325)
互聯(lián)網(wǎng)技術(shù)在不斷發(fā)展,從傳統(tǒng)的、以獲取信息為主的Web 應(yīng)用(如各大企業(yè)門(mén)戶網(wǎng)站),到目前被廣大網(wǎng)民喜愛(ài)的Blog、Wiki、博客、社區(qū)、等,一種變革正在悄然形成。 這種變革,不但改變了我們對(duì)Web 應(yīng)用的體驗(yàn),也正在漸漸改變我們的生活方式。這就是Web2.0。Web2.0 中涉及了很多名詞和術(shù)語(yǔ), 比如Tags、Blogs、Ajax、Flex、MalWare、Wiki、RSS、Social Networking、Podcast、Mushup 等等。
通常在web2.0 網(wǎng)站開(kāi)發(fā)中,對(duì)Flas 的訪問(wèn),可以通過(guò)嵌入到HTML 頁(yè)面中, 如圖1 所示。 也可以使用URL 直接訪問(wèn),如圖2 所示。
圖1 嵌入到HTML 的Flas 訪問(wèn)
圖2 在URL 中直接訪問(wèn)
Flash 使用Action Script 腳本語(yǔ)言, 該語(yǔ)言支持全局變量。 通常我們使用如下三種方式在Flash 中指定全局變量:
1)直接引用。
圖3 直接引用
2)嵌入U(xiǎn)RL 中。
圖4 嵌入U(xiǎn)RL 中
3)通過(guò)Flash 屬性。
圖5 通過(guò)Flash 屬性
由于Flash 支持全局變量,因此帶來(lái)了很多安全隱患。 只要攻擊者控制了全局變量, 那么他就可以實(shí)施多種攻擊行為。
XSF 是目前發(fā)生頻率最高的網(wǎng)絡(luò)攻擊手段之一,它是通過(guò)引誘用戶執(zhí)行惡意的Flash 程序腳本 (如引誘用戶點(diǎn)擊包含惡意腳本的鏈接), 來(lái)達(dá)到竊取用戶信息或者實(shí)現(xiàn)其它惡意行為的目的。 正是由于Web2.0 鼓勵(lì)信息分享、信息交互和協(xié)作,用戶就有了更多的機(jī)會(huì)去看、去修改他人的信息,比如通過(guò)Streaming (流媒體) 中flash 播放器、Blog 或SNS(Social Networking Service),從而創(chuàng)造了更多的XSf 攻擊機(jī)會(huì)。 現(xiàn)在的瀏覽器允許在Web 頁(yè)面運(yùn)行時(shí)主動(dòng)插入HTML 代碼 (比如使用innerHTML 屬性),如果這些代碼中包含惡意的Flash程序腳本,則會(huì)被瀏覽器立刻執(zhí)行,帶來(lái)安全隱患。
和XSS 原理相似, 不過(guò)XSF 是通過(guò)向網(wǎng)站注入惡意的Flash 程序來(lái)實(shí)施攻擊。 由于Web2.0 時(shí)代的應(yīng)用復(fù)雜性 (如Mushup 應(yīng)用), 注入的惡意Flash 不但可以攻擊同源內(nèi)的應(yīng)用,還可能在非同源的各個(gè)組件中傳播。
請(qǐng)看XSF 的一個(gè)例子:
首先, 某網(wǎng)站Flash 中可能有事先定義好的全局變量_root.movieURI,并且給該變量賦予正常Flash 文件調(diào)用,然后通過(guò)loadMovieNum()方法加載Flash 文件movie.swf,如圖6。
圖6 事先定義好全局變量
對(duì)于攻擊者,當(dāng)他了解到此全局變量后,將惡意Flash 文件maliciousFile.swf 付給該變量, 瀏覽器就通過(guò)loadMovie()方法裝載了文件。 如圖7。
圖7 通過(guò)變量接收Flash 文件
該方法使用易受感染的Flash 文件進(jìn)行典型的XSS 攻擊。和XSF 很相似,攻擊的發(fā)生同樣來(lái)源于對(duì)全局變量的引用,如將全局變量作為裝入函數(shù)(如getURL())的參數(shù),見(jiàn)圖8。
圖8 定義全局變量
這樣, 攻擊者可以通過(guò)調(diào)用Flash 文件中的參數(shù)來(lái)裝入惡意腳本,如圖9。
圖9 調(diào)用參數(shù)執(zhí)行腳本
攻擊者使用惡意腳本,可能執(zhí)行如下操作:
1)將用戶的Cookie 值發(fā)送給攻擊者;
2)將用戶的共享Flash 對(duì)象發(fā)送給攻擊者;
3)將可通過(guò)DOM(如URL、表單字段等)訪問(wèn)的信息發(fā)送給攻擊者。
考慮到Web2.0 時(shí)代的應(yīng)用安全特點(diǎn),Rational Web 應(yīng)用安全解決方案不僅加強(qiáng)了對(duì)原有Web 安全隱患的診斷能力,還提供了針對(duì)新安全隱患的診斷和防御功能。
現(xiàn)在,惡意軟件受到了前所未有的關(guān)注。 在基礎(chǔ)防范層面上,可以通過(guò)從客戶端和服務(wù)器端著手。
客戶端保護(hù)包括:
明智的判斷, 不要接受不明來(lái)源的軟件下載和安裝,不要忽視瀏覽器警告和安全報(bào)警;
采用反病毒或反惡意軟件工具;
保持操作系統(tǒng)、瀏覽器和其它軟件的定期更新;
使用Web 網(wǎng)關(guān)保護(hù);
服務(wù)器端保護(hù)包括:
通過(guò)入侵防御系統(tǒng)(IPS)進(jìn)行運(yùn)行時(shí)過(guò)濾;
使用服務(wù)器端的反病毒軟件。
Rational AppScan SE 7.8 (AppScan 標(biāo)準(zhǔn)版) 提供了對(duì)Flash 安全隱患的完整分析和測(cè)試。 這包括:
1)將Web 應(yīng)用中的Flash 代碼解析為文本數(shù)據(jù),從中收集鏈接,進(jìn)行安全隱患分析;
2)播放應(yīng)用中的Flash 文件,動(dòng)態(tài)發(fā)現(xiàn)僅通過(guò)解析發(fā)現(xiàn)不了的鏈接;
3)測(cè)試由Adobe?Flex 應(yīng)用程序發(fā)送的后臺(tái)AMF 協(xié)議消息。
圖10 是在配置AppScan 掃描某Web 應(yīng)用時(shí)的Flash 選項(xiàng),用戶可以根據(jù)需要選擇如何處理應(yīng)用中的Flash。
圖10 AppScan 中Flash 配置選項(xiàng)
圖11 AppScan 的Flash 測(cè)試用例
提供對(duì)Flash 應(yīng)用錯(cuò)誤配置的測(cè)試, 如服務(wù)器是否對(duì)crossdomain.xml 文件進(jìn)行過(guò)多授權(quán)、 是否對(duì)Flash 安全沙箱機(jī)制進(jìn)行過(guò)多授權(quán)、Flash 程序調(diào)試信息是否保留在最終版本中等等。 根據(jù)這些最佳實(shí)踐,可以在早期預(yù)防部分跨站攻擊、信息泄漏等隱患。
提供十余種專門(mén)針對(duì)Flash 的測(cè)試用例,如跨站點(diǎn)Flash腳本攻擊、通過(guò)Flash 釣魚(yú)、通過(guò)Flash 進(jìn)行的跨站點(diǎn)腳本攻擊、主機(jī)允許從任何域進(jìn)行Flash 訪問(wèn)等等。 如圖11。
我們僅在此分析Flex 技術(shù)開(kāi)發(fā)Flash 應(yīng)用。 互聯(lián)網(wǎng)從1996 年引入了Flash 技術(shù)后,通過(guò)動(dòng)畫(huà)和交互,極大的改變了Web 頁(yè)面的用戶體驗(yàn)。 2004 年3 月,Macromedia 公司基于其專有的Macromedia Flash 平臺(tái), 發(fā)布了Flex。 它涵蓋了支持RIA(Rich Internet Applications)開(kāi)發(fā)和部署的一系列技術(shù)。在Web2.0 時(shí)代,越來(lái)越多的開(kāi)發(fā)者使用Flex 技術(shù)開(kāi)發(fā)Flash 應(yīng)用。 由于Flash 支持全局變量,因此帶來(lái)了很多安全隱患。 只要攻擊者控制了全局變量,那么就可以實(shí)施多種攻擊行為由此引入的安全隱患也不容忽視。
[1]劉斌仿,王南山.Flash cs3 動(dòng)畫(huà)制作案例教程[M].湖北:湖北人民出版社,2009.
[2]李瓊.Flash8.0 閃客動(dòng)畫(huà)輕松現(xiàn)場(chǎng)實(shí)戰(zhàn)[M].北京:航空工業(yè)出版社,2007.
[3][美]瑞哈特,曹銘.Flash MX 寶典[M].北京:電子工業(yè)出版社,2003.
[4]林玲.Flash 與Flex 的比較分析[J].長(zhǎng)江大學(xué)學(xué)報(bào):自然科學(xué)版,2010(3).
[5]陳磊.令人心動(dòng)的FLEX[J].軟件世界,2007(22).
[6]康文.Adobe Flex 2.0:創(chuàng)建下一代Web 應(yīng)用的助手[J].通信世界,2006(27B).
[7]邱彥林.Flex,越走越寬的RIA 之路[J].程序員,2009(4).