黃林偉
(廣東工業大學華立學院 廣東 廣州 511325)
互聯網技術在不斷發展,從傳統的、以獲取信息為主的Web 應用(如各大企業門戶網站),到目前被廣大網民喜愛的Blog、Wiki、博客、社區、等,一種變革正在悄然形成。 這種變革,不但改變了我們對Web 應用的體驗,也正在漸漸改變我們的生活方式。這就是Web2.0。Web2.0 中涉及了很多名詞和術語, 比如Tags、Blogs、Ajax、Flex、MalWare、Wiki、RSS、Social Networking、Podcast、Mushup 等等。
通常在web2.0 網站開發中,對Flas 的訪問,可以通過嵌入到HTML 頁面中, 如圖1 所示。 也可以使用URL 直接訪問,如圖2 所示。

圖1 嵌入到HTML 的Flas 訪問

圖2 在URL 中直接訪問
Flash 使用Action Script 腳本語言, 該語言支持全局變量。 通常我們使用如下三種方式在Flash 中指定全局變量:
1)直接引用。

圖3 直接引用
2)嵌入URL 中。

圖4 嵌入URL 中
3)通過Flash 屬性。

圖5 通過Flash 屬性
由于Flash 支持全局變量,因此帶來了很多安全隱患。 只要攻擊者控制了全局變量, 那么他就可以實施多種攻擊行為。
XSF 是目前發生頻率最高的網絡攻擊手段之一,它是通過引誘用戶執行惡意的Flash 程序腳本 (如引誘用戶點擊包含惡意腳本的鏈接), 來達到竊取用戶信息或者實現其它惡意行為的目的。 正是由于Web2.0 鼓勵信息分享、信息交互和協作,用戶就有了更多的機會去看、去修改他人的信息,比如通過Streaming (流媒體) 中flash 播放器、Blog 或SNS(Social Networking Service),從而創造了更多的XSf 攻擊機會。 現在的瀏覽器允許在Web 頁面運行時主動插入HTML 代碼 (比如使用innerHTML 屬性),如果這些代碼中包含惡意的Flash程序腳本,則會被瀏覽器立刻執行,帶來安全隱患。
和XSS 原理相似, 不過XSF 是通過向網站注入惡意的Flash 程序來實施攻擊。 由于Web2.0 時代的應用復雜性 (如Mushup 應用), 注入的惡意Flash 不但可以攻擊同源內的應用,還可能在非同源的各個組件中傳播。
請看XSF 的一個例子:
首先, 某網站Flash 中可能有事先定義好的全局變量_root.movieURI,并且給該變量賦予正常Flash 文件調用,然后通過loadMovieNum()方法加載Flash 文件movie.swf,如圖6。

圖6 事先定義好全局變量
對于攻擊者,當他了解到此全局變量后,將惡意Flash 文件maliciousFile.swf 付給該變量, 瀏覽器就通過loadMovie()方法裝載了文件。 如圖7。

圖7 通過變量接收Flash 文件
該方法使用易受感染的Flash 文件進行典型的XSS 攻擊。和XSF 很相似,攻擊的發生同樣來源于對全局變量的引用,如將全局變量作為裝入函數(如getURL())的參數,見圖8。

圖8 定義全局變量
這樣, 攻擊者可以通過調用Flash 文件中的參數來裝入惡意腳本,如圖9。

圖9 調用參數執行腳本
攻擊者使用惡意腳本,可能執行如下操作:
1)將用戶的Cookie 值發送給攻擊者;
2)將用戶的共享Flash 對象發送給攻擊者;
3)將可通過DOM(如URL、表單字段等)訪問的信息發送給攻擊者。
考慮到Web2.0 時代的應用安全特點,Rational Web 應用安全解決方案不僅加強了對原有Web 安全隱患的診斷能力,還提供了針對新安全隱患的診斷和防御功能。
現在,惡意軟件受到了前所未有的關注。 在基礎防范層面上,可以通過從客戶端和服務器端著手。
客戶端保護包括:
明智的判斷, 不要接受不明來源的軟件下載和安裝,不要忽視瀏覽器警告和安全報警;
采用反病毒或反惡意軟件工具;
保持操作系統、瀏覽器和其它軟件的定期更新;
使用Web 網關保護;
服務器端保護包括:
通過入侵防御系統(IPS)進行運行時過濾;
使用服務器端的反病毒軟件。
Rational AppScan SE 7.8 (AppScan 標準版) 提供了對Flash 安全隱患的完整分析和測試。 這包括:
1)將Web 應用中的Flash 代碼解析為文本數據,從中收集鏈接,進行安全隱患分析;
2)播放應用中的Flash 文件,動態發現僅通過解析發現不了的鏈接;
3)測試由Adobe?Flex 應用程序發送的后臺AMF 協議消息。
圖10 是在配置AppScan 掃描某Web 應用時的Flash 選項,用戶可以根據需要選擇如何處理應用中的Flash。

圖10 AppScan 中Flash 配置選項

圖11 AppScan 的Flash 測試用例
提供對Flash 應用錯誤配置的測試, 如服務器是否對crossdomain.xml 文件進行過多授權、 是否對Flash 安全沙箱機制進行過多授權、Flash 程序調試信息是否保留在最終版本中等等。 根據這些最佳實踐,可以在早期預防部分跨站攻擊、信息泄漏等隱患。
提供十余種專門針對Flash 的測試用例,如跨站點Flash腳本攻擊、通過Flash 釣魚、通過Flash 進行的跨站點腳本攻擊、主機允許從任何域進行Flash 訪問等等。 如圖11。
我們僅在此分析Flex 技術開發Flash 應用。 互聯網從1996 年引入了Flash 技術后,通過動畫和交互,極大的改變了Web 頁面的用戶體驗。 2004 年3 月,Macromedia 公司基于其專有的Macromedia Flash 平臺, 發布了Flex。 它涵蓋了支持RIA(Rich Internet Applications)開發和部署的一系列技術。在Web2.0 時代,越來越多的開發者使用Flex 技術開發Flash 應用。 由于Flash 支持全局變量,因此帶來了很多安全隱患。 只要攻擊者控制了全局變量,那么就可以實施多種攻擊行為由此引入的安全隱患也不容忽視。
[1]劉斌仿,王南山.Flash cs3 動畫制作案例教程[M].湖北:湖北人民出版社,2009.
[2]李瓊.Flash8.0 閃客動畫輕松現場實戰[M].北京:航空工業出版社,2007.
[3][美]瑞哈特,曹銘.Flash MX 寶典[M].北京:電子工業出版社,2003.
[4]林玲.Flash 與Flex 的比較分析[J].長江大學學報:自然科學版,2010(3).
[5]陳磊.令人心動的FLEX[J].軟件世界,2007(22).
[6]康文.Adobe Flex 2.0:創建下一代Web 應用的助手[J].通信世界,2006(27B).
[7]邱彥林.Flex,越走越寬的RIA 之路[J].程序員,2009(4).