请使用手机微信扫码安全登录

切换账号密码登录

绑定手机号

应国家法规对于账号实名的要求,请您在进行下一步操作前,需要先完成手机绑定 (若绑定失败,请重新登录绑定)。了解更多

不绑定绑定手机号

360官网 | 360商城

推荐论坛版块活动360粉丝商城众测粉丝轰趴馆常见问题
本帖最后由 杨乃玉 于 2018-9-11 11:36 编辑
近日,360企业安全集团代码卫士团队安全研究人员发现了思科公司网络设备的多个高危安全漏洞(CVE-2018-0423、CVE-2018-0424、CVE-2018-0425、CVE-2018-0426),并第一时间向思科公司报告,协助其修复漏洞。

2018年9月5日,思科公司发布了4个安全公告,公开致谢360企业安全集团代码卫士团队,并且发布相应的补丁固件版本修复漏洞。


360社区

360社区

图 思科公司官方公告

360社区

360社区

图 致谢360代码卫士

本次思科公司修复的漏洞中,CVE-2018-0423是一个缓冲区溢出漏洞,CVSS评分为9.8分,本文将针对该漏洞进行技术分析。

0x00 CVE-2018-0423概述

该漏洞是一个未授权的缓冲区溢出漏洞,影响Cisco RV110W Wireless-N VPN Firewall、RV130W Wireless-N Multifunction VPN Router、RV215W Wireless-N VPN Router等型号。

漏洞出现在访客模式的强制门户网站上,不需要进行任何的身份认证,任何用户均可访问,当一个已登陆的访客,主动退出时将触发一个POST请求,其URL为:https://[target_ip]/ guest_logout.cgi,其中POST数据的cip参数未进行合理的IP地址校验,并且可被绕过,导致精心构造的cip参数可以触发缓冲区溢出漏洞,甚至直接获得设备的root shell,此漏洞最终的CVSS评分为9.8,具体可以参见思科(Cisco)发布的安全公告,如下所示:

360社区

360社区

图 CVE-2018-0423安全公告

0x01技术分析

通过逆向分析固件文件系统中的httpd应用,并修复其中的符号表后,可以定位到在处理guest_logout.cgi时,将调用sub_ 2B320函数,而后进入sub_2AFB0函数,sub_2AFB0函数主要获取POST请求中的cmac、cip和submit_button的值,并对cmac和cip分别进行MAC地址和IP地址的合法性检验,如果MAC地址和IP地址都验证成功,则返回1,将进入包含漏洞函数get_client_vlan_id的分支(具体的漏洞函数get_client_vlan_id将在后文进行说明),其中sub_2AFB0函数的部分伪代码如下:

360社区

360社区

图 sub_2AFB0函数部分伪代码

从业务逻辑处理上看,这样处理是没有任何问题的,因为cmac和cip是用户可控的参数,必然需要先进行合法性校验的,当然由于我们知道触发漏洞的函数在get_client_vlan_id上,此函数将用户可控的cip作为参数,因此这里着重分析VERIFY_IPv4函数对cip的校验流程,1)首先利用sscanf()判断是否存在合法的点分十进制IP地址;2)再利用inet_aton()判断是否可以将点分十进制IP地址串转换成网络序的IP地址。其关键的部分伪代码如下所示:

360社区

360社区

图 VERIFY_IPv4()函数部分伪代码

VERIFY_IPv4函数从cip提取%d.%d.%d.%d形式的IP地址,这很容易满足,只需要cip包含合法的点分十进制形式的IP地址即可,如192.168.1.100。
随后关键分析inet_aton函数对字符串IP地址的处理,如果处理成功则返回1,这里要实现触发缓冲区溢出漏洞就必须让inet_aton处理成功,返回1,通过逆向分析发现,假设合法的IP地址后增加了一个字符,如:192.168.1.100X,那么程序会判断这个X是否为\x00,是否是ascii码,并且是否为空白字符,如果不为\x00,并且是ascii码,但又不是空白字符,那么就会返回0,这样就表示inet_aton函数处理失败,但是如果X不为\x00,并且是ascii码,又是空白字符,那就会绕过空白字符之后的字符校验,并且能成功返回1,这样就表示inet_aton函数处理成功,其部分伪代码如下:

