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厂商生产的设备也存在该漏洞。
- 在目标设备的固件审计过程中,我们发现了登录绕过漏洞,相关细节将在下面的章节中呈现。
这意味着还有很大数量的目标设备处于风险之中。我们对酷视 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 位小端架构。
缓冲区溢出缓解措施为全部关闭状态。
2.2 登录绕过漏洞
摄像头 Web 服务基于 HTTP 基本认证,存在三组默认凭证,三组凭证对应不同的权限等级,安装时 APP 只会提醒修改 admin 账户的默认密码。三组默认凭证及对用的操作如下:
1、admin:admin,
2、user:user;
3、guest:guest;
值得一提的是,user 账户和 guest 账户也可以查看视频流,大部分用户不会修改这些账户的默认密码,导致隐私泄漏。
2.3 Web 服务基于缓冲区溢出的远程代码执行漏洞(无需认证)
2.3.1 漏洞细节分析
该溢出点位于地址 0x0007DE80 附近,该函数的处理逻辑是调用 libs_parsedata 函数解析 URL 中的 usr 和 pwd,并将其分别存储到本函数栈帧的两块缓冲区中。
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 值时,会使缓冲区溢出。
2.3.2 漏洞利用分析
二进制文件 ipc_server 的缓冲区溢出措施皆为关闭状态,利用该缓冲区溢出漏洞的难度很低。利用过程中需要考虑到规避空白符、&、\x00等坏字符,空白符可用 ${IFS} 替代。
在 ipc_server 的 0x0004E4D8 地址处含有如下代码:
攻击者只需让返回地址指向地址 0x0004E4D8,返回地址之后紧跟待执行的命令,即可成功从缓冲区溢出到远程代码执行。由于 libs_parsedata 函数会在字符串末尾写入一个 \x00,可以同时利用两个溢出漏洞分别写入返回地址和待执行命令。
目标系统不含 curl、nc、wget等命令,可将命令执行结果重定向之 Web 目录,之后访问 HTTP 接口即可获取执行结果。如果攻击者和摄像头在同一个网络环境,攻击者也可能开启目标系统的 telnetd 服务,实现对漏洞设备的完全控制。因为目标设备的文件系统以读写方式挂载,有被攻击者恶意篡改的风险。
在 NIP-22FX 上的复现结果如下:
2.3.3 补丁分析
在最新版的固件(V7.7.4.1.1-20170828)中,libs_parsedata 函数加入了第七个参数,用以控制写入目标缓冲区的长度。
2.4 RTSP 服务基于缓冲区溢出的远程代码执行漏洞(无需认证)
2.4.1 漏洞细节分析
该溢出点位于地址 0x006C6D4 处,利用 sscanf 函数匹配 RTSP Header 中 Authorization: Digest key=”value” 中的 key 和 value 两部分内容并将之存到本函数堆栈,没有检查这两部分的长度,导致堆栈溢出。
2.4.2 漏洞利用分析
该漏洞的利用和 2.3.2 节中 Web 服务的缓冲区溢出漏洞利用方法一致,攻击者可利用两个溢出漏洞分别写入待执行的命令和返回地址,很容易的从缓冲区溢出提升到远程代码执行。
在 NIP-22FX 的复现结果如下,成功利用RTSP服务的缓冲区溢出开启了目标系统的 telnetd 服务。
2.4.3 补丁分析
在最新版的固件(V7.7.4.1.1-20170828)中,sscanf 的正则匹配表达式中加入了长度限制,最长为 255 字节,而缓冲区距离栈底为 296 字节,无法覆盖返回地址。
3 漏洞影响范围
我们通过提取酷视 NIP-22 高清摄像头设备相关的 ”关键词”,在 ZoomEye 网络空间搜索引擎 【4】 上共发现了651,780 个 IP 历史数据。
我们通过对 ZoomEye 网络空间搜索引擎 “Error: username or password error,please input again.” 这个关键词得到的 651,780 条 IP 历史记录进行确认,发现其中 58,413 台设备仍然存活。
存活设备国家分布如下,可以看出这些漏洞设备主要分布在韩国、美国、中国等国家。由于中国的网络 IP 变化快,在中国的相关存活设备数量实际上不止 5,878 台。
存活设备在中国的省份分布如下,主要分布在香港,其次是台湾,ZoomEye 网络空间搜索引擎上中国大陆地区的历史 IP 数据基本都已失效。
对以上存活的设备进行进一步统计分析,发现大部分设备均至少存在一种默认凭证。由此可见酷视高清摄像头设备普遍存在默认凭证,攻击者可使用默认凭证访问摄像头的视频流,有较大的隐私泄漏风险。值得一提的是,存活的设备中也有很多存在 admin:admin 默认凭证,攻击者可获得管理员身份,并可能通过上传精心制作的设备固件完全接管目标设备。
在对受漏洞影响的设备进行数据分析的过程中,我们发现存在大量设备是贴牌销售,设备固件存在极大的同源性,有的两个不同厂商之间的设备仅仅是换了个 LOGO。
通过设备页面 ”/web/mainpage.html” 内容的 md5 值对不同 OEM 厂商进行区分,统计结果如下:
MD5(Content(URL/web/mainpage.html)) | LOGO | OEM厂商 |
---|---|---|
dbbc680a6b5403bf30077438fb4b91e6 | IP CAMERA | 无 |
c69b8e84d46b78c85907e4622562997f | CloudLive | https://www.camcloud.com/ |
f4dc74d63125c9146f6f05b2e4e54fb8 | Wanscam | http://www.wanscam.com/ |
97335b2578edc45f70e0326d5eb4105c | EasyN | http://www.easyn.com/ |
4485518e9995bf1fc92f5f65d4d6f5b0 | Petzview | http://www.petstory.co/support/spt_main |
2520381a9eb73097ad77a0e2439c86d5 | TENVIS | https://www.tenvis.com/ |
23d1ce3422ef59fff1482d9ab6cc2854 | CATCH VIEW | 无 |
9236f9718fe81fa74bc027237d5fe076 | QcamV | 无 |
84a8000873d288fd7f6bd3824251ec99 | Sineoji | http://sineoji.com/ |
8858353d658482304fa01aeb5fc3a689 | Aztech | https://www.aztech.com/categories/aztech-datacom/ip-camera |
dcc4a2bafe9850d0c07b4529b0fb10bd | Toc View | 无 |
bcf1fb85eb7bb9a4dffd75a11d600fcc | FALCON EYE | http://www.falconeyecnv.com/ |
529ff91b3d55a903af3451c562fa48b3 | bitron video | http://www.bitronvideo.eu/ |
4385c3e35bddf7ad1af65b8af9f0e6e4 | NETCURY | https://www.netcury.com/main/index/ |
829ce8eb0a133fe51444da7182db7631 | Intelkam | 无 |
26746ac39c4257d8f436f7a1847d4d65 | ZKTeco | https://www.zkteco.eu/index.php |
f2a6e9e9f1aef461fc7c13ee74f48bb0 | HOSAFE.COM | https://www.hosafe.com/ |
c43fd489a1a659dae2947fa1e78cdf83 | bayit Home | http://www.bayithomeautomation.com/ |
f61401152a378a45ace64f0f38a19981 | IPCAM CENTRAL | https://www.ipcam-central.com/ |
0a6b3872e3fada7c36b48d8ccd28b11a | SV plus | 无 |
17c38847e9d7598bf027dc38cc066ccb | manhattan | http://www.manhattan-products.com/homecam-hd |
7c9328d1950bbc0c91092cb0f2bf3e7c | COVERT | https://www.covertscoutingcameras.com/ |
120ae591ca18744c168ba71517caf4fa | NEO Coolcam | http://www.szneo.com/ |
0eedb3e49b5962180caa8e7d193aab47 | RTX | 无 |
d7998665ea8baaf6061e093491268c22 | Seguros Falabella | 无 |
bfb0589554d4922bc81cf37b0fe94583 | HOMCA | http://homca.co.kr/ |
ec0ebcdeca5d561eb7c647577abcafb1 | upCam | https://www.upcam.de/en/ |
43d8a0138e063d51ccd3a93884df99a4 | TECH VIEW | 无 |
bec41d3ac4c279e11ddab98b05c89919 | 凯聪 | http://www.kaicong.net/ |
d1a79e614cbf0ee7fef1ac8d34e8d418 | EMINENT | http://www.eminent-online.com/ |
6d18d6e3609d6ea678eded4afcd34121 | CCTVJAPAN | https://security.panasonic.com/products/ |
f32d128c819832d5d2f3ab1e997450d7 | NEXXT | https://www.nexxtsolutions.com/ |
5daba101ca98f4d3785cc9cdea15ecc6 | Dericam(德瑞凯) | http://www.dericam.com/ |
c7b359118ac572dc0c512e20f8db342c | 捷順 | http://www.jieshun.cn/ |
8e7c109fbb6de2656d44307eba91aa68 | Tenda(腾达) | http://www.tenda.com.cn/product/category-197.html |
1614158f65e4612b93818e33503e547e | Asgari | https://www.asgariofsweden.se/ |
722c3cb4321475e0b76aae96db3f34ef | IP202-2MP IPC | 无 |
79da07aa50f5c0780f458e2d47b73dab | Jod-1 | 无 |
8596b015e13f96d2f6e4c7be38a78752 | ZOELink | 无 |
除了默认凭证问题,酷视高清摄像头 NIP-22 还存在无需认证的 Web 服务及 RTSP 服务缓冲区溢出漏洞,该溢出漏洞的利用难度很低,攻击者可基于此溢出漏洞远程执行任意命令。溢出发生后,watchdog 进程会重启整个系统,攻击者也可利用这点使摄像头拒绝服务。由于固件的同源性,这两个溢出漏洞也有很大可能存在于其他 OEM厂商生产的设备中。
4 漏洞修复建议
4.1 对用户的修复建议
为避免隐私泄漏,建议用户尽快修复系列漏洞。
首先,用户可登录摄像头 Web 管理系统,在以下页面中修改三组默认凭证的用户名和密码。
其次,如果是酷视的设备,建议从酷视官网下载对应设备的最新版固件 【3】,并手动更新,以修复两个溢出漏洞。如果是其他 OEM 厂商的设备,可以尝试和厂商联系获取更新固件,并将设备同公网隔离。
4.2 对厂商的修复建议
由于这系列漏洞影响国内外几十个 OEM 厂商,请上表中可能存在漏洞的厂商自查,及时发布补丁固件并通知用户更新设备固件。
5 总结
1、存活设备中大部分以上都存在默认凭证,对于用户的隐私是个极大的威胁,用户应及时修改默认密码。
2、这系列漏洞还可能影响国内外几十个 OEM 厂商。嵌入式设备固件开发过程中一般都会使用第三方的开源工具或通用软件,这些通用软件又通常由某一特定厂商研发,这就导致很多设备固件存在同源性,不同品牌的设备可能运行相同或者类似的固件以及包含相同的第三方库。漏洞曝出后,由于影响厂商众多,
而并不是所有厂商都会发布漏洞补丁,这就导致网络空间上大量漏洞设备无法修复漏洞。
3、近年来,路由器、摄像头、摄像机、NAS、智能穿戴设备等 IOT 设备的安全漏洞层出不穷,伴随着越来越多的嵌入式设备连入网络,总体安全形势日益突出,用户的个人隐私受到严重的威胁。一方面,厂商及开发者应不断提高自主研发设备的安全性。另一方面,漏洞是不可避免的。对于用户,应该努力提高自己的安全意识,尽量避免将此类设备直接暴露在网络空间上。对于各 IOT 厂商,针对目前安全漏洞曝出越来越频繁,及时修复漏洞,对产品提供自动升级机制是行之有效的方法。