網路攝像頭登入繞過及多個RCE漏洞及資料分析報告

IT168GB發表於2018-07-31

1. 事件概述

深圳市麗歐電子有限公司(NEO Coolcam,以下簡稱酷視)[1],是一家集網路數碼產品研發、生產、營銷於一體的高新技術企業,是國內最早進入網路攝像頭領域的專業廠商之一。2004年成立國內攝像頭研發中心,並取得多項國家專利,產品透過了國家質量檢測部門的認證和CE、FCC等國際標準認證。

早在2017年08月02日,Bitdefender公司的安全研究人員就指出酷視旗下的高畫質網路攝像頭NIP-22和Wi-Fi門鈴iDoorbell等裝置存在多個緩衝區溢位漏洞,十幾萬暴漏在公網上的相關裝置受到潛在的安全威脅,並提供了相關研究報告[2]。2017年9月左右,我們觀察到酷視的英文版官網上釋出了最新的韌體[3],修復了溢位漏洞。

2018年07月10日,在後續的對網路空間上易受漏洞影響的物聯網裝置的風險評估中,我們透過ZoomEye網路空間搜尋引擎對相關漏洞裝置進行搜尋,共發現了65萬的IP歷史記錄,其中在中國含該漏洞的裝置數量最多,約為16.7萬。此外,我們還有以下發現:

從酷視官方釋出更新版韌體到本文釋出約一年的時間裡,大部分裝置依然沒有安裝更新版韌體。原因有以下幾點:

1、目標裝置本身不具有自動升級機制;

2、普通使用者不會意識到存在漏洞並手動更新韌體;

3、更新版韌體只發布在英文版官網中;

4、其他OEM廠商生產的裝置也存在該漏洞。

在目標裝置的韌體審計過程中,我們發現了登入繞過漏洞,相關細節將在下面的章節中呈現。

這意味著還有很大數量的目標裝置處於風險之中。知道創宇404實驗室對酷視NIP-22FX這款攝像頭的系列緩衝區溢位漏洞進行了深入研究,併成功從緩衝區溢位到遠端程式碼執行,證實了該漏洞有被黑產利用的潛在風險。同時審計過程中發現了登入繞過漏洞,對使用者隱私也是個嚴重的威脅。

2. 漏洞分析

2.1 目標裝置的相關資訊

裝置版本:NeoCoolcam IPCam NIP-22FX 
漏洞二進位制檔案:MD5 (ipc_server) = 312d924344364620d85099ed279a5f03 
韌體版本:V7.7.4.1.1-20160701

提供Web服務和RTSP服務的主程式為 ipc_server檔案,目標系統為ARM、32位小端架構。

酷視(NEO Coolcam)網路攝像頭

緩衝區溢位緩解措施為全部關閉狀態。

酷視(NEO Coolcam)網路攝像頭

2.2 登入繞過漏洞

攝像頭 Web 服務基於 HTTP 基本認證,存在三組預設憑證,三組憑證對應不同的許可權等級,安裝時 APP 只會提醒修改 admin 賬戶的預設密碼。三組預設憑證及對用的操作如下:

admin:admin,

user:user;

guest:guest;

酷視(NEO Coolcam)網路攝像頭

值得一提的是,user 賬戶和 guest 賬戶也可以檢視影片流,大部分使用者不會修改這些賬戶的預設密碼,導致隱私洩漏。

酷視(NEO Coolcam)網路攝像頭

2.3 Web 服務基於緩衝區溢位的遠端程式碼執行漏洞(無需認證)

2.3.1 漏洞細節分析

該溢位點位於地址 0x0007DE80 附近,該函式的處理邏輯是呼叫libs_parsedata函式解析URL中的usr和pwd,並將其分別儲存到本函式棧幀的兩塊緩衝區中。

酷視(NEO Coolcam)網路攝像頭

libs_parsedata函式的原型為:

int  libs_parsedata(int a1, int a2, char *needle, int a4, int a5, int a6){}

接受6個引數,從左往右依次為a1:原字串,a2:原串的長度,needle:匹配待擷取字串的開頭,a4:用來擷取字串的分隔符,a6:儲存擷取後字串的目標緩衝區。