360社区

360社区

图 inet_aton()函数部分伪代码

因此,恶意用户就可通过:点分十进制IP地址 + 一个空白字符 + 任意字符长度的数据内容的形式来实现绕过VERIFY_IPv4函数的校验,而空白字符可以是空格、制表符等,这里可以直接使用空格即可实现绕过。
而后程序将用户可控的cip值当作参数传递给使用危险函数的get_client_vlan_id函数,此函数未对cip做任何过滤或处理,直接利用strcpy函数将其拷贝至大小固定的栈空间上,通过逆向分析可知其中0x84-0x88存放着返回地址->LR的值,因此一旦cip的长度超过0x84将直接覆盖返回地址,导致缓冲区溢出的发生,其部分汇编代码如下:

360社区

360社区

图 get_client_vlan_id()函数部分汇编代码

0x02 参考链接

1.https://tools.cisco.com/security ... rv-routers-overflow(官方公告:CVE-2018-0423)

2.https://tools.cisco.com/security ... v-routers-injection(官方公告:CVE-2018-0424)

3.https://tools.cisco.com/security ... -routers-disclosure(官方公告:CVE-2018-0425)

4.https://tools.cisco.com/security ... v-routers-traversal(官方公告:CVE-2018-0426)

0x03 关于360代码卫士

“360代码卫士”是360企业安全集团旗下专注于软件源代码安全的产品线,能力涵盖了源代码缺陷检测、源代码合规检测、源代码溯源检测三大方向,分别解决软件开发过程中的安全缺陷和漏洞问题、代码编写的合规性问题、开源代码安全管控问题。“360代码卫士”系列产品可支持Windows、Linux、Android、Apple iOS、IBM AIX等平台上的源代码安全分析,支持的编程语言涵盖C、C++、C#、Objective-C、Java、JSP、JavaScript、PHP、Python、Go、区块链智能合约Solidity等。目前360代码卫士已应用于上百家大型机构,帮助用户构建自身的代码安全保障体系,消减软件代码安全隐患。【来源:360企业安全】

更多资讯详见:360社区早报(2018-9-11)

共 5 个关于360代码卫士协助思科修复高危漏洞获公开致谢的回复 最后回复于 2018-9-11 14:32

评论

直达楼层

360fans_u36574388 VIP认证 LV10.上校 发表于 2018-9-11 08:10 | 显示全部楼层 | 私信
光感谢?没给钱吗?
来自360手机N6(360社区3.4.8版)
杨乃玉 超级版主 不告诉你! 
2018-9-11 09:47回复
tan7177 LV15.大将 发表于 2018-9-11 09:15 | 显示全部楼层 | 私信
赞一个!!!
杨乃玉 超级版主 谢谢朋友! 
2018-9-11 09:47回复
360fans_75898719 LV7.上尉 发表于 2018-9-11 11:20 | 显示全部楼层 | 私信
标题乱七八糟,看不懂
杨乃玉 超级版主 修正了,感谢朋友指正! 
2018-9-11 11:36回复
muzb LV8.少校 发表于 2018-9-11 13:11 | 显示全部楼层 | 私信
谢谢分享  赞一个
2018-9-11 14:23回复
kzg VIP认证 版主 发表于 2018-9-11 14:32 | 显示全部楼层 | 私信
为360点赞
2018-9-11 14:34回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

杨乃玉 超级版主

粉丝:204 关注:2 积分:216857

精华:659 金币:260587 经验:148455

最后登录时间:2024-4-18

公测AI小水滴D903 版主 安全卫士10周年纪念 360粉丝达人勋章 360商城青铜会员

私信 加好友

最新活动

360云台摄像机9Pro写评论送大奖!

排行榜

热度排行 查看排行
今日 本周 本月 全部
    今日 本周 本月 全部

      内容推荐 热门推荐最新主帖

      扫码添加360客服号,涨知识的同时还有超多福利等你哦

      快速回复 返回顶部 返回列表