跳至主內容

通用隨插即用(UPnP) 功能服務顯露 潛在危機四伏

發佈日期: 2013年02月28日 61707 觀看次數

當我們播放數碼媒體內容或進行線上遊戲時,或者未有注意我們正在使用通用隨插即用(UPnP)功能。Rapid 7 最近的研究指出,約有4至5千萬台網絡裝置,因通用隨插即用(UPnP)通訊協定的漏洞而受到保安威脅,攻擊者可遠端控制受影響的裝置。如你想進一步了解通用隨插即用(UPnP),請細閱以下文章,檢查你有否受到這些漏洞影響,以及緩解保安風險。

 

(A) 甚麼是通用隨插即用(UPnP)?

通用隨插即用(UPnP)是一套網絡通訊協定,用途主要為用家設定家庭或公司環境的網絡裝置,讓各網絡裝置不經人手設定,就能自動互相連接及溝通。通用隨插即用(UPnP)功能支援多種類別裝置,包括網絡印表機、互聯網閘道及消費者電子裝置等。

 

通用隨插即用(UPnP)標準化組織制定標準化的裝置設備描述檔被廣泛使用,常見的包括:

  • 網際網路閘道裝置(IGD)描述檔
  • 影音(A/V)描述檔 -- 用於媒體管理、探索及控制,並作為數位生活網路聯盟(DLNA)標準的基礎

如果你對通用隨插即用(UPnP)的技術運作有興趣,可參閱附錄I: "通用隨插即用(UPnP)如何運作?"

 

 

 

(B) 甚麼時候會使用網際網路閘道裝置(IGD)的通用隨插即用(UPnP)功能?

在IPv4網絡中,經常都會使用網絡網址轉換(NAT)功能,使不同私用IP地址的內部主機,共用路由器單一的公用IP地址。路由器會跟蹤所有內部主機對外的連線,以便能把由外部接收的數據正確地轉送至相關的內部主機。但是,對於VoIP話音服務這一類需要由兩端端點啟動連線的網絡通訊協定,路由器一般都沒有預設支援。通用隨插即用(UPnP)功能就能向已開啟網絡網址轉換(NAT)的路由器提供相關連接埠轉送/對應的設定,讓數據封包傳送至正確的內部主機。

 


圖1: 允許對內連線的連接埠轉送/對應設定

 

 


圖2: 路由器設定頁的連接埠轉送/對應設定

 

 


圖3: 路由器設定頁的 UPnP 選項

 

 

在網際網路閘道裝置(IGD)背後運行的通用隨插即用(UPnP)控制器,可透過新增一個連接埠的對應,便能啟動由外部地址連接至內部客戶端的網絡網址轉換(NAT)穿透功能。一般支援通用隨插即用(UPnP)的應用程式(如 Skype)都會自動進行連接埠轉送的設定,你無需更改路由器的設定,只要啟動相應程式,預設的規則就會同時啟用,自動通知路由器何時開啟/關閉連接埠轉送功能。如果沒有通用隨插即用(UPnP)的支援,你便需要在路由器內人手設置連接埠轉送的規則。

 


圖4: Skype 設定的 UPnP 選項

 

 

 

(C) 通用隨插即用(UPnP)的保安漏洞

於2013年1月,Rapid 7公佈的研究結果發現,最少有4至5千萬台網絡裝置因通用隨插即用(UPnP)通訊協定的保安漏洞而受到保安威脅。由1,500個不同廠商生產和超過6,900款產品型號被發現含有最少一個已知的漏洞,其中多達2,300萬個系統更含有同一個遠端執行程式碼漏洞。


圖5: Rapid7 的統計摘要

 

通用隨插即用(UPnP)原設計為方便本區網絡內的電腦及網絡裝置之間進行溝通,而支援該通訊協定的系統甚為普遍,並預設開啟。由於含有可受攻擊漏洞的通用隨插即用(UPnP)系統仍然連接至互聯網,其數量之多或會帶來極其嚴重的保安影響,數以百萬計的用家現正受到遠端攻擊的潛在威脅,包括被盜取敏感資料或對相關連接裝置作進一步攻擊。

  1. 通用隨插即用(UPnP)簡易服務探索通訊協定(SSDP)服務廣泛顯露

    UPnP SSDP 原設計為本區的網絡進行裝置探索,該服務可透過UDP 1,900連接埠透露版本資訊及網絡設定詳細資料等。網絡上有多達8,100萬個獨立IP地址曾被識別(相等於公用IPv4地址總數的百分之二),並對UPnP探索請求作出回應。這些裝置可能成為攻擊者的獵物,被套取系統資訊及網絡設定。

     

  2. 通用隨插即用(UPnP) SOAP服務廣泛顯露

    UPnP SOAP服務能提供在防火牆開啟缺口的能力,因此,該服務一般都設定不允許未經信任的網絡存取。但在網絡上被識別的8,100萬台系統中,約有兩成(即1,700萬台)的系統,可經互聯網存取其 SOAP 服務,顯示惡意的人能對這些系統進行攻擊。

     

  3. 通用隨插即用(UPnP)實施中發現可被攻擊漏洞

    透過SSDP被發現的UPnP實施中,超過73%由4個軟體開發工具[包括 Intel/Portable SDK for UPnP Device (libupnp) 及 MiniUPnP]衍生出來。這種高度集中性會增加保安風險,例如被發現顯露SSDP服務的系統之中,超過四分之一(約2,300萬台)的系統正使用有漏洞的 Portable SDK for UPnP Device (libupnp) 版本。


    圖6: 被顯露UPnP實施的分佈

     

  4. 網絡裝置仍使用過期的通用隨插即用(UPnP)實施

    分析由SSDP的回應獲取的軟體程式庫版本等系統資訊,顯示裝置使用的 UPnP程式庫版本大都是4年前或更早推出的。就算是一些近期生產的裝置,仍然使用過期的有漏洞的UPnP軟件程式庫。


    圖7: Portable SDK for UPnP Devices的版本分佈

     


    圖8: MiniPnP的版本分佈

     

 

 

 

