CVE-2019-0547:DHCP客户端RCE漏洞
字数 1520 2025-08-27 12:33:42
CVE-2019-0547: DHCP客户端远程代码执行漏洞分析
1. 漏洞概述
CVE-2019-0547是微软于2019年修复的一个高危漏洞,存在于Windows系统的DHCP客户端服务中。该漏洞位于动态链接库dhcpcore.dll中,当处理恶意DHCP服务器的回复包时,可能导致远程代码执行(RCE)。
2. DHCP协议基础
2.1 DHCP协议简介
DHCP(Dynamic Host Configuration Protocol)是一种客户端/服务器协议,用于在计算机连接到网络时动态分配IP地址。关键点:
- DHCP服务器监听67端口
- 负责分配IP地址和TCP/IP配置给客户端
- 典型交互过程:Discover → Offer → Request → Ack
2.2 DHCP Ack包结构
DHCP Ack包包含客户端加入网络所需的所有TCP/IP配置信息,其中包含Options域,该域包含进行基本DHCP操作所需的各种参数。
3. 漏洞相关技术细节
3.1 Domain Search Option (Option 119)
漏洞涉及的关键选项是Domain Search Option(RFC 3397):
- 类型字段:119
- 与OFFER和ACK包一起传递给客户端
- 用于指定DNS解析主机名时使用的域名搜索列表
编码格式:
为了紧凑编码,搜索列表(searchlist)中的搜索字符串(searchstrings)被连接在一起编码。例如:
- 域名:www.example.com和dns.example.com
- 编码结果:
\x03www\x07example\x03com\x03dns\x07example\x03com
3.2 漏洞函数分析
漏洞位于dhcpcore.dll的DecodeDomainSearchListData函数中:
- 该函数负责解码编码的search list option域中的值
- 解码时会计算解码后的域名列表长度
- 根据计算的长度分配内存并复制解码的列表
3.3 漏洞触发机制
攻击者可以构造恶意的编码search list:
- 精心构造的输入可使
DecodeDomainSearchListData计算出长度为0 - 导致调用
HeapAlloc分配0字节内存 - 后续操作导致越界写(Out-of-Bounds Write)
4. 漏洞利用场景
4.1 攻击条件
- 受害者连接到攻击者控制的DHCP服务器
- 攻击者可以设置恶意无线AP(如公共WiFi热点)
4.2 攻击流程
- 受害者发送DHCP请求
- 恶意DHCP服务器回复精心构造的DHCP Ack包
- 包含特制的Domain Search Option(Option 119)
- 触发客户端内存越界写
- 最终可能导致远程代码执行
5. 补丁分析
微软补丁的关键修改:
- 在
DecodeDomainSearchListData函数中添加了检查 - 确保传递给
HeapAlloc的size参数不为0 - 如果size为0,函数直接退出
6. 影响与防护
6.1 受影响系统
- 所有未打补丁的Windows系统
6.2 潜在危害
- 远程代码执行
- 完全控制系统
6.3 防护措施
- 及时安装微软安全更新
- 避免连接不受信任的网络
- 使用VPN等加密通道
7. 技术总结
该漏洞展示了网络协议实现中的常见问题:
- 输入验证不足导致内存分配异常
- 边界条件处理不当(0长度分配)
- 网络协议栈中的安全隐患可能带来严重后果
8. 参考资源
- 原始分析报告:McAfee Labs博客
- RFC 3397:Domain Search Option规范
- 微软安全公告:相关补丁说明