思科产品曝多个高危安全漏洞(附详细技术分析)

“360代码卫士”系列产品可支持Windows、Linux、Android、AppleiOS、IBM AIX等平台上的源代码安然阐发,支持的编程说话涵盖C、C++、C#、Objective-C、Java、JSP、JavaScript、PHP、Python、Go、区块链智能合约Solidity等

近日,360企业安然集团代码卫士团队安然钻研职员发清楚明了思科公司收集设备的多个高危安然破绽(CVE-2018-0423、CVE-2018-0424、CVE-2018-0425、CVE-2018-0426),并第一光阴向思科公司申报,帮忙其修复破绽

2018年9月5日,思科公司宣布了4个安然看护布告,公开申谢360企业安然集团代码卫士团队,并且宣布响应的补丁固件版本修复破绽

图 思科公司官方看护布告

图 申谢360代码卫士

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

0×00 CVE-2018-0423 概述

该破绽是一个未授权的缓冲区溢出漏洞,影响 Cisco RV110W Wireless-N VPN Firewall、RV130WWireless-N Multifunction VPN Router、RV215WWireless-N VPN Router 等型号破绽呈现在访客模式的强制门户网站上,不必要进行任何的身份认证,任何用户均可造访,当一个已登岸的访客,主动退出时将触发一个 POST 哀求,其 URL为:https://[target_ip]/guest_logout.cgi,此中 POST 数据的 cip 参数未进行合理的IP地址校验,并且可被绕过,导致精心构造的 cip 参数可以触发缓冲区溢出漏洞,以致直接得到设备的rootshell,此破绽终极的CVSS评分为9.8,详细可以拜见思科(Cisco)宣布的安然看护布告,如下所示:

图 CVE-2018-0423安然看护布告

0×01技巧阐发

经由过程逆向阐发固件文件系统中的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 函数的部分伪代码如下:

图 sub_2AFB0 函数部分伪代码

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

图 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 函数处置惩罚成功,其部分伪代码如下:

图 inet_aton() 函数部分伪代码

是以,恶意用户就可经由过程:点分十进制IP地址 + 一个空缺字符 + 随意率性字符长度的数据内容的形式来实现绕过VERIFY_IPv4函数的校验,而空缺字符可所以空格、制表符等,这里可以直接应用空格即可实现绕过

而后法度榜样将用户可控的 cip 值算作参数通报给应用危险函数的 get_client_vlan_id 函数,此函数未对 cip 做任何过滤或处置惩罚,直接使用 strcpy 函数将其拷贝至大年夜小固定的栈空间上,经由过程逆向阐发可知此中 0×84-0×88 寄放着返回地址 ->LR 的值,是以一旦cip的长度跨越0×84将直接覆盖返回地址,导致缓冲区溢出的发生,其部分汇编代码如下:

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

0×02 参考链接

1. https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20180905-rv-routers-overflow(官方看护布告:CVE-2018-0423)

2. https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20180905-rv-routers-injection(官方看护布告:CVE-2018-0424)

[1] [2]下一页

3. https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20180905-rv-routers-disclosure(官方看护布告:CVE-2018-0425)

4. https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20180905-rv-routers-traversal(官方看护布告:CVE-2018-0426)

0×03 关于360代码卫士

“360代码卫士”是360企业安然集团旗下专注于软件源代码安然的产品线,能力涵盖了源代码缺陷检测、源代码合规检测、源代码溯源检测三大年夜偏向,分手办理软件开拓历程中的安然缺陷和破绽问题、代码编写的合规性问题、开源代码安然管控问题今朝360代码卫士已利用于上百家大年夜型机构,赞助用户构建自身的代码安然保障体系,消减软件代码安然隐患

上一页[1] [2]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包