SonicWall Capture Labs 威胁研究团队发布了对 CVE-2024-38812 的深入分析,CVE-2024-38812 是在 VMware vCenter Server 中发现的一个严重堆溢出漏洞。该漏洞影响 VMware vCenter Server 版本 8.0 U3a,并已在版本 8.0 U3d 中修补,解决了 DCERPC 协议中可能允许远程代码执行 (RCE) 的问题。
CVE-2024-38812 被归类为 CWE-122(基于堆的缓冲区溢出),攻击者可利用 vCenter Server 的 DCERPC 协议实现中的不当内存处理。通过发送特制的网络数据包,攻击者可以覆盖堆中的内存,从而可能导致任意代码执行,甚至完全控制整个系统。该漏洞的 CVSS 得分为 9.8 分,对于使用未打补丁的 VMware vCenter 版本的企业来说,这无疑是一个高风险漏洞。
rpc_ss_ndr_contiguous_elt() | 图片: SonicWall
CVE-2024-38812 的根本原因在于 rpc_ss_ndr_contiguous_elt() 函数处理 range_list->lower 值的方式,这是一个由用户输入控制的参数。攻击者可通过发送特制的网络数据包来操纵内存偏移量,从而利用该漏洞。当 range_list 值被不恰当地用于修改内存基地址时,就会出现该漏洞。这可能导致任意内存访问,使攻击者有可能覆盖关键系统内存,从而导致远程代码执行。
用户控制,range_product 和 range_list->lower | | 图像: SonicWall
在 SonicWall Capture Labs 威胁研究团队的详细分析中,他们解释说:“一旦攻击者控制了 range_list->lower 值,他们就有效地控制了 p_array_addr 指向的内存地址。”这就使攻击者对内存分配过程有了很大的控制权,增加了利用漏洞的可能性。
要触发这个堆溢出漏洞,攻击者必须精心设计输入参数,如参数计数和类型索引,它们控制着 RPC 过程中的内存分配方式。通过操纵这些值,攻击者可以使内存分配超出正常范围。分析强调说:“如果偏移量足够大,就可以将数组地址推入攻击者可以控制的内存区域。”
这个漏洞特别危险,因为攻击者可以控制目标内存地址和被复制的数据量。例如,在rpc_ss_ndr_unmar_by_copying()函数中,要复制的数据长度是由攻击者控制的,这就使得恶意行为者有可能使用伪造的输入覆盖关键内存区域。
VMware 发布的 vCenter Server 8.0 U3d 版本解决了这一问题,该版本引入了更严格的检查以防止无界指针运算。根据 SonicWall 的分析,”该补丁……引入了一个重要的修复,重点是如何处理涉及范围列表的计算,特别是在 range_list->lower 的验证中。” 这些更改通过确保内存指针保持在安全范围内,有效防止了攻击者利用这一漏洞。
强烈建议使用 vCenter Server 8.0U3a 或更早版本的企业升级到 8.0 U3d 版本,以降低被利用的风险。