(D) 緩解通用隨插即用(UPnP)保安漏洞保安風險的措施

通用隨插即用(UPnP)保安漏洞的問題關鍵在於顯露通用隨插即用(UPnP)服務於互聯網上,解決的辦法是停止服務顯露,並修補設備的漏洞。

  1. 偵測

    你可使用以下“UPnP Router Security Check”線上工具,測試路由器的通用隨插即用(UPnP)功能有否顯露於互聯網。

    1. 開啟“UPnP Router Security Check”線上工具頁面 ( http://upnp-check.rapid7.com/scan )


      圖9: “UPnP Router Security Check” 線上工具

       

       

    2. 如果UPnP路由器已於互聯網顯露相關功能,或受到UPnP通訊協定的保安漏洞影響,便會得到以下的警告訊息。


      圖10: 因UPnP顯露的警告訊息

       

       

      我們建議你停用路由器的UPnP功能。

       


      圖11: 路由器設定頁的 UPnP 選項

       

       

    3. 如果你的路由器並沒有UPnP功能顯露於互聯網或已經停用UPnP功能,便會得到以下的掃瞄結果。


      圖12: 掃瞄結果顯示沒有UPnP顯露

       

       

  2. 預防

    1. 設置防火牆策略

      - 可考慮配置防火牆規則並停止UDP 1,900 連接埠的存取

       

    2. 停用路由器的UPnP功能

      - 可考慮停用UPnP,特別是經由互聯網端傳送的請求


      圖13: 路由器設定頁的 UPnP 選項

     

     

  3. 安裝更新及修補UPnP漏洞

    安裝由廠商提供的更新或修補程式。檢查廠商的公佈及相關UPnP產品資料,如確定裝置受漏洞影響而未能安裝修補程式,可考慮停用受影響裝置的UPnP功能

     

     

  4. 最佳的保安做法

    最佳的保安做法,你不應開啟任何不需要的功能。如果使用者不確認自己是否需要 UPnP,你可停用路由器的UPnP功能一段時間再作決定。

 

 


 

有關UPnP產品的參考資料

 

 


 

 

 


 

附錄I: 通用隨插即用(UPnP)如何運作?

(注意這部份會涉及一些技術資料))

通用隨插即用(UPnP)網絡連接包括以下6個程序

  1. 獲取地址(Addressing): UPnP裝置需於網絡中有熱拔插的支援,裝置會透過DHCP嘗試獲取IP地址,並連接至網絡。


    圖14

  2. 探索(Discovery): 探索功能是基於簡易服務探索通訊協定(SSDP),當一個裝置被加入至網絡並取得適當地址後,裝置會向控制點廣播自己提供的服務,並透過UDP 1900連接埠發送探索訊息至多點傳送地址。同樣地,控制點亦會搜尋網絡內裝置提供的服務。
  3. 描述(Description): 當裝置被發現時,控制點可透過訊息內裝置提供的URL獲取裝置描述及詳細服務資料,裝置描述內可能包括產品名稱、型號名稱、序號、廠商身份及嵌入式服務資料等。
  4. 控制(Control): 當一個控制點獲取裝置描述訊息及詳細服務資料後,控制點可利用SOAP以XML格式的控制訊息向裝置發出指令。另外,亦可透過向控制點發出含有正確參數的SOAP訊息的服務請求,處理請求及返回結果亦會以SOAP訊息傳送。
  5. 事件通知(Event notification): "狀態變數"會用作保存UPnP裝置及程式的狀態資訊,程式可訂閱狀態變更的資料,當有任何服務更新或狀態變數改變時,包含新狀態的事件訊息就會傳送至已訂閱該事件的程式或裝置。
  6. 簡報(Presentation): 簡報層泛指人機控制介面,例如透過路由器的網頁介面用戶,可讓用戶設定及控制裝置。