天天看點

XML與Webservices相關的安全問題概述

  與基于Internet技術實作人與人通信(e-mail)和人與應用程式(Web頁)的通信方式很相似,XML和Web services從根本上改變了應用程式之間的通信方式。他們使應用程式之間的通信更加有效,而不必要處理底層的通信機制。

  然而,Web services标準不能徹底解決XML Web services的安全性。本文将提供XML與 Web services相關的安全性問題的概述,略述目前在運用的這些标準,并說明現今如何保護Web services通信的安全,不論其是否在防火牆下。

XML與 Web services相關的安全性問題的概述

  如果一開始沒有正确解決安全問題就使用XML Web services,那麼即使位于防火牆之下,也會造成嚴重的風險。雖然能夠使用目前的一些技術(如安全套接層(SSL)和輕量級目錄通路協定(LDAP)等)來保護高度受控的Web

services網絡,但是它們無法很好地适應任務關鍵型環境。

  Web services會暴露新的重大安全風險,在實作任何關鍵任務期間,必須解決這個問題。比如:

在應用層上,Web services避開了防火牆,是以網絡防火牆不能夠提供足夠的安全保護(防火牆要保護的是網絡層的安全,而不是應用層的安全)。

Web services網絡通常是基于同層的,其分散式管理妨礙了标準化、全面可見性和控制。即使出現一些标準,它們也是發展迅速、不斷變化,并且是不統一的。是以,在實作Web services時同時,使用多個标準是常有的事。這是因為技術管理人員使用了許多遺留标準,他們不想将賭注下在某一個特殊的标準上。

Web services網絡允許您連接配接應用程式,這樣将導緻松散耦合的、具有不同安全方案和能力的異構網絡。

Web services網絡是動态的,并且其增長是有機的,這些将增加經營和管理成本。

Web services接口暴露了比标準接口更多的功能。因為Web services接口是應用程式接口,是以它們暴露了更多會受到内部和外部威脅的功能。由于它們的複雜性和暴露性,這些接口的安全性更容易遭到破壞。

Web services允許連接配接不同的應用程式,比如大型機、桌面應用程式、.NET、Sun ONE、打包應用程式等,是以很難為它們定制标準化的安全,也很難通過不同的系統對它們進行監視(如圖1)。

XML與Webservices相關的安全問題概述

(圖 1. 獲得連接配接)

标準化安全

  身份驗證、授權、機密性和簽名支援,它們是基于Web通信的4項基本安全要求,同時也是XML Web services安全通信的基礎。是以,可以利用實作Web安全的現有基礎設施來實作XML Webservices,進而為XML消息提供安全。

  然而,Web services也引入了新的安全問題。

  盡管XML Web services與大多數Web基礎的通信使用的是相同的傳輸機制,但典型的XML網絡還需要其他安全性來確定最小的安全保護級别。是以,即使在可控環境中,也能夠使用現有的技術保護試點項目,但是随着時間的推移,各種安全和管理問題還是會出現。

圖 2. 保持其安全

  在公司整合了不同的系統之後,互操作性就成為一個嚴重管理問題。盡管SOAP、WSDL和UDDI标準化了通信,但仍然需要解決安全問題,以及資料和傳輸互操作性方面的問題。

services中或者代理器中定位他們,以便通過多個服務共享它們。

  經營和管理的可伸縮性引出了另一個尺度問題。通過将服務請求者組合在一起,能夠更有效地管理安全政策,而Web services接口是一個常常被遺忘的必要條件,您應該及早計劃。

  在Web services環境中,單點登入也起着一個十分重要的作用。不同的系統需要彼此進行通信,對于每一個系統而言,維護另一個系統的身份驗證權限和通路控制清單(ACL)是不現實的。一種解決方案是為每一個人提供相同的證書。然而,當其中的一個成員不受信任時,就會出現嚴重的問題。您必須給其他所有有效成員發送新的證書。當需要取消使用者的權限時,每項服務都需要一個單獨的證書,而這是很難管理的。需要取消使用者權限的每個系統很難實作身份驗證和授權。確定使用者不再通路所有系統同樣也很困難。單點登入解決方案和證書映射解決方案有助于解決這個問題。每個Web

