通用隨插即用(UPnP) 功能服務顯露 潛在危機四伏
當我們播放數碼媒體內容或進行線上遊戲時,或者未有注意我們正在使用通用隨插即用(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)系統仍然連接至互聯網,其數量之多或會帶來極其嚴重的保安影響,數以百萬計的用家現正受到遠端攻擊的潛在威脅,包括被盜取敏感資料或對相關連接裝置作進一步攻擊。
通用隨插即用(UPnP)簡易服務探索通訊協定(SSDP)服務廣泛顯露
UPnP SSDP 原設計為本區的網絡進行裝置探索,該服務可透過UDP 1,900連接埠透露版本資訊及網絡設定詳細資料等。網絡上有多達8,100萬個獨立IP地址曾被識別(相等於公用IPv4地址總數的百分之二),並對UPnP探索請求作出回應。這些裝置可能成為攻擊者的獵物,被套取系統資訊及網絡設定。
通用隨插即用(UPnP) SOAP服務廣泛顯露
UPnP SOAP服務能提供在防火牆開啟缺口的能力,因此,該服務一般都設定不允許未經信任的網絡存取。但在網絡上被識別的8,100萬台系統中,約有兩成(即1,700萬台)的系統,可經互聯網存取其 SOAP 服務,顯示惡意的人能對這些系統進行攻擊。
通用隨插即用(UPnP)實施中發現可被攻擊漏洞
透過SSDP被發現的UPnP實施中,超過73%由4個軟體開發工具[包括 Intel/Portable SDK for UPnP Device (libupnp) 及 MiniUPnP]衍生出來。這種高度集中性會增加保安風險,例如被發現顯露SSDP服務的系統之中,超過四分之一(約2,300萬台)的系統正使用有漏洞的 Portable SDK for UPnP Device (libupnp) 版本。
圖6: 被顯露UPnP實施的分佈網絡裝置仍使用過期的通用隨插即用(UPnP)實施
分析由SSDP的回應獲取的軟體程式庫版本等系統資訊,顯示裝置使用的 UPnP程式庫版本大都是4年前或更早推出的。就算是一些近期生產的裝置,仍然使用過期的有漏洞的UPnP軟件程式庫。
圖7: Portable SDK for UPnP Devices的版本分佈
圖8: MiniPnP的版本分佈
(D) 緩解通用隨插即用(UPnP)保安漏洞保安風險的措施
通用隨插即用(UPnP)保安漏洞的問題關鍵在於顯露通用隨插即用(UPnP)服務於互聯網上,解決的辦法是停止服務顯露,並修補設備的漏洞。
偵測
你可使用以下“UPnP Router Security Check”線上工具,測試路由器的通用隨插即用(UPnP)功能有否顯露於互聯網。
開啟“UPnP Router Security Check”線上工具頁面 ( http://upnp-check.rapid7.com/scan )
圖9: “UPnP Router Security Check” 線上工具如果UPnP路由器已於互聯網顯露相關功能,或受到UPnP通訊協定的保安漏洞影響,便會得到以下的警告訊息。
圖10: 因UPnP顯露的警告訊息我們建議你停用路由器的UPnP功能。
圖11: 路由器設定頁的 UPnP 選項如果你的路由器並沒有UPnP功能顯露於互聯網或已經停用UPnP功能,便會得到以下的掃瞄結果。
圖12: 掃瞄結果顯示沒有UPnP顯露
預防
設置防火牆策略
- 可考慮配置防火牆規則並停止UDP 1,900 連接埠的存取
停用路由器的UPnP功能
- 可考慮停用UPnP,特別是經由互聯網端傳送的請求
圖13: 路由器設定頁的 UPnP 選項
安裝更新及修補UPnP漏洞
安裝由廠商提供的更新或修補程式。檢查廠商的公佈及相關UPnP產品資料,如確定裝置受漏洞影響而未能安裝修補程式,可考慮停用受影響裝置的UPnP功能
最佳的保安做法
最佳的保安做法,你不應開啟任何不需要的功能。如果使用者不確認自己是否需要 UPnP,你可停用路由器的UPnP功能一段時間再作決定。
有關UPnP產品的參考資料
- Devices using Portable SDK for UPnP Devices (libupnp)
https://docs.google.com/spreadsheet/ccc?key=0ApUaRDtAei07dFdOWXdKRUVaUTdRYndnbW5zajRyTmc#gid=0 - Devices using MiniUPnP
https://docs.google.com/spreadsheet/ccc?key=0ApUaRDtAei07dDhwelZDQlYyQVJhbWRtUEIwVEVyRFE#gid=0 - Devices with SOAP API Exposure
https://docs.google.com/spreadsheet/ccc?key=0ApUaRDtAei07dGxkSHN1cEN3V2pmYW4yNkpZMlQ0Rmc#gid=0 - Cisco Security Advisory: Portable SDK for UPnP Devices Contains Buffer Overflow Vulnerabilities
http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20130129-upnp
- https://community.rapid7.com/docs/DOC-2150
- https://community.rapid7.com/community/infosec/blog/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play
- https://community.rapid7.com/servlet/JiveServlet/download/2150-1-16596/SecurityFlawsUPnP.pdf
- http://www.kb.cert.org/vuls/id/922681
- http://support.microsoft.com/kb/323713/en-us
參考資料
附錄I: 通用隨插即用(UPnP)如何運作?
(注意這部份會涉及一些技術資料))
通用隨插即用(UPnP)網絡連接包括以下6個程序
- 獲取地址(Addressing): UPnP裝置需於網絡中有熱拔插的支援,裝置會透過DHCP嘗試獲取IP地址,並連接至網絡。
圖14 - 探索(Discovery): 探索功能是基於簡易服務探索通訊協定(SSDP),當一個裝置被加入至網絡並取得適當地址後,裝置會向控制點廣播自己提供的服務,並透過UDP 1900連接埠發送探索訊息至多點傳送地址。同樣地,控制點亦會搜尋網絡內裝置提供的服務。
- 描述(Description): 當裝置被發現時,控制點可透過訊息內裝置提供的URL獲取裝置描述及詳細服務資料,裝置描述內可能包括產品名稱、型號名稱、序號、廠商身份及嵌入式服務資料等。
- 控制(Control): 當一個控制點獲取裝置描述訊息及詳細服務資料後,控制點可利用SOAP以XML格式的控制訊息向裝置發出指令。另外,亦可透過向控制點發出含有正確參數的SOAP訊息的服務請求,處理請求及返回結果亦會以SOAP訊息傳送。
- 事件通知(Event notification): "狀態變數"會用作保存UPnP裝置及程式的狀態資訊,程式可訂閱狀態變更的資料,當有任何服務更新或狀態變數改變時,包含新狀態的事件訊息就會傳送至已訂閱該事件的程式或裝置。
- 簡報(Presentation): 簡報層泛指人機控制介面,例如透過路由器的網頁介面用戶,可讓用戶設定及控制裝置。
分享至