CVE-2019-0547

CVE-2019-0547是今年微软修复的第一个漏洞,具体是系统中负责DHCP客户端服务的动态链接库dhcpcore.dll易受到DHCP reply包的攻击。
如果用户尝试连接到虚假DHCP服务器,攻击者就可以利用该漏洞来进行远程代码执行。

DHCP协议概述

DHCP是当计算机连接到网络时用来动态分配IP地址的C/S协议。DHCP服务器监听着67端口,并负责分配IP地址到DHCP客户端并分配TCP/IP配置到终端。
DHCP握手过程如下图所示:

DHCP OfferDHCP Ack之间,包中含有客户端加入网络所需的所有TCP/IP配置信息。DHCP ack包的结构如下所示:

Options域有进行基本DHCP操作所需要的参数。其中一个是Domain Search (type field119)。

Domain Search Option field (RFC 3397)

optionOFFERACK包一起传递给客户端来指定使用DNS解析主机名时使用的域名搜索列表。DHCP option域的格式如下:

为了让searchlist编码紧凑一点,searchlist中的searchstrings是连接在一起编码的。www.example.com 和dns.example.com这样的域名都编码成了:

漏洞

而在dhcpcore.dllDecodeDomainSearchListData函数中就存在着一个漏洞。DecodeDomainSearchListData函数解码了编码的search list option域中的值。在解码时,函数会计算解码的域名列表的长度,并分配内存并复制解码的列表。
恶意用户可以创建一个编码的search list,比如当DecodeDomainSearchListData函数解码时,生成的长度为0。这会导致0内存的heapalloc,导致越界写。

补丁

补丁包含一个检查来确保到HeapAllocsize参数不是0。如果是0,函数就会退出。

结论

网络中的恶意DHCP服务器可以通过回复来自客户端的DHCP请求来利用该漏洞。恶意DHCP服务器也可以说用户连接的无线AP。成功利用该来的可以触发客户端中的代码执行,并控制系统。

本文翻译自:https://securingtomorrow.mcafee.com/other-blogs/mcafee-labs/dhcp-client-remote-code-execution-vulnerability-demystified/

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