安全研究人员发布了针对 Windows 电话服务中已修补的特权提升漏洞(编号为 CVE-2024-26230)的技术细节和概念验证 (PoC) 漏洞利用。此漏洞的 CVSS 评分为 7.8,存在重大风险,允许攻击者通过电话服务中的释放后使用漏洞在受影响的系统上获得 SYSTEM 权限。
Windows 电话服务是一项基于 RPC 的服务,虽然默认情况下不运行,但可以通过使用标准用户权限调用 StartServiceW API 来激活。此漏洞源于此服务处理具有魔法值“GOLD”的对象的方式,该魔法值是服务全局句柄表中使用的唯一标识符。
void __fastcall GetUIDllName(__int64 a1, int *a2, unsigned int a3, __int64 a4, _DWORD *a5)
{
[...]
if ( object )
{
*object = 0x474F4C44; // =====> [a]
v38 = *(_QWORD *)(contexthandle + 184);
*((_QWORD *)object + 10) = v38;
if ( v38 )
*(_QWORD *)(v38 + 72) = object;
*(_QWORD *)(contexthandle + 184) = object; // =======> [b]
a2[8] = object[22];
}
[...]
}
该服务的接口由三个主要功能组成:
-
ClientAttach:创建上下文句柄。
-
ClientRequest:使用指定的上下文句柄处理请求。
-
ClientDetach:释放上下文句柄。
该漏洞的根源在于ClientRequest方法,其中名为“gaFuncs”的全局变量将请求路由到特定的调度函数。这些函数处理各种对象,这些对象由NewObject函数创建并插入到全局句柄表中。
然而,在处理具有“GOLD”魔法值的对象时,出现了一个严重的疏忽。电话服务在释放“GOLD”对象之前未能检查上下文句柄是否拥有该对象。可以通过创建两个上下文句柄来利用此漏洞:一个用于保存“GOLD”对象,另一个用于调用 FreeDiagInstance调度函数,该函数释放“GOLD”对象。因此,原始上下文句柄保留指向释放对象的悬空指针,当服务稍后尝试引用它时,会导致释放后使用漏洞。
该漏洞的利用程序由 Cyber Kunlun 的 k0shl开发,他使用了一种新技术来绕过 Windows 11 上的 eXtended Flow Guard (XFG) 缓解措施,这是一项旨在防止此类攻击的安全功能。在 k0shl 进行详细分析之后,另一位研究人员 Wa1nut4 在 GitHub 上发布了针对 CVE-2024-26230 的概念验证 (PoC) 漏洞利用代码,使该漏洞可以被攻击者广泛利用。
该漏洞通过操纵 RPC 客户端的输入缓冲区来实现,攻击者可以完全控制该缓冲区。当电话服务试图通过悬垂指针引用虚拟函数时,这种控制最终会导致电话服务崩溃。
成功利用此漏洞将产生严重后果,使攻击者能够完全控制受感染的系统。利用 SYSTEM 权限,恶意行为者可以执行任意代码、安装恶意软件、窃取敏感数据并建立持久后门。
微软在其 2024 年 4 月的安全更新中解决了此漏洞。强烈建议系统管理员和用户立即应用这些更新以保护他们的系统。
https://github.com/Wa1nut4/CVE-2024-26230
原文始发于微信公众号(Ots安全):Windows 特权提升漏洞 CVE-2024-26230 的 PoC 漏洞利用版本
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论