查看原文
其他

“360代码卫士”协助 D-LINK 修复多个高危漏洞,获官方致谢

带你学习带你飞的 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

近期,360企业安全集团代码卫士团队安全研究人员发现友讯(D-LINK)公司旗下产品系列 DIR-619、DIR-605 系列路由器的两个高危安全漏洞(CVE-2018-20056和CVE-2018-20057),并第一时间向友讯(D-LINK)公司汇报,协助其修复漏洞。

DIR-605 及 DIR-619 系列是友讯公司旗下的家用路由器产品。北京时间2019年1月4日,友讯(DLINK)公司发布了安全更新公告(https://securityadvisories.dlink.com/announcement/publication.aspx?name=SAP10100),公开致谢360企业安全集团代码卫士团队,并且发布相应的补丁修复漏洞。

图 致谢360代码卫士

本次友讯公司修复的漏洞中,CVE-2018-20056是一个缓冲区溢出漏洞,本文将针对该漏洞进行技术分析。



漏洞概述

CVE-2018-20056

该漏洞是一个无需授权的栈缓冲区溢出漏洞,影响 D-LINK DIR-605L 300M wireless cloud routing 和 DIR-619L 300M wireless cloud routing 型号。漏洞出现在 web 服务器中的一个功能接口中,可被未经验证的用户通过 post 请求进行调用。请求的 URL 为: http://[target_ip]/goform/formLanguageChange,其中 POST 数据的 currtime 参数未进行长度校验通过危险的内存拷贝函数写入栈上,导致精心构造的 currtime 参数可以触发缓冲区溢出漏洞,甚至直接获得设备的 rootshell。


技术分析

通过 binwalk 解包固件后分析系统文件目录,发现系统中存在 boa 程序。Boa 程序是一个轻量级的 web 服务器程序。常见于嵌入式系统中。通过逆向分析发现此程序在 boa 开源代码的基础上新增了很多功能接口以实现路由器上的不同功能。

其中大部分功能接口都需要经过身份验证后才可以使用,但仍旧存在少部分功能接口如登录注销等可以使用。通过逆向分析 boa 程序定位至 process_header_end 函数,可以找到未验证用户可使用的部分功能。其中部分关键代码如下,其判断流程可简单总结为,若is_valid_user 函数判断请求来自于未验证用户后,会再次通过 strstr 函数判断 url 请求是否为此用户可使用的功能接口。通过分析及实验发现,除了 login 功能外,未验证用户还可以使用 formlanguagechange 功能接口来改变web前台界面显示的语言。


图 process_header_end 函数


接下来通过定位分析分发函数websaspinit寻找进入此函数的方式,关键代码如下:


图 websaspinit 函数


通过分析实验发现,在 post 请求访问 http://[target_ip]/goform/formLanguageChange时会进入 formLanguageChange 函数流程,函数中通过 websgetvar 函数获取 post 请求中 config.i18n_languagecurrtimenextpage 参数的值。

 

websgetvar 函数中,通过 strlenmallocmemcpy 函数将参数值保存至申请出的一块内存空间中,但并未对参数长度进行判断和限制。这种参数获取的方式在遇到危险的内存拷贝函数时极易产生问题,是后面产生漏洞的根源所在。


图 websgetvar函数


继续分析 formLanguageChange 函数,程序将获取到的 currtime 参数值直接通过危险函数 sprintf 写入栈上 0x110-0xf8 的位置导致了缓冲区溢出。

通过分析,函数返回地址保存在 0x110-0x4 位置,即当参数长度大于 0xf4 时会直接覆盖函数返回地址,导致程序控制流被劫持。


图 formLanguageChange 函数


结合路由器环境本身防护机制的不足,在攻击者控制程序流程后,可通过 rop 技术实现任意代码执行。

Rop流程为:1、赋值  a0  参数。2、调用  sleep  函数。3、赋值某寄存器为栈上地址。4、通过寄存器跳转的方式跳入栈中 shellcode 的位置完成利用。

 图 利用结果

参考链接

https://securityadv.isories.dlink.com/announcement/publication.aspx?name=SAP10100

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20056

关于 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代码安全实验室是360代码卫士的研究团队,专门从事源代码、二进制漏洞挖掘和分析的研究团队,主要研究方向包括:Windows/Linux/MacOS 操作系统、应用软件、开源软件、网络设备、IoT设备等。团队成员既有二进制漏洞挖掘高手,微软全球 TOP100 贡献白帽子,Pwn2Own 2017 冠军队员,又有开源软件安全大拿,人工智能安全专家。实验室安全团队的研究成果获得微软、Adobe、思科、Oracle、Linux 等各种开源组织等60多次致谢。

如果你:

  • 对从事漏洞研究工作充满热情

  • 熟悉操作系统原理,熟悉反汇编,逆向分析能力较强

  • 了解常见编程语言,具有一定的代码阅读能力

  • 熟悉 Fuzzing 技术及常见漏洞挖掘工具

  • 挖掘过系统软件、网络设备等漏洞者(有cve编号)优先

  • 具有漏洞挖掘工具开发经验者优先

那么,你将得到:

  • 白花花的银子——月薪20K-60K+年底双薪+项目奖,优秀者还有股票期权哦

  • 暖心的福利——六险一金+各种补贴+下午茶+节假日礼品

  • 重点重点重点——志同道合、暖心的我们

心动不如行动!无论你是经验丰富的大咖儿,还是志向从事安全研究的菜鸟儿,不要犹豫!

赶紧给 liubenjin@360.net 投简历吧!我会在3个工作日内找到你~


推荐阅读

“360代码卫士”帮助以太坊公链发现远程 DoS 漏洞,获官方致谢

“360代码卫士”协助 Oracle 公司修复多个 WebLogic 漏洞,获官方致谢

“360代码卫士”协助苹果公司修复多个高危漏洞,获官方致谢

“360代码卫士”协助 Oracle 公司修复多个高危漏洞,获官方致谢

“360代码卫士”帮助 Linux 内核发现多个安全漏洞(附技术分析)

Adobe修复Pwn2Own比赛漏洞 公开致谢360代码卫士

ThinkPHP 框架SQL注入技术分析(文末有彩蛋)





转载请注明 “转自360代码卫士www.codesafe.cn”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存