Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

栏目: 编程工具 · 发布时间: 5年前

内容简介:作者:启明星辰ADLab2月12日,微软发布2月份月度例行安全公告,修复了多个高危漏洞,其中包括Windows DHCP Server远程代码执行漏洞CVE-2019-0626。当攻击者向DHCP服务器发送精心设计的数据包并成功利用后,就可以在DHCP服务中执行任意代码,漏洞影响范围较大。针对此漏洞,启明星辰ADLab第一时间对其进行了详细分析。DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议。DHCP通常用于集中管理分配IP地址,使client动态地获得IP地址、Gateway地址

作者:启明星辰ADLab
公众号: ADLab

1.漏洞背景

2月12日,微软发布2月份月度例行安全公告,修复了多个高危漏洞,其中包括Windows DHCP Server远程代码执行漏洞CVE-2019-0626。当攻击者向DHCP服务器发送精心设计的数据包并成功利用后,就可以在DHCP服务中执行任意代码,漏洞影响范围较大。针对此漏洞,启明星辰ADLab第一时间对其进行了详细分析。

2.漏洞影响版本

  • Windows 7
  • Windows 8.1
  • Windows 10
  • Windows Server 2008
  • Windows Server 2012
  • Windows Server 2016
  • Windows Server 2019

3.协议简介

DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议。DHCP通常用于集中管理分配IP地址,使client动态地获得IP地址、Gateway地址、DNS 服务器 地址等信息。DHCP客户端和DHCP服务端的交互过程如下图所示。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

传输的DHCP协议报文需遵循以下格式:

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

DHCP包含许多类型的Option,每个Option由Type、Length和Data三个字段组成。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

Type取值范围1~255,部分Type类型如下图所示。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

DHCP服务在处理Vendor Specific 类型(Type=43)的Option结构存在安全漏洞。首先看下DHCP服务程序对Option的处理过程, ProcessMessage函数负责处理收到的DHCP报文,调用ExtractOptions函数处理DHCP的Option字段,传入函数ExtractOptions的参数1(v7)为DHCP报文指针,参数 3(*(unsigned int *)(v5 + 16)) 对应指针偏移位置+16的数据,即Len字段。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

……

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

ExtractOption函数如下所示。 v6 = (unsigned __int64)&a1[a3 - 1]; 指向报文末尾位置;v10=a1+240;指向报文中Option结构。在for循环中处理不同类型的Option结构,当 type=43(Vendor Specific Information) ,传入指针v10和指针v6作为参数,调用ParseVendorSpecific函数进行处理。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

……

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

……

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

……

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

ParseVendorSpecific函数内部调用UncodeOption函数。UncodeOption函数参数a1指向option起始位置,a2指向报文的末尾位置。UncodeOption函数存在安全漏洞,下面结合POC和补丁比对进行分析。

4.漏洞分析

构造一个DHCP Discovery报文,POC如下所示,POC包含两个 vendor_specific 类型的Option结构。 vendor_specific1 是合法的Option结构,Length取值0x0a等于Data的实际长度(0x0a), vendor_specific2 是不合法的Option结构, Length取值0x0f大于Data的实际长度(0x0a)。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

(1)DHCP服务器收到Discovery请求报文,对数据包进行处理。首先执行ExtractOptions处理Options,当处理 vendor_specific 类型的Option时,进入到ParseVendorSpecific进行处理。POC中构造一个合法的 vendor_specific1 ,目的是为了绕过84~85行的校验代码,使程序顺利执行到ParseVendorSpecific函数。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

(2)ParseVendorSpecific调用UncodeOption函数。

  • 32~43行在do-while循环中计算Option结构的 Length值之和,保存到v13,作为分配堆内存长度。POC中包含两个 vendor_specific 结构,首先处理vendor_specific1,计算v13,即 vendor_specific1 长度a,并且使v12指向下一个Option结构 vendor_specific2 ,当进入43行while条件判断,由于 vendor_specific2 长度不合法,do-while循环结束。

  • 48行调用HeapAlloc分配堆内存,分配的内存大小v13=a。

  • 51~58行在for循环中依次将 vendor_specific 结构中的Data拷贝到分配的堆内存中。进入第一次循环时,v1指向 vendor_specific1 ,v8指向末尾位置,满足条件v1<v8,55行调用memcpy将 vendor_specific1 的Data字段拷贝到分配的堆内存,拷贝长度Length=a。进入第二次循环,v1指向 vendor_specific2 ,v8指向末尾位置,仍然满足条件v1<v8,再次调用memcpy将 vendor_specific2 的Data字段拷贝到分配的堆内存,拷贝长度Length=0xf。由于分配的堆内存大小只有a个字节,而拷贝的总长度=0x0a+0x0f,从而导致堆溢出。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

5.补丁比对

补丁后的版本添加了对Length字段的有效性判断。

Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)

6.安全建议

及时安装安全补丁: https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0626

启明星辰积极防御实验室(ADLab)

ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员。截止目前,ADLab通过CVE发布Windows、 Linux 、Unix等操作系统安全或软件漏洞近400个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。 Windows DHCP Server远程代码执行漏洞分析(CVE-2019-0626)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通CSS(第2版)

精通CSS(第2版)

[英] Andy Budd、[英] Simon Collison、[英] Cameron Moll / 陈剑瓯 / 人民邮电出版社 / 2010-5 / 49.00元

本书汇集了最有用的CSS技术,介绍了CSS的基本概念和最佳实践,结合实例探讨了图像、链接和列表的操纵,还有表单设计、数据表格设计、纯CSS布局等核心CSS技术。此外,书中着眼于创建跨浏览器的技术,讨论了bug及其捕捉和修复技术,还将所有技术组合成两个精彩的实例,讲述这些技术的工作原理和实际用法。 本书适合具有HTML和CSS基础知识的读者阅读。一起来看看 《精通CSS(第2版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具