/  

CVE-2023-28231(HCP 服务器远程执行代码漏洞)

在某些运行 DHCP 服务的 Windows 服务器中发现了一个漏洞,该漏洞可能导致远程代码执行。出现此漏洞的原因是未正确访问 DHCP 中继转发消息。

image.png

DHCP,也称为 Dynamic Host Configuration Protocol。顾名思义,它可以帮助我们动态地将 IP 地址交付给主机,允许它们通过网络进行通信。DHCP 在客户端-服务器请求-响应模型上工作。它在应用程序层工作,DHCP 服务器分配的 IP 地址本质上是动态的,如果未启动续订请求,则会自动过期。它适用于DORA流程,该流程代表:

D=发现

O=报价

R=请求

A=确认

为了更深入地了解 CVE-2023-28231 漏洞,必须探索 DHCP 的基本功能并掌握基本的 DHCPv6 概念。设计IPv6的目的是允许无状态IP地址自动配置。部署后,主机获取其 IP 地址,而无需其他协议(如 DHCP)。DHCP以前只由IPV4使用,但是一旦IPV6出现,DHCPv6就被引入。DHCPv6使用SARR而不是DORA进行消息交换,DORA代表:

S=请求

A=广告

R=请求

R=回复

此过程允许客户端从有效的 DHCPv6 服务器获取 IPv6 地址和配置信息。

了解 DHCPv6 中继代理

DHCP 客户端使用本地广播消息从 DHCP 服务器获取 IP 地址。由于 路由器的默认行为不包括转发本地消息 ,因此如果在本地网络外部配置了 DHCP 服务器,则客户端无法从 DHCP 服务器接收 IP 地址。为了克服这个问题,DHCP中继出现了。由于它位于 DHCP 服务器和客户端之间,因此它允许 DHCP 客户端从 DHCP 服务器获取 IP 地址,该服务器未在同一局域网上配置。

基于堆的缓冲区溢出漏洞

DHCPv6 服务器中发现Microsoft漏洞源于 DHCPv6 中继转发消息处理不当所致。具体而言,负责处理中继转发消息的函数 无法验证嵌套的中继转发消息的数量 ,从而导致基于堆的缓冲区溢出。通过发送包含超过 6 个嵌套字符的构建 DHCPv32 中继转发消息,可利用此缺陷。

CVE-2023-28231 DHCP RCE 受影响的产品

  • Microsoft Windows Server 2012
  • Microsoft Windows Server 2012 R2
  • Microsoft Windows Server 2016
  • Microsoft Windows Server 2019
  • Microsoft Windows Server(服务器核心安装)2019
  • Microsoft Windows Server(服务器核心安装)2016
  • Microsoft Windows Server (Server Core installation) 2012 R2
  • Microsoft Windows Server(服务器核心安装)2012
  • Microsoft Windows Server for X64 based Systems 2008 R2 SP1
  • Microsoft Windows Server for X64 基于 X2008 的系统 (服务器核心安装) 2 SP<>
  • Microsoft Windows Server for 32 位系統 (Server Core 安裝) 2008 SP2
  • Microsoft Windows Server for 32 位系统 2008 SP2
  • Microsoft Windows Server for X64 基于 X2008 的系统 (服务器核心安装) 2 R1 SP<>
  • Microsoft Windows Server 2022
  • Microsoft Windows Server(服务器核心安装)2022
  • Microsoft Windows Server for X64 based Systems 2008 SP2

源代码分析

来自受影响的 dhcpssvc.dll版本 10.0.17763.3469 的源代码片段揭示了易受攻击的功能“ ProcessRelayForwardMessage()”。 该代码初始化缓冲区以存储中继转发消息, 但无法验证消息数 ,从而导致缓冲区溢出。趨勢科技研究團隊引用了以下代碼,引用了易受攻擊的函數 ProcessRelayForwardMessage()。

CVE-2023-28231 第 1 部分的源代码

CVE-2023-28231 第 1 部分的源代码

image.png

您可以在此处查看整个原始程序集代码。

检测 CVE-2023-28231

为了检测是否正在发生此类攻击,仪器必须监控和检查特定端口上的流量。具体而言,如果设备找到具有特定值的名为“ DHCPv6 中继转发 ”的消息,则应查看该消息中的所有 选项 。如果它找到具有另一个特定值的名为“中继消息”的选项,则应将该选项中的信息视为新消息。然后,设备需要计算遇到这些中继转发消息的频率。如果它发现超过 32 个,它应该是可疑的,并假设攻击可能正在进行中。最后,请务必注意,这些消息中的某些值以称为“网络字节顺序”的特定方式存储,因此设备必须先转换这些值,然后才能正确理解和比较它们。在分析消息时,请务必牢记这一点。

此外,检测设备必须监视UDP端口546和547上的流量,并检查UDP端口6上的DHCPv547数据包。当它看到 DHCPv6 中继转发消息(中继代理将其发送到其他中继代理或服务器以代表客户端请求 IP 地址)时,它应如上所述检查该消息中的所有选项。“新”消息将包含 DHCPv6 选项,其中包含有关客户端请求 IP 地址的信息。

POC 代码分析

CVE-2023-28231 修补程序将动态主机配置协议 (DHCP) 中特定消息结构的出现次数限制为 0x20 或更少。POC 表示 DHCPv6 协议漏洞触发条件已修改为允许未经授权和无条件执行代码。但是,在 服务器上获取静态 IPv6 地址是利用此漏洞所必需的

CVE-2023-28231 官方补丁

CVE-2023-28231 官方补丁

研究人员还发现了另一种形式的数据处理, DHCPv6广播 。在监控DHCPv6协议的数据接收入口点时,他们通过使用GPT提供的有关DHCPv6相关标志和Wireshark的信息发送信息,构建了一个DHCPv6广播的示例。他们试图使消息到达易受攻击的函数ProcessRelayForwardMessage。虽然其他种类的消息是直接接收的,但顶级处理函数 DhcpV0ProcessPacket 无法接收具有关键 DHCP 标志 0x6c 的中继转发消息。

除了满足漏洞功能本身的验证要求外,确保DHCPv6中继转发消息在“ Dhcpv6MessageLoop ”中得到正确验证至关重要。

研究人员还发现了一个代码路径,可以在几次不成功的尝试后触发补丁所在的变量。但是,如果一切都得到解决,仍在确定中。此漏洞带来了严重的安全问题,因为它可能导致对目标系统进行未经授权的控制。为了降低这种风险,组织应及时了解安全补丁,并采取主动的网络安全方法。他们应该监控其网络流量,包括与 DHCPv6 相关的数据包,并实施访问控制策略以防止未经授权的访问。

总体而言,该PoC强调了对潜在安全威胁保持警惕的必要性,并强调了彻底测试以识别复杂系统中漏洞的重要性。

CVE-2023-28231 的缓解措施

升级到最新版本的 DHCPv6,该版本已安装必要的安全更新和修补程序。

引用:


标题:CVE-2023-28231(HCP 服务器远程执行代码漏洞)
作者:qbs
地址:https://www.xiaohongyan.cn/articles/2023/08/25/1692928280419.html
声明:博客上的所内容均可免费使用,可注明归属,注明作者或网址这种行为值得赞赏。