摘要:XML的普及帶來了一個不容回避的問題:安全。從XML技術在信息系統應用中的多個方面進行分析,涉及從客戶端、傳輸媒介至服務器的整個過程,并提出采用XML的計算機系統安全分析模式,指出相應的安全隱患。在給出一般系統級的安全措施后,有針對性的對各風險點的給出應對策略,并對XML安全相關技術進行總結。
關鍵詞:XML;信息系統;安全分析
中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2008)22-637-03
XML and Information System Security Analysis
XIE Xuan-yang
(The People's Bank of China,Hefei Central Branch, Hefei 230022,China)
Abstract:Widely used of XML brings the unavoidable problem of security. From some respects of this problem, such as client, information transfer media and server sides, this paper introduces an XML security analysis model in information system, and points out the vulnerable facts. After giving systematic techniques to avoid attacks, tactics to handle this problem are given. Finally concludes the XML related security technologies.
Key words:XML;Information system;Security analysis
1 引言
可擴展標記語言XML自1998公布第一個版本到如今,以其高度可擴展性被廣泛的應用。特別是伴隨著WEB應用和分布式系統建設的發展,使得XML的應用領域從簡單的數據文件交換到高級數據庫,從系統配置文件到構造松散耦合分布式系統等。然而與之相關的安全問題也逐步凸顯,特別是在WEB服務、RIA(Rich Internet Applications,富互聯網應用)及SOA(Service Oriented Architecture,面向服務的架構)等分布式計算環境中,XML帶來的安全隱患尤其值得關注[1,2]。
無論采用何種方式構造計算機應用系統,XML安全都可以定義為在由發起方發起,經傳輸媒介中不同的中間設備,最終達到目的地過程中對XML數據的保護。這個過程主要涉及到三個方面:發起方、傳輸媒介和目的地。實際中這個流程是不斷往復執行的,而流程中的三方也是常?;檗D換的。比如由發起方發起的XML信息,其中不同部分可能需要經由不同路由被傳送到不同或相同的目的地,而目的地經過處理后,可能將處理結果經過某個路由反饋回發送方。在這個簡單的過程中,發送方和目的地角色發生了翻轉,而兩個過程的傳輸媒介也發生了變化。
對上述過程進行抽象,可以構造XML技術在計算機系統中的安全分析模式。在一個給定的封閉計算機系統Π'={Γ,M,Φ}中,Π'的運行是指各個參與者Γ={τ1,…,τp}之間通過傳輸媒介M={m1,…,mq}不斷執行XML信息傳輸過程Φ={(XML,[Γ,M])|φ1,…, φr}。在每個φ中,XML信息亦有可能僅僅在傳輸媒介M內部進行傳遞而不經過任何參與者Γ。然而現實中計算機系統不是封閉的,需要引入外部參與者Θ,但Π'往往無法對Θ進行控制。在現實算機系統模型Π={Π', Θ}中,考慮到XML信息的開放性特征,可以定義安全分析模式Ω={S1~S5}為如下的5個要素:
1)S1數據安全:內外系統參與者Θ或M發起或提交的XML信息對Π不會產生危害或潛在安全隱患,這是一個基本要求;
2)S2保密性:XML信息在傳輸過程Φ中,能且只能被指定的參與者Γ'或媒介M'接收或中轉,任何Γ-Γ'或M-M'都不能獲取并正確解釋此信息;
3)S3真實性:在φ中,對每一個經由M的XML信息,都能保證的確是由發起人τ發起的,且Π具有核實身份的機制;
4)S4不可抵賴:Φ中的參與者Γ和媒介M都可以對XML信息的發起人τ進行認證,且τ無法否認其發送的XML信息和行為;
5)S5完整性:傳輸過程φ自啟動和停止的整個過程中,XML信息必須按照預期的方式進行流動和轉換,任何額外的Γ、Θ和M都不得進行非預期的干預,以確保XML接收方能收到預期的數據。
安全分析模式Ω為實踐中構造基于XML的計算機系統提供了安全指導。在一個典型的信息系統內,XML信息傳輸過程往往由客戶端發起,經過計算機網絡進行傳輸,并最終被提交給后臺服務器進行處理,如圖1所示。
這個典型的傳輸過程參與者包括外部參與者(用戶)和眾多內部參與者(服務器)及傳輸媒介(網絡),其中存在的常見安全隱患已經在圖1中標出。下面以此典型過程為模型,對涉及到XML的主要安全要素進行分析。
2 XML相關安全分析
2.1 DoS攻擊
這是早期一種針對采用XML數據的服務器的一種攻擊方式,主要利用DOM模式XML解析器一次性加載XML文檔的原理,向服務器提交異常XML數據文件并造成服務器負載過大而無法正常運行。XML解析器在信息系統中占有極其重要的位置,因為任何涉及XML數據的操作都將引起服務器對解析器的調用。通過頻繁的和發送復雜程度高的XML數據并提交至服務器,極有可能造成服務器服務質量的降低甚至假死,從而引起DoS攻擊。
攻擊XML服務器通常有兩種途徑,即通過提交大尺寸文件和高深度文件。在采用DOM模式解析XML文件的服務器中,往往需要將整個XML文件加載至內存后再進行解析。通過構造大文件,利用XML采用Base64或其他方式對二進制數據進行編碼這一特性,引起服務器內存嚴重消耗甚至泄露。通過構造層次極多的高深度XML文件或帶有循環引用的XML文件,并提交后臺服務器,造成服務器CPU資源大量被用來解析復雜度很高的XML數據,而一些具有循環引用的XML數據,則會給服務器帶來額外的分析時間消耗。
2.2 SOAP/SOA攻擊
在采用SOAP(簡單對象訪問協議)構造的分布式和遠程信息系統中,針對服務器提供SOAP服務的攻擊也較為常見。這種攻擊常常是通過大量對SOAP的調用,達到消耗服務器資源的目的。由于SOAP請求本身是采用XML格式進行封裝的,因此還有一種SOAP攻擊是在請求服務的參數中混雜大量無效數據,引起SOAP服務提供者無法為正常請求提供服務。
在一些復雜的網絡環境中,為了讓SOAP封裝包通過復雜的分布式環境,從而能夠在不同服務提供者之間進行傳遞,WSRP(Web服務路由協議)也常被采用。這是一種對SOAP包進行路由的無狀態協議,允許在消息傳遞過程中動態添加路由信息。如果在傳遞路徑中被攔截并被惡意修改路由,則會造成信息泄露或目標服務提供者的拒絕服務,從而引起泄密事件及DoS攻擊。
面向服務的架構SOA目前已經在一些大型企業得到應用,這種架構改變了應用系統的構建和數據存取方式,并且在其中XML得到了極為廣泛的使用。由于SOA構架的開放性及XML文本編碼數據特點,SOA系統可能需要花費大量的網絡和計算資源用于處理XML數據和SOAP請求。一些惡意攻擊者往往利用SOA這些特點進行大量廣播XML數據和SOAP請求包,造成服務器的服務質量下降。
2.3 XML注入攻擊
這是目前比較新的一種攻擊方式,它借用SQL注入攻擊的模式,通過構造符合語法但卻為惡意的XML查詢對系統進行越權訪問或獲得敏感數據。將在采用XML文本作為數據庫介質的應用中,與關系型數據庫查詢類似,常常需要從XML數據中提取部分數據。目前主要有兩種方式:XPath和XQuery。其中XPath以一種類似正則表達式的方式從XML中對數據進行篩選,而XQuery則完全類似關系數據庫中的SQL查詢語言。與SQL注入攻擊這種廣為熟悉的原理類似,XQuery也可以比照采用類似的防范措施進行預防。而XPath注入攻擊則是最近出現的一種新的注入攻擊方式,由于XPath語法相對專業化,因此目前出現的個案并不是很多,但也應該引起我們足夠的重視。
XPath主要利用了XPath解析器的松散輸入和容錯特性,使得在進行數據篩選時是能附帶惡意查詢代碼并獲得權限信息。最早對XPath注入攻擊的文獻是2004年Amit Klein的一篇文章[3]。以多數WEB應用需要對用戶進行身份認證為例,假定用戶資料以XML格式進行存儲如下:
<?xml version=\"1.0\" encoding=\"GB2312\" ?>
<users>
<user id=\"1\" truename=\"張三\" isAdmin=\"1\">
<loginName>zhangsan</loginName> <!--登陸ID-->
<password>xd@5!d9</password> <!--加密后的用戶密碼-->
</user>
</users>
在XPath中,對用戶登陸過程進行驗證一般采用如下語句模式:
//users/user[loginName/text()=’zhangsan’ and password/text()=加密后密碼]
如果用戶在輸入信息中附加“or 1=1”則會構成如下XPath:
//users/user[loginName/text()=’zhangsan’ or 1=1 and password/text()=加密后密碼 or 1=1]
則注入攻擊成功并獲得系統管理員權限。在采用了其他XPath提供的結點集函數(count,name、position等)、字符串函數(string,contains,substring等)及邏輯操作函數等,可以通過構造“合法”XPath獲取系統后臺XML數據文件的內容,可以參考[4]。
2.4 XML數據劫持
鑒于XML純文本的開放式特征,惡意系統參與者可以通過諸如監聽網絡、網絡釣魚、非法篡改等方式劫持系統中的XML數據,并由此達到侵害信息系統的目的。XML數據劫持幾乎涉及到安全模式Ω中每個要素。監聽網絡雖然不會直接對信息系統進行攻擊,但會造成XML信息的泄露,從而引起數據安全隱患;網絡釣魚(phishing)是近期比較流行的一種方式,它通過仿冒系統參與者直接劫持XML信息;非法篡改是更為惡意的一種攻擊方式,它將XML信息接截獲后又按照自己的意圖重新包裝,然后偽裝成參與者繼續傳遞XML信息。雖然此類安全隱患直接針對信息系統,但對此的防范研究也開展的較為深入,目前已經存在一些XML安全規范可以應對。
3 應對措施
3.1 基本原則
最重要的是從認知層面對由此帶來的隱患高度重視,這是任何信息系統建設和管理者必須深刻認識到的。Burton集團的研究主管Anne指出要“采用行政驅動(policy driven)模式,允許安全部門實際有權決被保護對象和范圍,并可以將安全措施具體化”[5]。應該注意到,針對XML技術而帶來安全風險處理不應該是點或面的,應當放在系統的角度進行統籌考慮,有時需要在安全與性能之間進行合理的定位。
一個采用XML的信息系統,應該至少遵從如下若干通用業界安全原則:
1)對服務器而言,所有的輸入都應該被假定為可疑的;
2)客戶端的驗證,比如頁面腳本對用戶輸入的驗證,是不可依賴的;
3)除了檢查用戶輸入是否合法外,是否“合規”也是需要進行驗證的,比如輸入數據的長度、特殊字符個數、敏感保留字等;
4)如有需要,對XML中的重要信息進行加密,附加數字簽名后采用安全的網絡傳輸協議進行傳輸;
5)發布應用之前,構造已知的安全威脅用例對計算機系統進行壓力和安全測試。
3.2 DoS攻擊的防范
DoS攻擊是目前較難防范的一種情況,特別是目前從單機發展到網絡協同對服務器進行攻擊的階段,使得一些簡單配置的網絡設備或服務器配置無法有效抵御。一般而言,分布式DoS攻擊很少通過發送大型、復雜的XML文檔對應用服務器進行施壓,而是采用多點頻發的模式進行高密集度的攻擊。在確保數據進行合規驗證的前提下,可以采用DOM對XML進行解析,否則采用SAX方式進行。而對分布式DoS攻擊,在依靠主機系統加固的基礎上,采用外掛專業設備的方式進行處理,比如可以部署如硬件防火墻、入侵檢測系統(含主機入侵檢測HIDS、網絡入侵檢測NIDS,甚至采用IPS系統)等對之進行攔截和阻斷。
3.3 確保XML信息處理質量
無論是抵御何種方式的DoS攻擊,提高信息系統對XML的處理能力都是必須的。除依靠傳統計算機設備對XML進行傳輸和處理外,可以部署專門的XML加速器(XML解析、DTD/Schema審核、XPath和XSLT處理等)、XML安全網關(XML安全策略和路由、SOAP及WSDL等)、XML防火墻(訪問控制、DoS防范、WS-*系列、VPN等)等。這些設備是一種基于硬件的中間件基礎設施,專門對XML信息進行處理和安全保證。
3.4 采用規范確保XML安全
應對XML數據的安全,可以采用一系列有關的業界標準,包括XML加密、數字簽名[6]、XACL(可擴展訪問控制語言)、SAML(安全性斷言標記語言)、XKMS(XML密鑰管理規范)及WS-*系列規范等。這些規范主要由W3C和OASIS兩個國際組織提出。在本文成文之時獲悉,中國自主可信計算標準TCM申請成為國家標準的建議稿已獲通過。TCM在現有計算機架構上添加硬件模塊及相應軟件,以構建一個操作系統體系之外的計算機安全平臺,從而從根本上解決計算機的安全問題。
4 結束語
XML的出現帶來了信息系統構造的巨大變革,特別是網絡環境的加入使得針對XML信息的安全顧慮凸顯。本文首先提出基于XML的信息系統安全分析模式,并給出該模式的五個要素。在此模式的指引下,結合實際應用情況,本文還分析了各種風險點,并給出應對策略。最后要指出的是,XML信息系統的安全保障是一個不斷發展的過程,只有在保持高度重視的同時,不斷追蹤國內外發展動態,隨信息系統生存周期動態部署系統化安全措施。
參考資料:
[1] 馬恒太.Web服務安全[M].北京:電子工業出版社,2007.
[2] Blake Dournaee.XML安全基礎[M].周永彬,譯.北京:清華大學出版社,2003.
[3] Klein A. Blind XPath Injection[EB/OL]. Sanctum Inc.http://www.modsecurity.org/archive/amit/blind-xpath-injection.pdf,2004.
[4] Runa Dwibedi,XPath injection in XML databases[M].Palisade online magazine,http://palisade.plynt.com/issues/2005Jul/xpath-injection/,2005.
[5] Manes A T., Brown A.Think Globally,Act Locally for SOA Security-Strategies for Securing Applications in an Insecure World[EB/OL].http://www.ebizq.net/webinars/8484.html,2007.
[6] 謝鉉洋,謝榮傳.XML數字簽名[J].計算機應用研究,2002,(19):95-97.