service負責處理它所習慣的證書系統,這能降低管理成本,并能提供資料保護。

  SOAP接口代表另一種可能的安全漏洞,因為這些軟體API可能會暴露功能。例如,一個打包應用程式可能有成百上千的關鍵操作被暴露,而所有這些都可以通過端口80讀取;攻擊者可以得到更多他可以使用的标準資訊。Web服務描述語言(WSDL)檔案、通用描述、檢測和整合(UDDI)等這些條目提供了關于服務的詳細資訊,例如,如何調用它,希望發送和接受什麼樣的參數等,這些為黑客提供了登入所使用的資訊。SOAP資訊和WSDL檔案都是XML格式的,這種格式是自描述的,它清楚地顯示了資料元素和資料結構。擁有這些資訊,黑客能夠了解資訊格式,并充分利用它。盡管随着時間的推移,黑客對Web

services的攻擊變得越來越老練,但與此同時,有更多的資訊可用于檢測系統安全和防止安全問題。

了解攻擊的風險

  網絡防火牆能夠阻止标準形式的攻擊,但是Web services卻提供了新形式、新類型的攻擊機會,這些攻擊通常是通過端口80進行的。最常見的攻擊包括拒絕服務、重放、緩沖溢出、字典密碼、SQL注入和跨站點腳本攻擊等。熟悉這些攻擊類型十分重要,這樣可以保護Web services不受攻擊。

  拒絕服務攻擊通常發生在網絡層,但是卻在整個Web services世界中流行。目前的Web站點技術能夠很好地檢測标準的拒絕服務活動,但是由于Web services接口是異構的,是以您需要了解更多有關基本Web services應用程式的知識,以便更好地保護它們。例如,一個提供簡單資訊(比如股票報價服務)的Web services可能每秒鐘可以輕松處理1000個請求。然而,由于計算太複雜,申請借款應用程式每個小時可能最多能夠處理5個請求。每小時向申請借款接口發送10個請求可以阻止拒絕服務攻擊,但是通過正常途徑(比如防火牆)很難檢測到問題。防火牆無法在每一項操作的基礎上提供控制拒絕服務的粒度需求。了解并收集标準使用資料應該對提供有關每項服務的側面資訊很有幫助,這樣,您就能夠保護這些資訊不受拒絕服務的攻擊。

  與拒絕服務類似,重播攻擊是複制有效的消息,并反複将它們發送到某個服務中。您能夠應用某些技術檢測并處理有利于打擊重播攻擊的拒絕服務。在某些情況下,因為有效負載資訊很容易獲得,是以重放服務很容易被檢測到。在使用正确工具的情況下,即使通過多種媒體(如HTTP、HTTPS、SMTP等)或通過不同的接口發送相同或者類似的有效負載,也能夠檢測這些攻擊模式。

  使用XML Web services時,關于資料參數的資訊将被暴漏。另外,更多通過許多不同接口類型傳遞的資料可能在不同的系統間傳遞,這為黑客發起緩沖溢出攻擊提供了機會。例如,攻擊者可以發送一個過長的參數,例如一個超過預期長度或者包含不合需要的編碼的密碼,這會造成服務崩潰,或者執行攻擊者提供的那些代碼。在數字字段中發送字元可能會造成一些問題,因為應用程式不會預料到這些。啟用Web services的許多遺留系統是設計用于受限制的、可推斷的請求的,并且它們可能沒有準備好處理異常情況。為Web services提供防止惡意攻擊的保護是必需的,特别是那些遺留系統。

  黑客通常發送不正常格式的内容來制造與緩沖溢出類似的效果。比如,在字元串中發送引号、句号和通配符等,如果應用程式沒有為處理這些攻擊做好準備的話,那麼這些内容通常可能使應用程式一片混亂。測試并過濾這些異常内容對阻止幹擾行為很重要。

  SQL注入式攻擊通過添加特殊的字元或術語緻使SQL語句傳回預料之外的資料。例如,一個應該以SQL語句的WHERE子句結尾的字元串可能被欺騙而包含了更多的資訊。比如,以下參數值可能造成傳回整個表,因為1=1在WHERE子句中永遠為TRUE:

