近期,据来自南美的两位安全研究者发现,SNMP(简单网络管理协议)的v1和v2版本协议存在授权认证和访问控制绕过漏洞,至少有78种型号的网络接入和IoT设备受此漏洞影响,攻击者可以利用该漏洞远程获得相关设备的读写权限,进而控制设备。这一漏洞被发现者命名为Stringbleed,受影响的设备产品类型涉及路由器、VoIP网关、IoT设备和其他拨号网关等。
目前,该漏洞原因在安全社区中掀起了一场讨论,围绕ISP(网络服务提供商)错误控制配置和SNMP协议本身存在较大争议。而官方的CVE和NVD漏洞库对此漏洞分配的编号为CVE-2017-5135,但具体的技术分析和最终定论仍在进行中。现在,让我们一起来看看两位研究者对该漏洞的发现过程:
对Stringbleed漏洞的发现过程
在去年7月的DEFCON 24黑客大会上,我们演示了SNMP协议的写权限安全问题,该问题可能会对物联网设备、警用巡逻车、救护车等“紧急任务车辆”的使用和运行造成影响。
2016年12月,我们打算对互联网设备的SNMP协议进行一次安全性模糊测试(fuzz),这一次我们使用了不同社区字符串(community string)组合来进行测试。比仿说,使用“root”、“admin”或“user”等字符串作为SNMP请求消息随机值,测试SNMP协议设备如何响应请求。
我们知道,SNMP协议有3种方式在客户端和远程SNMP设备之间进行身份验证,在SNMP v1和SNMP v2版本中,使用可读的字符串数据类型即社区字符串(公开或私有)来进行认证。而在SNMP v3中,用户则可以选择用户名、密码和身份认证方式进行安全验证。另外,像对象标识符(oids)和陷阱消息(traps)等其它内容信息将会统一保存在管理信息库(MIB)中进行存储。
对SNMP的Fuzz测试过程中,我们编写了一个使用套接字(socket)构建“snmpget”请求的Python测试脚本。在请求消息中,我们需要调用sysDescr OID,如果我们测试的字符串值(admin、root等)正好与保存在SNMP代理中的身份验证信息相同,那么我们就可以成功获取到sysDescr OID信息了,整个过程与暴力破解攻击类似。然而,经过了几天的扫描探测之后,我们发现了一个不可思议的现象:有些设备或指纹节点,无论我们发送什么请求消息,总会向我们返回响应信息。这到底是怎么回事呢??
SysDescr OID(系统描述):SNMP命令,对应一个描述设备系统的特定厂商字符串标识符。
如前所述,按理来说,SNMP v1和v2的身份认证只接受保存在SNMP客户端身份验证机制中的数据值,但从以上我们的研究结果来看,这种情况似乎与SNMP定义规范不相符合,存在出入。
最终,我们发现了SNMP协议存在的问题:可以使用任意字符串或整数值来对某些特定SNMP客户端设备进行身份验证,绕过其安全认证机制,但更糟糕的还在于,甚至可以利用任意字符串或整数值来获取到这些SNMP设备完整的远程读写(read/write)权限。该漏洞被归为不正确的访问控制类型漏洞,编号为CVE-2017-5135。
漏洞验证
我们决定选用思科DPC3928SL网关设备作为漏洞测试产品,而经测试证明,该产品是受此漏洞影响最为严重的网络设备之一。但思科公司表示,他们早就已经停止对这款型号设备的技术支持服务了,现在这款产品硬件属于Technicolor公司,于是我们便与Technicolor公司进行漏洞情况意见交换。经过一番邮件交流,Technicolor确认了该产品漏洞,但却给出了一个我们不能接受的解决方案。
Technicolor公司认为,该漏洞是由于ISP(网络服务提供商)的错误配置引起的,与他们的产品无关!这简直是太滑头了!好吧,谢谢你的帮助确认和快速回复,我们将继续深入分析,请拭目以待。
大家可能会有这样一个疑问:网络上是否还会有其它设备会受到该漏洞影响?是的,没错,我们通过测试证明,多家供应商品牌网络设备存在该SNMP协议漏洞,而这也映证了Technicolor公司的错误观点。我们把该SNMP漏洞命名为STRINGBLEED。
我们决定再对全网SNMP协议设备进行一次扫描测试,在请求消息中,我们用大量的随机哈希值替换了可读的社区字符串,最终测试结果让我们大为震惊,竟然有150多种不同的网络设备指纹受该漏洞影响!事实证明,访漏洞问题并不是由网络服务提供商的错误配置所造成的,问题似乎出在了SNMP协议的自身代码上。
总结
我们在SNMP协议中发现了一个,可以利用任意字符串或整数值来绕过SNMP访问控制的远程代码执行漏洞;
通过该漏洞可以在MIB(管理信息库)中写入任意字符串;
可以在无需community string的情况下,轻易地从目标设备中获取到用户名密码等敏感信息;
随着时间的持续,可能会有更多厂商的多种型号设备会受此漏洞影响,因此,其漏洞修复过程可能并不容易;
Technicolor公司缺乏相应的安全响应和技术分析支持。
漏洞利用PoC
以存在漏洞的192.168.0.1设备为例,其社区字符串(Community String)方式的攻击如下:
野生PoC
以下PoC经漏洞发现者证明,为Stringbleed的非官方PoC,CVE也证实其中包含危险性测试代码,请谨慎下载使用!
git clone https://github.com/string-bleed/StringBleed-CVE-2017-5135.git
cd StringBleed-CVE-2017-5135
make && make all
./poc-linux
目前受影响厂商和相关设备(78种型号设备)
5352 —>Zoom Telephonics, Inc
BCW700J —> BN-Mux
BCW710J —> BN-Mux
BCW710J2 —> BN-Mux
C3000-100NAS —> Netgear
CBV734EW —> Castlenet
CBV38Z4EC —>CastleNet
CBV38Z4ECNIT —>CastleNet
CBW383G4J —>CastleNet
CBW38G4J —>CastleNet
CBW700N —> TEKNOTEL
CG2001-AN22A
CG2001—>UDBNA
CG2001—>UN2NA
CG2002 —>UN2NA
CG2200 —>UN2NA
CGD24G-100NAS —> Netgear
CGD24G-1CHNAS —> Netgear
CM5100 —> Netgear
CM5100-511 —> Netgear
CM-6300n —> Comtrend
DCX-3200 —> Arris
DDW2600 —> Ubee
DDW2602 —> Ubee
DG950A —> Arris
DPC2100 —> Cisco
DPC2320 —> Cisco
DPC2420 —> Cisco
DPC3928SL —> Cisco
DVW2108 —> Ubee
DVW2110 —> Ubee
DVW2117 —> Ubee
DWG849 —> Thomson
DWG850-4 —> Thomson
DWG855 —> Thomson
EPC2203 —> Cisco
EPC3212 —> Cisco
IB-8120 —>W21
IB-8120 —>W21E1
MNG2120J —>NET&SYS
MNG6200 —>NET&SYS
MNG6300 —>NET&SYS
SB5100 —> Motorola
SB5101 —> Motorola
SB5102 —> Motorola
SBG6580 —> Motorola
SBG900 —> Motorola
SBG901 —> Motorola
SBG941 —> Motorola
SVG1202 —> Motorola
SVG2501 —> Motorola
T60C926 —> Ambit
TC7110.AR —> Technicolor
TC7110.B —> Technicolor
TC7110.D —> Technicolor
TC7200.d1I —> Technicolor
TC7200.TH2v2 —> Technicolor
THG540 —> Thomson
THG541 —> Thomson
Tj715x —> Terayon
TM501A —> Arris
TM502B —> Arris
TM601A —> Arris
TM601B —> Arris
TM602A —> Arris
TM602B —> Arris
TM602G —> Arris
TWG850-4U —> Thomson
TWG870 —> Thomson
TWG870U —> Thomson
U10C019 —> Ubee
U10C037 —> Ubee
VM1700D —>Kaonmedia
WTM552G —> Arris
WTM652G —> Arris
DCM-704 —> D-Link
DCM-604 —> D-Link
DG950S —> Arris
*参考来源:stringbleed、bleepingcomputer,freebuf小编clouds编译,转载请注明来自FreeBuf.com。0day
文章评论