安全動態(tài)

UPnP 協(xié)議 CallStranger 漏洞影響數(shù)百萬設(shè)備

來源:聚銘網(wǎng)絡(luò)    發(fā)布時(shí)間:2020-07-02    瀏覽次數(shù):
 

信息來源:Freebuf


1.漏洞概述

2020年6月8日,安全研究員Yunus ?adirci公布UPnP(通用即插即用)協(xié)議漏洞公告(CVE-2020-12695),并將其命名為CallStranger漏洞。該漏洞允許攻擊者繞過內(nèi)網(wǎng)的數(shù)據(jù)防泄露系統(tǒng)(DLP)進(jìn)行數(shù)據(jù)逃逸,可導(dǎo)致敏感數(shù)據(jù)泄露,并且可對設(shè)備所在內(nèi)部網(wǎng)絡(luò)進(jìn)行掃描,甚至能劫持設(shè)備進(jìn)行分布式拒絕服務(wù)(DDOS)攻擊。根據(jù)CallStranger漏洞原理,啟明星辰ADLab以某款智能電視作為測試目標(biāo),對CallStranger漏洞的危害性進(jìn)行了演示分析。

2.


與之前的UPnP漏洞不同,CallStranger漏洞存在于協(xié)議設(shè)計(jì)中,因此該漏洞影響幾乎所有支持UPnP的設(shè)備,包括Windows 10所有版本、路由器、訪問接入點(diǎn)、打印機(jī)、游戲機(jī)、門鈴對講機(jī)、媒體應(yīng)用程序和設(shè)備、攝像頭、電視機(jī)等。根據(jù)SHODAN和ZoomEye的搜索結(jié)果,至少有數(shù)以百萬計(jì)的在線設(shè)備受到影響。

3.漏洞分析

UPnP全稱為Universal Plug and Play,即通用即插即用,UPnP允許各種網(wǎng)絡(luò)設(shè)備在沒有任何特殊設(shè)置或配置的情況下進(jìn)行通信,使設(shè)備彼此可自動連接和協(xié)同工作。例如新的打印機(jī)插上電并連接網(wǎng)絡(luò)之后,局域網(wǎng)內(nèi)的計(jì)算機(jī)就知道了打印機(jī)的型號等信息,方便進(jìn)行驅(qū)動安裝。

在UPnP協(xié)議規(guī)范中有一個(gè)非常重要的功能模塊,叫做事件(Eventing)。在UPnP服務(wù)進(jìn)行的時(shí)間內(nèi),只要設(shè)備用于UPnP服務(wù)的變量值發(fā)生變化或者模式發(fā)生了改變,就會產(chǎn)生一個(gè)事件,隨之向整個(gè)網(wǎng)絡(luò)進(jìn)行廣播?;蛘哂脩艨梢允孪认騏PnP設(shè)備發(fā)送訂閱請求,保證UPnP設(shè)備及時(shí)地將事件傳送過來。

UPnP Device Architecture 2.0[1]中關(guān)于UPnP的NT與CALLBACK訂閱模塊有如下格式:

publisher path一般為訂閱的服務(wù),以GENA格式存放在設(shè)備的某個(gè)XML文件中,類似下圖。

CALLBACK的值一般為回調(diào)地址的URL。NT取upnp:event表示訂閱事件。

UPnP協(xié)議規(guī)范文檔中提到:CALLBACK是必填區(qū)域,所填信息為發(fā)送事件信息的URL。一般情況下為UPnP供應(yīng)商指定。如果其中定義了不止一個(gè)URL,設(shè)備會按順序嘗試連接,直到有一個(gè)連接成功。每個(gè)URL一般為HTTP協(xié)議(即前綴為”http://”)。設(shè)備不得以任何方式截?cái)噙@些URL。如果內(nèi)存不足以存儲所有的CALLBACK URL,設(shè)備會拒絕訂閱。

整個(gè)訂閱流程大概可以簡化如下圖。

很顯然,該協(xié)議并沒有對CALLBACK傳入的URL進(jìn)行限制和規(guī)范,也就是說,CALLBACK URL是攻擊者可控的。

下圖為Intel UPnP SDK中檢查CALLBACK URL的相關(guān)代碼,create_url_list函數(shù)僅僅檢查了URL是否合法,并沒有確定其是否合理。

4.漏洞危害

CallStranger漏洞所造成的危害可以分三個(gè)方面:DDoS攻擊、數(shù)據(jù)逃逸和端口掃描。其中造成的DDoS攻擊可以分兩種,SYN洪水攻擊和TCP反射放大攻擊,如下圖所示。

4.1 SYN洪水攻擊

假設(shè)我們已經(jīng)通過一些方法(如在局域網(wǎng)廣播等)獲得了某些設(shè)備UPnP服務(wù)的eventSubURL,下面就可以向UPnP設(shè)備發(fā)起一項(xiàng)訂閱服務(wù),格式如下:

  • SUBSCRIBE eventSubURL HTTP/1.1

  • NT: upnp:enent

  • Callback: delivery URL

  • Host: upnp設(shè)備:upnp服務(wù)端口

如前文協(xié)議規(guī)范中提到的,若CALLBACL Value中定義了不止一個(gè)URL,則會按順序嘗試TCP連接,直到有一個(gè)連接成功。那么攻擊者可在CALLBACK Value中精心構(gòu)造多個(gè)URL,使每一個(gè)都無法連接成功,這樣UPnP設(shè)備就會用多個(gè)SYN包依次對每個(gè)URL嘗試TCP握手。假設(shè)攻擊者可以操控很多個(gè)設(shè)備,就會導(dǎo)致受害設(shè)備遭受DDoS攻擊。

SYN數(shù)據(jù)包的數(shù)量根據(jù)設(shè)備操作系統(tǒng)和配置的不同而不同,利用某品牌智能電視對受害設(shè)備進(jìn)行SYN洪水攻擊測試,測試結(jié)果如下圖所示。

該智能電視每收到一個(gè)CALLBACK Value就會發(fā)送8個(gè)SYN數(shù)據(jù)包嘗試連接受害設(shè)備。若我們每個(gè)CALLBACK的URL值為25字節(jié),那么帶寬放大因子便可以達(dá)到8*60/25=19.2。因?yàn)镃ALLBACK Value的個(gè)數(shù)是沒有限制的,所以理論上是可以無限放大的。

4.2 TCP反射放大攻擊

Windows Media Player在播放視頻時(shí)也有相應(yīng)的UPnP服務(wù),我們獲


 
 

上一篇:自動化能否“殺死”安全分析師?

下一篇:2020年07月02日 聚銘安全速遞