X' OR 1=1

  對于任何通路後端資料庫的應用程式而言,過濾這些類型的樣式是十分重要的。否則,黑客能夠運作資料庫指令,這可能傳回敏感資料,或者修改和删除資料。

  脆弱的密碼保護是另一種重要的安全風險的代表。字典攻擊很常見,在這種攻擊模式下,黑客可能手動嘗試一些常見的密碼,或者通過程式設計的方式進入一個系統或者多個系統。管理者應該確定使用者選擇的密碼是很難猜測的并經常改變它們。與标準的使用者證書不同,管理者決定了應用程式證書。您應該要求使用者使用密碼加強規則,以便Web services接口應用程式很好地工作。

  病毒同樣也是Web services安全的一個威脅,加密技術使得檢測病毒成為一個挑戰。Web services通信量中可能包含一些附件,在加密内容的時候,病毒也被加密。這樣,病毒檢測程式就很難檢測惡意軟體。為了阻止病毒通過Web services入侵系統,應該在目的地對加密資料執行病毒檢測,或者使用中間物進行病毒檢測,這樣可以先解密資料進行病毒掃描,然後重新加密後再傳輸。

  對XML Web services的惡意攻擊還不是那麼很普遍,很大程度上因為多數Web services項目都處于防火牆之下。不信可以試一下,一旦Web services大量洩漏于防火牆之外,攻擊将會十分頻繁,但是因為Web服務接口的異構特性,這些攻擊很難檢測。您能夠利用各類工具,比如入侵檢測系統(IDS)工具和XML防火牆,來避免這些類型的攻擊。

研究Web services的标準

  雖然一些現有的标準,如LDAP、公鑰基礎設施(PKI)和SSL,在Web services安全中起着十分重要的作用,但其他一些标準對于提供Web services惟一安全性需要也是必需的。雖然基本的SOAP、WSDL和UDDI Web services标準已經制定好了,但是一些專用于Web services安全的标準,比如安全聲明标示語言(SAML)、XML加密、XML簽名和WS-Security等,仍然在發展當中。網際網路聯盟(W3C)上司着這些标準的開發。

  SAML協定聲明了身份驗證和授權資訊。可以通路SAML相容的伺服器來獲得身份驗證和授權資料,進而啟動單點登入。XML加密協定描述了數字内容的加密。它包括用來加密XML文檔部分的協定,并允許進行端到端加密,因為隻有私有内容被加密。會話級加密隻能提供兩台伺服器之間的資料保密。XML簽名協定描述了數字内容的簽名。它包括用于XML文檔簽名部分的協定,并允許使用諸如消息完整性之類的功能。XML密鑰管理規範(XKMS)描述了公鑰的配置設定和注冊。服務能夠通路XKMS相容伺服器來接收用于加密和身份驗證的更新過的密鑰資訊。

  其他組織在運用另外一些标準。微軟和IBM正在開發WS-Security,為保護資訊的完整性和機密性提供了核心工具。WS-Security還包括一些與資訊安全性有關的機制。目前,WS-Security描述了如何給SOAP消息加上簽名、加密和安全标記。OASIS則緻力于可擴充通路控制标記語言(XACML),該語言通常用來描述通路權政策,它們提供了一些身份驗證和授權資訊。Sun和其他自由聯盟公司完成了Liberty Alliance Project,傳遞并支援用于Internet的一個聯邦網絡身份解決方案,該方案允許消費者與商業使用者使用一種開放的、聯合的方式實作單點登入。IBM目前還正在發展HTTP-R,這是一個适用于可信賴消息的傳遞标準。最後,可擴充權限标記語言(XrML)是一種用來安全指定和管理權限以及條件的通用方法,這些條件與包括數字内容和服務的資源相關。假設有很多标準都在發展中,并且很多廠商都着急使用這些标準,那麼公司必須注意它們支援的每一個标準。即使您的組織是IBM或者.NET這樣的公司,可能也需要使用由其他供應商的解決方案生成的Web

