UPnP实现中的常见脆弱性与风险分析
UPnP 協議棧的脆弱性
與風險分析
由于 UPnP 協議棧包含的協議較多,在實現過程中,容易存在脆弱性。而在 UPnP 工作流程的六個 階段中,發現、描述、控制三個階段出現過比較嚴重的脆弱性問題。這些脆弱性廣泛存在于支持 UPnP 技術的物聯網
設備中,具有了一定的風險。本節將對 UPnP 在協議設計以及協議棧實現過程中的脆弱性 和產生的風險展開分析。
UPnP 協議的脆弱性與風險分析
4.2.1.1 UPnP SSDP 協議的脆弱性分析
UPnP SSDP 協議的目的是在局域網
中發現設備,而通常設備發現有兩種思路,一種是對 IP 段進行 遍歷掃描,另一種是借助多播的方式搜索。采用遍歷掃描的方式十分浪費通信資源且效率低下,相反多 播的方式則可以減少通信資源的浪費且效率極高。多播的特性決定了任何一個協議在設計時,若需要使 用多播,都必須基于 UDP協議設計,所以 SSDP 協議也是如此。雖然 UDP協議有很多的優勢,但還有 一個很明顯的缺陷,通信的發起者可以偽造源 IP,導致通信的接收方無法確定數據包的來源是否真實。 事實上,很多公開 SSDP 協議的脆弱性是 UDP協議的缺陷帶來的,并非 SSDP 協議本身的問題,只是 UDP協議的缺陷在 SSDP 協議上被放大了。
OCF在設計時顯然沒有考慮到 SSDP 可用于反射,攻擊者可以通過偽造源 IP,用于 SSDP 進行放大 反射攻擊。借助 SSDP 進行的反射攻擊,攻擊帶寬的放大倍數會因設備不同而浮動,根據《2014 綠盟 科技 DDoS 威脅報告》[41] 統計,攻擊帶寬放大倍數在 30 倍左右(單播)。
SSDP 協議在設計時規定支持單播和多播,所以既可以通過組播的方式,借助整個組播組內所有設 備的 SSDP 服務進行反射攻擊。也可以通過單播的方式,利用某一臺設備的 SSDP 服務進行反射攻擊。 我們以單播為例,分析利用 SSDP 協議進行的反射攻擊的過程。正常情況下,利用 SSDP 協議搜索根設 備的過程
若請求方希望搜索提供 SSDP 服務的根設備,可以向 SSDP 服務發送搜索的報文,若 SSDP 服務正 常開放,在收到搜索的報文后,將向發送搜索報文的源 IP(請求方)返回自己的基本信息。
通常 UPnP 架構將很多設備抽象為虛擬的子設備和子服務,允許請求方通過 SSDP,一次搜索所有 的子設備和子服務
若攻擊者希望利用 SSDP 服務對受害者發起反射攻擊,只需將自己的 IP 偽造成受害者的 IP,不斷 向 SSDP 服務發送搜索報文,就形成了利用 SSDP 的反射攻擊,如圖 4.5 所示。
事實上,SSDP 協議對多播的支持沒有太多被用于反射攻擊的風險,因為多播數據通常不允許被路由, 攻擊者無法在互聯網
上直接利用組播進行反射攻擊。而在內網中,環境相對安全,由于設備數量較少, 即使有攻擊者在內網環境中通過多播的方式,利用 SSDP 進行反射攻擊,也很難形成較大的攻擊帶寬。
總體而言,SSDP 協議對單播 UDP的支持,又具有較高的反射放大率,加之大量物聯網設備的 SSDP 服務暴露在互聯網上,成為用于發動 DDoS 攻擊的重大風險。
4.2.1.2 暴露 SSDP 協議的服務產生的風險分析
根據我們在 4.2.1.1 節的分析,我們知道 SSDP 協議對 UDP單播的支持存在很大的隱患。在互聯網中, 單播的 UDP數據包是允許被路由的,若大量支持單播的 SSDP 服務被暴露在互聯網中被人用做反射攻擊, 則可以形成非常高的攻擊帶寬,存在很大風險。
不幸的是, OCF在 UPnP 設備架構 [28] 中也并沒有明確限制 UPnP 服務的暴露范圍,僅在部分設備(如 路由器
)的標準中,要求廠商設計產品時,必須使用最新版本的標準(目前為 Internet Gateway Device V2.0 DCPs)[29] 且實現的 UPnP 服務必須只暴露在內網中。但廠商在實現過程中,往往采用了舊版的標
準(Internet Gateway DeviceV1.0 Device DCPs)[30] ,也并沒有重對 UPnP 服務暴露范圍的限制。所 以一些不正確的配置或實現過程中編碼的缺陷,導致大量物聯網設備的 SSDP 服務暴露在互聯網上,這些暴露的 SSDP 服務對于攻擊者而言都是非常好的反射源。
若黑客希望利用互聯網中暴露的 SSDP 服務,進行反射攻擊,首先需要借助用于掃描的服務器或僵 尸主機,按照 SSDP 的報文格式對 1900 端口進行掃描,統計出可以用于反射攻擊的反射源列表
在得到反射源的列表后,黑客只需控制僵尸網絡向反射源發送偽造源 IP(為受害者 IP)的 SSDP 報 文,即可對受害者發起反射攻擊。
對于黑客而言,反射攻擊是一種非常好的 DDoS 方式,除了可以放大攻擊帶寬外,源 IP 被偽造使 得無論是受害者還是暴露了 SSDP 服務的設備,均很難確定反射的發起者。受害者在被黑客利用 SSDP 進行反射攻擊時,會收到大量源端口為 1900 的 UDP數據包,最終帶寬被耗盡。
對于用戶而言,避免自己的設備被用于 SSDP 反射攻擊最好的方法,就是關閉 UPnP 服務。就協 議設計而言,我們認為 SSDP 協議對多播的支持沒有爭議,但對單播的設計,完全可以基于 TCP 而非 UDP協議,這樣即使 SSDP 服務被暴露在互聯網中,也無法被用做反射攻擊。
UPnP 實現中的常見脆弱性與風險統計
由于 UPnP 協議棧中眾多的協議實現起來十分繁瑣,所以實現過程中十分容易出現漏洞。圖 4.8 為 2005 年至 2018 年公布的物聯網設備 UPnP 相關的 CVE統計結果,幾乎每年都會出現與物聯網 UPnP 實現相關的 CVE,且趨勢沒有變緩。
通常,廠商在為其產品實現 UPnP 協議棧時有兩種思路:一種是采用第三方的 SDK,可縮短開發周期; 另一種是自主實現整個協議棧,盡可能減少因第三方 SDK本身存在問題導致的產品脆弱性。遺憾的是, 無論第三方的 SDK還是廠商自行實現的協議棧,很多存在各種漏洞,原因如下:
第一,某些版本的第三方 SDK本身存在命令注入漏洞。目前設備廠商使用較多的的 UPnP 協議棧 SDK有 libupnp、MiniUPnP、Broadcom UPnP stack 以及 RealTek SDK。其中 libupnp 由英特爾創建, 之后發布到了開源社區,促進 UPnP 的發展。MiniUPnP 是由 Thomas BERNARD 等人自行開發的輕量 化 SDK。Broadcom UPnP stack 以及 RealTek SDK 是芯片廠商出售芯片時自帶的 SDK。表 4.2 為各第 三方 SDK存在的命令注入類漏洞的統計,可以看出受影響版本或產品非常多,而 CVE也不僅存在于 SOAP的實現中,SSDP 的實現中也存在很多緩沖區溢出類漏洞。
表 4.2 第三方 UPnP SDK 中的越權執行類 CVE
| libupnp | 1.6.18 之前 | CVE-2012-5958 CVE-2012-5959 CVE-2012-5960 CVE-2012-5961 CVE-2012-5962 CVE-2012-5963 CVE-2012-5964 CVE-2012-5965 | SSDP |
| MiniUPnP | 1.0 | CVE-2013-0230 | SOAP |
| Broadcom UPnP stack | 思科 WRT54G | CVE-2011-4499 | SOAP |
| RealTek SDK | rtl81xx | CVE-2014-8361 | SOAP |
| 第二,某設備廠商在 OCF制定的標準之上,在 SOAP中加入了設備升級的服務。但實現過程中, 設備升級服務中存在命令注入漏洞。如漏洞 CVE-2017-17215 在 OCF為網關設備制定的標準之外,加 入了一個基于 SOAP的設備升級的服務,但該服務中存在命令注入漏洞,最終被各種僵尸網絡所利用。 |
我們根據危害將漏洞分為越權執行、越權寫入、越權讀取和拒絕服務四類,各類漏洞占比
越權執行,是指可以直接在系統上執行命令,可以對系統造成較大程度控制的漏洞,如緩沖區溢出、 系統命令注入等。由圖可見,越權執行類漏洞危害高,且占比最大,越權執行類漏洞中絕大多數為緩沖 區溢出。造成該漏洞的原因,主要是在實現 UPnP 協議棧過程中,目前沒有較完善的報文解析開源庫, 所以無論是廠商自行實現的協議棧,還是第三方 SDK,均容易出現緩沖區溢出類漏洞。越來越多的物聯 網設備支持了 UPnP 協議,但大量設備存在此類脆弱性,有很大風險被僵尸網絡感染,成為僵尸主機。
越權寫入,是指能以某種方式修改在系統上寫入文件、修改配置等(如新增端口映射關系),但無 法直接執行代碼的漏洞。該類漏洞占比為 21.82%,且其造成的危害十分嚴重,如路由器的 UPnP 服務 有該類漏洞,則有很大風險被黑客修改端口映射表,入侵內網,攻擊內網中的設備。我們在統計過程中 甚至發現了部分輸液系統中 UPnP 的越權寫入類漏洞,攻擊者可以直接修改藥品的信息,可能危及輸液患者的生命。
越權讀取,是指能讀取或訪問指定或任意文件、服務,造成信息泄露或利用服務進行反射攻擊。可 以看出該類漏洞相比越權執行和越權寫入,占比較少。對于 UPnP 而言,該類漏洞最大的風險在于攻擊 者可以越權通過互聯網直接訪問局域網中的 SSDP 服務,用于反射攻擊。
拒絕服務,是指可造成 UPnP 服務自身的進程崩潰、死鎖等,是軟件無法正常工作的漏洞。通常 UPnP 服務會作為物聯網設備的獨立服務存在,所以該類漏洞,對設備自身核心功能的正常運行影響較小。
其他,指的是細節未公開的漏洞。由于物聯網設備種類繁多,很多 UPnP 漏洞披露的時間較新,所 以并未公開相關的細節。
對于黑客而言,服務實現過程中產生的各種脆弱性,最有利用價值的就是各種越權執行漏洞,因為 這類漏洞讓攻擊者具備了在攻擊目標上執行代碼的能力,繼續感染更多的僵尸主機,或直接執行攻擊。
而對于 UPnP 服務而言,由于大部分越權執行類漏洞均屬于緩沖區溢出,所以無論漏洞存在于 SSDP 的實現,還是存在于 SOAP的實現中,通常黑客只需要發送一個精心構造的數據包,即可在目標 上執行代碼。對于黑客感染新的僵尸主機而言,與撞庫相比,成本低、效率高。因而我們預測使用越權 執行類漏洞感染新僵尸主機的行為在未來將呈不斷上升的趨勢。
參考資料
綠盟 2018物聯網安全年報
友情鏈接
綠盟 2018年網絡安全觀察報告
總結
以上是生活随笔為你收集整理的UPnP实现中的常见脆弱性与风险分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源接口测试平台BTest
- 下一篇: 无线式PT二次回路压降测试仪(SXP-W