多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告
作者:知道创宇404实验室
English version:https://paper.seebug.org/796/
1. 更新情况
2. 事件概述
SNMP协议[1],即简单网络管理协议(SNMP,Simple Network Management Protocol),默认端口为 161/UDP,目前一共有3个版本:V1,V2c,V3。V3是最新的版本,在安全的设计上有了很大改进,不过目前广泛应用的还是存在较多安全问题的V1和V2c版本。SNMP协议工作的原理简单点来说就是管理主机向被管理的主机或设备发送一个请求,这个请求包含一个community和一个oid。oid就是一个代号,代表管理主机这个请求想要的信息。被管理的主机收到这个请求后,看请求community是否和自己保存的一致,如果一致,则把相应信息返回给管理主机。如果不一致,就不会返回任何信息。所以community相当与一个认证的口令。V1和V2c版本的SNMP协议都是明文传输数据的,所以可以通过抓包嗅探等手段获取认证需要的community。
2018年12月25日,Seebug 平台收录了多个基于SNMP协议的敏感信息泄露漏洞[2]。在多种厂商提供的网关类设备中,可以使用任意 community非常容易地读取SNMP提供的明文形式的的Web管理系统的用户名和密码、Wi-Fi凭证等信息。也可以使用任意community通过SET协议指令发送配置更新或控制请求,攻击者可以注入恶意的配置,如在Cisco DPC3928SL通过注入SSID造成Web管理系统的XSS(CVE-2018-20379)。
该漏洞最早于 2017 年 4 月 4 日曝出,CVE编号为CVE-2017-5135,漏洞发现者将该漏洞称之为 Stringbleed[3]。2018年12月22日,时隔一年多,漏洞发现者进行全球探测后提供了一个很全的漏洞影响列表,其中包含23个不同厂商78个不同型号的网关设备,同时申请了多个CVE编号(CVE-2018-20380~CVE-2018-20401)。关于漏洞的成因一直都在争论之中,截止目前依然没有最终定论[4]。该类设备一般由ISP提供,我们暂时没有找到漏洞设备或固件对漏洞原理进行研究。根据社区的讨论结果,产生该漏洞的原因可能有以下几种情况:
- 这些存在漏洞的设备使用了同一个存在逻辑缺陷的SNMP协议实现,该实现代码没有正确处理 community 字符串认证,导致任意 community 均可以通过认证,进一步导致敏感信息泄露。
- ISP 配置错误,无效的访问控制规则。
本文不包含漏洞分析,而是针对全球该类设备漏洞存在情况的数据分析报告。
3. 漏洞复现
直接使用 snmpget
命令发送 SNMP GET 请求即可, -c 选项指定任意字符串作为 community 均可通过认证。
1 2 3 |
snmpget -v 1 -c public $IP iso.3.6.1.2.1.1.1.0 snmpget -v 1 -c '#Stringbleed' $IP iso.3.6.1.4.1.4491.2.4.1.1.6.1.1.0 snmpget -v 1 -c '#Stringbleed' $IP iso.3.6.1.4.1.4491.2.4.1.1.6.1.2.0 |
复现结果如下:
如果目标设备开放了Web服务,则可使用泄露的用户名和密码登陆Web管理系统,如下:
值得一提的是,用户名和密码存在为空的情况。
发送 SNMP SET 请求进行配置更新,-c 选项指定任意 community。如下所示,我们通过snmpset修改了 Web 系统用户名。
4. 漏洞影响范围
我们通过提取漏洞设备相关的“关键词”,在ZoomEye网络空间搜索引擎[5]上共发现了1,241,510个 IP数据。
通过使用 zmap
对这 124 万的IP数据进行存活检测,发现约有 23 万的IP 存活。进一步对存活的 23 万IP进行漏洞存在检验,发现有15882 个目标设备存在该敏感信息泄露漏洞,涉及23个厂商的多个型号设备的多个固件版本。
对这 15882 个漏洞设备的信息进行聚合,得到厂商及版本等统计信息如下(各个型号的ZoomEye dork 为: Vendor +Model +相应型号,如搜索DPC3928SL的语法为:Vendor +Model +DPC3928SL)
漏洞设备的厂商分布饼图如下(有一点需要说明的是,DPC3928SL网关设备属于受此漏洞影响最严重的网络设备之一,原来属于Cisco公司, 现在属于Technicolor。)
国家分布前十如下,主要分布在中国、泰国、韩国等国家。
中国存在漏洞的设备全部分布在广东、台湾两个省份,呈现一定的地域性。其中广东最多,为6318 台。
进一步分析发现,在原全球124万161/udp 端口的该类设备IP数据中,属于中国的几乎全部分布在广东省和台湾省,其他省份基本上没有探测到公网上该类设备端口开放(运营商禁用了SNMP服务或者没有使用同类设备?)。
广东省受影响的设备的ISP分布如下,98% 以上归属于 “珠江宽频/联通“ 这个ISP,存在漏洞的设备大部分为Technicolor CWA0101 Wireless Gateway ,version :gz5.0.2。
台湾的181台漏洞设备都归属于ISP:twmbroadband.com,存在漏洞的设备大部分为Ambit T60C926。结合以上数据分析,我们断定中国存在该漏洞设备的地理分布和当地的ISP有很大关系。
针对所有存在该漏洞的设备,我们统计了凭证的使用情况,如下:
常用用户名,主要包含admin、login、user、dlink等。
常用密码,主要包含 admin、password、dream01、空、br0adband、gzcatvnet、user、Broadcom、dlink、ambit、root等,大部分为常见的弱密码。
非常有意思的是,我们发现以下使用次数最多的用户名密码组合,和使用该凭证组合最多的漏洞设备,以及漏洞设备所在的国家,都存在一定的关联性。
(如第一行记录:中国所有含有该漏洞的设备中约有 5502 台都使用了 admin:admin 凭证,且受影响设备型号数量最多的为 Technicolor/CWA0101。)
5. 总结
基本可以肯定的是,这不是SNMP协议本身的问题,而是协议的实现代码存在漏洞或者ISP配置错误。该漏洞影响厂商、设备型号非常多,且呈现出一定的区域性。
路由器、Modem、摄像头等IoT设备的信息泄露漏洞层出不穷,对个人隐私造成极大的威胁,关闭非必要的端口或者使用防火墙限制非法访问是个值得考虑的举措。
系统的安全性往往取决于最短的那块木板-“木桶效应”,通过SNMP协议泄露HTTP服务凭证很好的说明了这一点。
用户可根据PoC自行验证设备是否存在漏洞,如果存在漏洞可联系相应的ISP寻求解决方案。
6. 相关链接
[1] SNMP 协议
https://baike.baidu.com/item/SNMP/133378?fr=aladdin
[2] Seebug 漏洞收录
https://www.seebug.org/vuldb/ssvid-97741
https://www.seebug.org/vuldb/ssvid-97742
https://www.seebug.org/vuldb/ssvid-97736
[3] Stringbleed
https://stringbleed.github.io/#
[4] 关于该漏洞的讨论
https://www.reddit.com/r/netsec/comments/67qt6u/cve_20175135_snmp_authentication_bypass/
[5] ZoomEye网络空间搜索引擎
https://www.zoomeye.org/searchResult?q=MODEL%20%2BVENDOR%20%2Bport%3A%22161%22
[6] SNMP 历史漏洞参考
http://drops.the404.me/1033.html
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/795/