services。

安全性現狀,安全性未來

  雖然應該與最新出現的Web services安全标準保持一緻,但您能夠使用遺留的技術保護Web services通信。專用鍊路或SSL能夠確定通信和Web services網絡的資料保密。而且您能夠使用現有身份驗證目錄(如LDAP或X.509證書)來進行身份驗證和通路控制。可是,這些解決方案隻在某種受控制的、簡單的環境中起作用,它們并沒有很好地從性能和管理方面得到擴充。Web services都與整合不同的系統有關,甚至可以跨不同的企業;使用遺留技術來維持安全互操作性的代價是很高的。為了給那些不固定的和動态的環境提供真正的端到端的安全,需要混合使用一些技術和标準。一開始就建構一個可伸縮的安全性很重要。在制造了一大對類似于嘗試在一個标準Web應用程式中确立品質時遇見的問題之後,建構一個可伸縮的安全性。例如,試着在異構的、分散的環境中實施公司級政策,随着添加到網絡中的Web

  在實作Web services安全性時,企業常常不得不選擇在共享服務層中建構安全性,或者在每個應用程式節點中構創它(比如在每台應用伺服器上)。每個方法都有其優點和缺點。當在每個Web service中建立安全性時,會獲得短期成本效益,并減少了實作每個Web服務所需的時間。使用現有系統也會有一個較低的初始進入壁壘。

  然而這種方法也存在許多短期和長期的缺陷。首先,很難将它添加到遺留的代碼和打包程式中。此外,在所有節點中實作和維護統一的政策不是一個簡單的過程。而且也很難證明您已經實作了一個給定的安全政策。最後,在每個服務中複制安全性很昂貴,特别是在Web services移植到桌面時。

  是以,您可能想将安全性視為一種共享服務。當公司将安全性作為共享服務來建構時,其優點是服務具有長期性和可伸縮性,這是不足為奇的。其他優點包括維護互操作性的費用較低,Web services網絡、管理和控制的集中可見性,利用最佳密碼加速器的能力。不過,這種方式的折衷包括在網絡中額外跳躍(extra hop),解決方案必須支援多種标準和技術,并且該解決方案是一個無法伸縮的解決方案,那麼會存在潛在的瓶頸。同樣,網絡防火牆可以以同樣的方式成為共享服務,來保護多種Web頁面,許多分析家相信應用程式安全性将會逐漸成為一種共享服務模式。

----------------------------------------------------------------------------------------------------------------------------------------------------

關于作者

參考資料 

<a href="http://www-106.ibm.com/developerworks/library/ws-secure/" target="_blank">Web ServicesSecurity (WS-Security)</a>

作者簡介:Mark O'Neill是Vordel公司的CTO,Vordel公司是一家Web services安全公司。Mark是Web servicesSecurity(Osborne/McGraw-Hill,2003年1月。IBSN:0-0722-2471-1)一書的作者,經常做XML和Web services安全方面的演講。他經常出外旅遊,但同時也盡量抽出時間來陪他在波士頓的妻子Kristen以及他們新出生的孩子Ben。

<a href="http://www.w3.org/2002/ws/" target="_blank">W3C Web Services Activity</a>

原文出處

<a href="http://www.ftponline.com/wss/2003_TE/magazine/features/ayang/%20" target="_blank">http://www.ftponline.com/wss/2003_TE/magazine/features/ayang/</a>

XML與Webservices相關的安全問題概述

繼續閱讀