該函式的處理邏輯為:使用needle字串和分隔符a4擷取原字串a1,擷取後透過strncpy()函式將擷取後的串寫入a6所指的緩衝區中,寫入的長度為擷取字串的長度,最後寫入一個位元組’\x00’。由於GET引數長度可控,當攻擊者輸入超出緩衝區長度的usr或pwd值時,會使緩衝區溢位。

酷視(NEO Coolcam)網路攝像頭

2.3.2 漏洞利用分析

二進位制檔案ipc_server的緩衝區溢位措施皆為關閉狀態,利用該緩衝區溢位漏洞的難度很低。利用過程中需要考慮到規避空白符、&、\x00等壞字元,空白符可用 ${IFS} 替代。

在ipc_server的0x0004E4D8地址處含有如下程式碼:

酷視(NEO Coolcam)網路攝像頭

攻擊者只需讓返回地址指向地址0x0004E4D8,返回地址之後緊跟待執行的命令,即可成功從緩衝區溢位到遠端程式碼執行。由於libs_parsedata函式會在字串末尾寫入一個\x00,可以同時利用兩個溢位漏洞分別寫入返回地址和待執行命令。

目標系統不含curl、nc、wget等命令,可將命令執行結果重定向之Web目錄,之後訪問HTTP介面即可獲取執行結果。如果攻擊者和攝像頭在同一個網路環境,攻擊者也可能開啟目標系統的telnetd服務,實現對漏洞裝置的完全控制。因為目標裝置的檔案系統以讀寫方式掛載,有被攻擊者惡意篡改的風險。

在NIP-22FX上的復現結果如下:

酷視(NEO Coolcam)網路攝像頭

2.3.3 補丁分析

在最新版的韌體(V7.7.4.1.1-20170828)中,libs_parsedata函式加入了第七個引數,用以控制寫入目標緩衝區的長度。

酷視(NEO Coolcam)網路攝像頭

2.4 RTSP 服務基於緩衝區溢位的遠端程式碼執行漏洞(無需認證)

2.4.1 漏洞細節分析

該溢位點位於地址0x006C6D4處,利用 sscanf 函式匹配 RTSP Header 中 Authorization: Digest key=”value” 中的key和value兩部分內容並將之存到本函式堆疊,沒有檢查這兩部分的長度,導致堆疊溢位。

酷視(NEO Coolcam)網路攝像頭

2.4.2 漏洞利用分析

該漏洞的利用和2.3.2節中Web服務的緩衝區溢位漏洞利用方法一致,攻擊者可利用兩個溢位漏洞分別寫入待執行的命令和返回地址,很容易的從緩衝區溢位提升到遠端程式碼執行。

在NIP-22FX的復現結果如下,成功利用RTSP服務的緩衝區溢位開啟了目標系統的telnetd服務。

酷視(NEO Coolcam)網路攝像頭

2.4.3 補丁分析

在最新版的韌體(V7.7.4.1.1-20170828)中,sscanf 的正則匹配表示式中加入了長度限制,最長為255位元組,而緩衝區距離棧底為296位元組,無法覆蓋返回地址。

酷視(NEO Coolcam)網路攝像頭

3. 漏洞影響範圍

我們透過提取酷視NIP-22高畫質攝像頭裝置相關的“關鍵詞”,在ZoomEye網路空間搜尋引擎[4]上共發現了651,780個 IP歷史資料。

酷視(NEO Coolcam)網路攝像頭

我們透過對 ZoomEye 網路空間搜尋引擎 “Error: username or password error,please input again.” 這個關鍵詞得到的651,780條IP歷史記錄進行確認,發現其中58,413臺裝置仍然存活。

存活裝置國家分佈如下,可以看出這些漏洞裝置主要分佈在韓國、美國、中國等國家。由於中國的網路IP變化快,在中國的相關存活裝置數量實際上不止5,878臺。

酷視(NEO Coolcam)網路攝像頭

存活裝置在中國的省份分佈如下,主要分佈在香港,其次是臺灣,ZoomEye網路空間搜尋引擎上中國大陸地區的歷史IP資料基本都已失效。

酷視(NEO Coolcam)網路攝像頭

