前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >中国深圳一家厂商的智能摄像头曝出漏洞:至少 17.5 万设备可被远程攻击

中国深圳一家厂商的智能摄像头曝出漏洞:至少 17.5 万设备可被远程攻击

作者头像
FB客服
发布2018-02-28 16:45:18
1.4K0
发布2018-02-28 16:45:18
举报
文章被收录于专栏:FreeBufFreeBuf

安全企业 Bitdefender 和 Checkmarx 均发布报告表示,安全研究员在多个常用智能摄像头中发现远程侵入漏洞,涉及 VStarcam、Loftek、以及 Neo IP camera。其中的 Neo IP camera 就是中国深圳厂商丽鸥电子 (Neo Electronics)生产的智能摄像头设备,此次安全企业提供的报告中具体列出了丽鸥电子的两款产品:iDoorbell 以及 Neo Coolcam NIP-22 两种摄像头均存在缓冲区溢出问题,受影响的设备可以被攻击者远程入侵,执行任意代码并彻底接管。

关键发现

深圳丽欧电子是家中国企业,他们提供智能传感器、报警器和摄像头。目前其产品中 iDoorbell 和 NIP-22 摄像头存在几个缓冲区溢出漏洞(部分出现在身份验证之前)。而其他摄像头也都在使用相同的软件,因此研究者认为深圳丽欧电子的其他产品中可能也有存在问题的产品,而不仅是 iDoorbell 以及 Neo Coolcam NIP-22 摄像头。Bitdefender 使用 Shodan 扫描后,认为大概有 175000 个设备所使用的 UPnP上存在开放端口,可被攻击者利用。

Checkmarx 的研究员还分析了几组 Loftek 和 VStarcam 的智能摄像头,发现了其他的安全漏洞以及之前就曝出的安全问题。他们在 Loftek CXS 2200 摄像头中,发现了 CSRF 漏洞 ——攻击者可以利用这个漏洞添加新的管理员账号,还有可引发 DoS 的 SSRF 漏洞,执行任意代码的 XSS 漏洞和文件泄露漏洞;而在 VStarcam C7837WIP 摄像头中,研究员发现了存储式 XSS,开放重定向,强制重置等问题。这些摄像头都可以直接处理 HTTP 响应,这会提升如XSS攻击、页面劫持、用户信息修改、缓存中毒等问题发生的可能性。

Checkmarx 指出一部分厂商制造的摄像头比较简陋,只是使用了非常简单的硬件和软件。调查表明超过120万设备是可能存在漏洞的。

我们的初次扫描结果出来后,我们发现只要你的摄像头是能够联网的,你就处在风险之中。恶意用户可以利用你的设备追踪你的每日生活,知道你是在家还是外出了。他们能窃取你的邮箱信息,获取你的无线连接,取得其他设备的权限,监听你的对话。 —— Checkmarx 在报告中写道

技术分析

深圳丽欧电子的两款摄像头出现的问题可能遭受两种类型的攻击,第一种是来自摄像头连接的 web 服务,第二种则来自实时流协议 RSTP 服务。

web 服务 Exp

HTTP服务中出现的漏洞可以通过登陆处理用户名和密码的错误方式触发。用户在进行身份验证的时候,他们会在 GET 请求中传递 “ http:///?usr=&pwd=”的身份凭证。web 认证模块试图解析这些值的时候,“libs_parsedata”会复制栈上的两个参数的内容而没有检查实际的存储容量,所以会引发越界写入的问题。

由于启用了完整的ASLR机制,加载二进制文件的地址总是随机的。但是,由于二进制本身不是PIE(位置独立可执行程序是一种保护技术,允许二进制及其所有依赖在每次执行应用程序时都会在虚拟内存中被加载到随机位置),也就是说它每次还是会加载在同一地址上。

在模拟攻击中,研究员使用两个溢出来调用“系统”函数,并指定了要执行的命令。为此,他们会使用位于地址 0x0007EDD8 的 ROP 工具。这会将栈指针的地址改为 R0,之后调用系统函数。跳转到 ROP 中,栈指针就会指向返回地址所在之处。

为了执行命令,研究员首先需要用 0x0007EDD8 覆盖返回地址,并在该地址之后写入命令。通过 username 参数的溢出,可以覆盖栈上的所有内容,包括返回值,之后可以使用这 204 字节的空间写入命令。随后,可以使用密码这部分的溢出来覆盖 328 字节的返回地址。由于字符串必须是以 null 终止的,所以该字节被自动附加,将小工具的地址留在栈上。最后的 payload 看起来应当如下所示:

代码语言:javascript
复制
GET /?usr=<204bytes>&pwd=<328bytes><0xD8ED07> HTTP/1.1

这段命令不能包含 null ,’&’字符或空的空间。但这里的限制可以使用内部字段分隔符 ${IFS} 来轻松实现。代码执行之后,服务崩溃,但保护进程会继续重启摄像头。由于文件系统是以读写方式挂载的,所以可以通过 TFTP 下载二进制文件并修改 rcS 文件以在启动时保持持久性。

摄像头的 RSTP 服务 EXP

这个 RTSP 漏洞发生在 DESCRIBE 请求中的授权字段的处理中。首先 “Authorization: Digest”字段需要先复制到缓冲区中,然后执行如下代码,R0就会指向 “Digest” 的开头。

接下来,由于程序会希望将输入的内容格式化成=“” 的形式,它会尝试使用 “sscanf” 来解析输入内容。

R0是初始来源,R1 中是正则表达式,R2 和 R3 则是目标。因为没有检查字符串长度,可以触发缓冲区溢出。

由于 HTTP 服务器和 RTSP 服务器都运行在同一个二进制文件中,所以可以使用上述相同的工具来获取代码执行的权限。名称应该具有以下形式:<296字节>+,这会用在写入命令中,而字段为<548字节>+,最终请求将如下所示:

代码语言:javascript
复制
DESCRIBE rtsp://:554/ RTSP/1.0
Authorization: Digest <296 bytes>=”<548 bytes><0xD8ED07>”

可以看到添加最后的null字节之后,栈上会形成和(0x0007EDD8)相同的地址,此时,命令中不能包含 “=” 字符但可以包含空格。

在两种摄像头型号都都出现这个漏洞,唯一的区别是系统调用程序的地址是不同的,如上所示可以用在iDoorbell上,而如果想要用在 NIP-22 型号摄像头上地址应该是 0x00084b64 。

目前,Bitdefender 及 Checkmarx 都向相关用户发出预警,这些存在安全隐患的设备可能会被劫持、组建成如 Mirai 之类的大型僵尸网络。相关用户应当提起重视并尽快更新系统。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关键发现
  • 技术分析
    • web 服务 Exp
      • 摄像头的 RSTP 服务 EXP
      相关产品与服务
      多因子身份认证
      多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档