信息來源:Freebuf
1.漏洞概述
2020年6月8日,安全研究員Yunus ?adirci公布UPnP(通用即插即用)協(xié)議漏洞公告(CVE-2020-12695),并將其命名為CallStranger漏洞。該漏洞允許攻擊者繞過內(nèi)網(wǎng)的數(shù)據(jù)防泄露系統(tǒng)(DLP)進行數(shù)據(jù)逃逸,可導(dǎo)致敏感數(shù)據(jù)泄露,并且可對設(shè)備所在內(nèi)部網(wǎng)絡(luò)進行掃描,甚至能劫持設(shè)備進行分布式拒絕服務(wù)(DDOS)攻擊。根據(jù)CallStranger漏洞原理,啟明星辰ADLab以某款智能電視作為測試目標,對CallStranger漏洞的危害性進行了演示分析。
2.
與之前的UPnP漏洞不同,CallStranger漏洞存在于協(xié)議設(shè)計中,因此該漏洞影響幾乎所有支持UPnP的設(shè)備,包括Windows 10所有版本、路由器、訪問接入點、打印機、游戲機、門鈴對講機、媒體應(yīng)用程序和設(shè)備、攝像頭、電視機等。根據(jù)SHODAN和ZoomEye的搜索結(jié)果,至少有數(shù)以百萬計的在線設(shè)備受到影響。
3.漏洞分析
UPnP全稱為Universal Plug and Play,即通用即插即用,UPnP允許各種網(wǎng)絡(luò)設(shè)備在沒有任何特殊設(shè)置或配置的情況下進行通信,使設(shè)備彼此可自動連接和協(xié)同工作。例如新的打印機插上電并連接網(wǎng)絡(luò)之后,局域網(wǎng)內(nèi)的計算機就知道了打印機的型號等信息,方便進行驅(qū)動安裝。
在UPnP協(xié)議規(guī)范中有一個非常重要的功能模塊,叫做事件(Eventing)。在UPnP服務(wù)進行的時間內(nèi),只要設(shè)備用于UPnP服務(wù)的變量值發(fā)生變化或者模式發(fā)生了改變,就會產(chǎn)生一個事件,隨之向整個網(wǎng)絡(luò)進行廣播。或者用戶可以事先向UPnP設(shè)備發(fā)送訂閱請求,保證UPnP設(shè)備及時地將事件傳送過來。
UPnP Device Architecture 2.0[1]中關(guān)于UPnP的NT與CALLBACK訂閱模塊有如下格式:
publisher path一般為訂閱的服務(wù),以GENA格式存放在設(shè)備的某個XML文件中,類似下圖。
CALLBACK的值一般為回調(diào)地址的URL。NT取upnp:event表示訂閱事件。
UPnP協(xié)議規(guī)范文檔中提到:CALLBACK是必填區(qū)域,所填信息為發(fā)送事件信息的URL。一般情況下為UPnP供應(yīng)商指定。如果其中定義了不止一個URL,設(shè)備會按順序嘗試連接,直到有一個連接成功。每個URL一般為HTTP協(xié)議(即前綴為”http://”)。設(shè)備不得以任何方式截斷這些URL。如果內(nèi)存不足以存儲所有的CALLBACK URL,設(shè)備會拒絕訂閱。
整個訂閱流程大概可以簡化如下圖。
很顯然,該協(xié)議并沒有對CALLBACK傳入的URL進行限制和規(guī)范,也就是說,CALLBACK URL是攻擊者可控的。
下圖為Intel UPnP SDK中檢查CALLBACK URL的相關(guān)代碼,create_url_list函數(shù)僅僅檢查了URL是否合法,并沒有確定其是否合理。
4.漏洞危害
CallStranger漏洞所造成的危害可以分三個方面:DDoS攻擊、數(shù)據(jù)逃逸和端口掃描。其中造成的DDoS攻擊可以分兩種,SYN洪水攻擊和TCP反射放大攻擊,如下圖所示。
4.1 SYN洪水攻擊
假設(shè)我們已經(jīng)通過一些方法(如在局域網(wǎng)廣播等)獲得了某些設(shè)備UPnP服務(wù)的eventSubURL,下面就可以向UPnP設(shè)備發(fā)起一項訂閱服務(wù),格式如下:
如前文協(xié)議規(guī)范中提到的,若CALLBACL Value中定義了不止一個URL,則會按順序嘗試TCP連接,直到有一個連接成功。那么攻擊者可在CALLBACK Value中精心構(gòu)造多個URL,使每一個都無法連接成功,這樣UPnP設(shè)備就會用多個SYN包依次對每個URL嘗試TCP握手。假設(shè)攻擊者可以操控很多個設(shè)備,就會導(dǎo)致受害設(shè)備遭受DDoS攻擊。
SYN數(shù)據(jù)包的數(shù)量根據(jù)設(shè)備操作系統(tǒng)和配置的不同而不同,利用某品牌智能電視對受害設(shè)備進行SYN洪水攻擊測試,測試結(jié)果如下圖所示。
該智能電視每收到一個CALLBACK Value就會發(fā)送8個SYN數(shù)據(jù)包嘗試連接受害設(shè)備。若我們每個CALLBACK的URL值為25字節(jié),那么帶寬放大因子便可以達到8*60/25=19.2。因為CALLBACK Value的個數(shù)是沒有限制的,所以理論上是可以無限放大的。
4.2 TCP反射放大攻擊
Windows Media Player在播放視頻時也有相應(yīng)的UPnP服務(wù),我們獲