對以上存活的裝置進行進一步統計分析,發現大部分裝置均至少存在一種預設憑證。由此可見酷視高畫質攝像頭裝置普遍存在預設憑證,攻擊者可使用預設憑證訪問攝像頭的影片流,有較大的隱私洩漏風險。值得一提的是,存活的裝置中也有很多存在 admin:admin 預設憑證,攻擊者可獲得管理員身份,並可能透過上傳精心製作的裝置韌體完全接管目標裝置。

在對受漏洞影響的裝置進行資料分析的過程中,我們發現存在大量裝置是貼牌銷售,裝置韌體存在極大的同源性,有的兩個不同廠商之間的裝置僅僅是換了個LOGO。

透過裝置頁面 ”/web/mainpage.html” 內容的md5值對不同OEM廠商進行區分,統計結果如下:

酷視(NEO Coolcam)網路攝像頭 酷視(NEO Coolcam)網路攝像頭 酷視(NEO Coolcam)網路攝像頭

除了預設憑證問題,酷視高畫質攝像頭NIP-22還存在無需認證的Web服務及RTSP服務緩衝區溢位漏洞,該溢位漏洞的利用難度很低,攻擊者可基於此溢位漏洞遠端執行任意命令。溢位發生後,watchdog程式會重啟整個系統,攻擊者也可利用這點使攝像頭拒絕服務。由於韌體的同源性,這兩個溢位漏洞也有很大可能存在於其他OEM廠商生產的裝置中。

4. 漏洞修復建議

4.1 對使用者的修復建議

為避免隱私洩漏,建議使用者儘快修復系列漏洞。

首先,使用者可登入攝像頭Web管理系統,在以下頁面中修改三組預設憑證的使用者名稱和密碼。

酷視(NEO Coolcam)網路攝像頭

其次,如果是酷視的裝置,建議從酷視官網下載對應裝置的最新版韌體[3],並手動更新,以修復兩個溢位漏洞。如果是其他OEM廠商的裝置,可以嘗試和廠商聯絡獲取更新韌體,並將裝置同公網隔離。

酷視(NEO Coolcam)網路攝像頭

4.2 對廠商的修復建議

由於這系列漏洞影響國內外幾十個OEM廠商,請上表中可能存在漏洞的廠商自查,及時釋出補丁韌體並通知使用者更新裝置韌體。

5. 總結

1. 存活裝置中大部分以上都存在預設憑證,對於使用者的隱私是個極大的威脅,使用者應及時修改預設密碼。

2. 這系列漏洞還可能影響國內外幾十個OEM廠商。嵌入式裝置韌體開發過程中一般都會使用第三方的開源工具或通用軟體,這些通用軟體又通常由某一特定廠商研發,這就導致很多裝置韌體存在同源性,不同品牌的裝置可能執行相同或者類似的韌體以及包含相同的第三方庫。漏洞曝出後,由於影響廠商眾多,而並不是所有廠商都會發布漏洞補丁,這就導致網路空間上大量漏洞裝置無法修復漏洞。

3. 近年來,路由器、攝像頭、攝像機、NAS、智慧穿戴裝置等 IOT 裝置的安全漏洞層出不窮,伴隨著越來越多的嵌入式裝置連入網路,總體安全形勢日益突出,使用者的個人隱私受到嚴重的威脅。一方面,廠商及開發者應不斷提高自主研發裝置的安全性。另一方面,漏洞是不可避免的。對於使用者,應該努力提高自己的安全意識,儘量避免將此類裝置直接暴露在網路空間上。對於各 IOT 廠商,針對目前安全漏洞曝出越來越頻繁,及時修復漏洞,對產品提供自動升級機制是行之有效的方法。

6. 相關連結

[1] NEO Coolcam 官網 
 
[2] Bitdefender漏洞公告 
https://www.bitdefender.com/box/blog/ip-cameras-vulnerabilities/neo-coolcams-not-cool-buffer-overflow/  
[3] 官方更新韌體下載地址 
 
[4] ZoomEye網路空間探測引擎 

本文轉載自“ FreeBuf.COM ”,原文作者: Knowsec知道創宇

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2168817/,如需轉載,請註明出處,否則將追究法律責任。

相關文章