NVRMini2摄像头严重漏洞安全通告

发布时间 2018-09-21

漏洞编号和级别


CVE编号:CVE-2018-1149,危险级别:严重,CVSS分值:厂商自评10,官方未评定
CVE编号:CVE-2018-1150,危险级别:严重,CVSS分值:厂商自评8.3,官方未评定

影响版本


NUUO NVRMini2 3.8.0及以下版本


漏洞概述


Tenable官网上公开了关于由NUUO公司开发的摄像头系统NVRMini2存在两个严重漏洞。
CVE-2018-1149:未经身份验证的远程堆栈缓冲区溢出
CVE-2018-1150:后门
NVRMini2的结构简图如下



漏洞验证


CVE-2018-1149:
NVRMini2系统对外暴露了一个HTTP访问接口http://<target>/cgi-bin/cgi_system,通过这个接口,具有权限的用户可以访问到终端设备。cgi_system文件中的功能只有授权用户可以访问,认证的方法为比较用户访问数据Cookie字段中的PHPSESSID值和存储/tmp目录中的session文件名,构建session文件名的代码如下:


从sub_534a4返回的值为会话标识字符串。程序对该字符串长度没有作任何限制。当字符串传递到sprintf以构建tmp文件名时并没有边界检查。因此,未经身份验证的攻击者可以将超长的PHPSESSID值远程传递给sprintf导致缓冲区溢出,从而远程执行代码。
测试代码如下:


测试代码会导致NVR系统会发生崩溃现象,经过深入分析,也可以远程执行代码,攻击者不仅能够控制NVR,还可以访问和修改NVR中所有的用户凭证数据,影响严重。


CVE-2018-1150:
NVRMini2的PHP代码中常见的习惯为:
检查当前PHP会话是否有效。
验证会话是否具有正在访问的页面的适当权限(即admin,poweruser,user,root,guest)。
但是,check_session_is_valid()函数中却存在后门的代码,函数如下:


其中标识为“back door”的字样为其源码中就存在的。constant(“MOSES_FILE”) 指向的路径为/tmp/moses。如果/tmp/moses/存在,则未授权的攻击者可以远程列出所有非admin的用户,并修改他们的密码.


攻击演示视频如下:

http://www.iqiyi.com/w_19s2b6hn11.html

修复建议


官方暂时没有相关的方案,建议保证设备不暴露在互联网上,并在防火墙设备上加入对摄像头HTTP服务的访问控制策略。


参考链接


https://www.tenable.com/security/research/tra-2018-25