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

安全企业 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 看起来应当如下所示:

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字节>+,最终请求将如下所示:

DESCRIBE rtsp://:554/ RTSP/1.0
Authorization: Digest <296 bytes>=”<548 bytes><0xD8ED07>”

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

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

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

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA技术zhai

优化不易,且写且珍惜!

本文要感谢我职级评定过程中的一位评委,他建议把之前所做的各种性能优化的案例和方案加以提炼、总结,以文档的形式沉淀下来,并在内部进行分享。力求达到如下效果:

4357
来自专栏EAWorld

DevOps平台中的自动化部署框架设计

本文目录: 一、背景 二、我们的需求是什么? 三、概念澄清 四、概念模型 五、总体设计 六、关键点设计 七、总结 一、背景 说到自动化部署,大家肯定都会想到一些...

5114
来自专栏EAWorld

企业级API网关的设计

本文目录: 一、网关简介 二、网关的作用和价值 三、企业级API网关需要具备的条件 四、业界常用的API网关方案 五、如何设计一个好的企业级API网关产品 六、...

1K9
来自专栏大史住在大前端

一统江湖的大前端(3) DOClever——你的postman有点low

有了Mock服务器和Excel的文档说明后,相信大家的沟通效率会比以前提升很多,但仍然被沟通占据着绝大部分开发时间,常常遇到的情况会有:

1505
来自专栏JAVA高级架构

高并发、高性能 Web 架构

2072
来自专栏小黄人打代码

你想拥有自己的微信公众号吗?戳这里

1574
来自专栏杨建荣的学习笔记

迁移式升级的一点思考 (r10笔记第27天)

目前有一个很实际的需求,因为硬件老化严重,需要能够借助一次维护时机把数据库迁移到一台较好配置的机器上,避免潜在的硬件故障导致的业务停顿,也算防患于未然吧。 本来...

2727
来自专栏杨建荣的学习笔记

MySQL主从信息的元数据维护

前几天专门花了时间开始做元数据的稽核,其实这只是一个初步的开始,也算是才开始走上正道。

1143
来自专栏安恒信息

邮箱安全服务专题第5期 | 邮箱APT检测分析关键技术

上一期我们介绍了钓鱼邮件的常规检测方法,其实,无论采用怎么样的方式,人的安全意识永远都是第一位,纵使钓鱼邮件写得多么诱人深入人心,只要我们守住底线,点击之前先思...

3126
来自专栏Java架构师历程

WebBuilder —— Web 开发平台

WebBuilder是一款跨平台、数据库和浏览器的可视化Web应用开发平台,使用了多项最新的技术,使Web应用的开发更快捷和简单。

8574

扫码关注云+社区