在一项具有重大意义的安全分析中,Compass Security 的研究员 John Ostrowski 揭露了Microsoft Windows 系统中的两个特权提升漏洞 — CVE-2025-24076 和 CVE-2025-24994。攻击者可利用动态链接库(DLL)劫持攻击,让无特权用户获取本地系统级别的权限。
此次调查始于常规检查和自动化扫描,其中使用了 PrivescCheck 工具。该工具凸显了一个与组件对象模型(COM)服务器映像文件权限相关的潜在特权提升漏洞。具体而言,发现无特权用户有可能修改由具有提升权限的 COM 服务器加载的 DLL 文件。
此漏洞存在于 Windows 11 的 “移动设备” 功能中,该功能允许用户将手机与 Windows 电脑进行关联。分析强调,一个可由用户修改的 DLL 文件会被普通用户和高权限用户同时加载。
DLL 劫持是一种利用 Windows 应用程序加载 DLL 方式的攻击技术。攻击者通过用恶意 DLL 替换合法的 DLL,就能以加载该 DLL 的进程权限来执行任意代码。在这种情况下,由于低权限用户可以修改 DLL,而高权限用户随后会加载该 DLL,因此攻击者可借此获取管理员权限。
两个漏洞中更为危险的 CVE-2025-24076,源于一个系统进程在加载可修改的 DLL 时未进行签名验证。正如 Ostrowski 所解释的:
“由于普通用户可以修改 DLL 文件,而该文件随后会由高权限用户执行,我们就能利用这一点在本地机器上获取管理员权限。”
研究人员在利用此漏洞时面临了几个挑战。
1.时机把握:用恶意 DLL 替换合法 DLL 的时间窗口非常狭窄,大约只有 300 毫秒。为解决这个问题,他们使用了 Opportunistic Lock 在替换文件时暂停程序执行。
2.文件锁定:Windows 会防止正在使用的文件被覆盖。解决方案是拦截用户应用程序(CrossDeviceService.exe)中的关闭操作,以确保在覆盖文件之前该文件未被使用。他们使用 Microsoft 的 Detours 库来拦截 GetFileVersionInfoExW 函数,从而可靠地覆盖 DLL。
单纯替换 DLL 会导致程序崩溃。为防止这种情况,研究人员创建了一个代理 DLL,它在将函数调用转发给原始 DLL 的同时执行恶意代码。
虽然 CVE-2025-24076 可让攻击者获得系统级(SYSTEM-level)访问权限,但 CVE-2025-24994 则源于一个相关的用户级进程未能对 DLL 进行验证。这为用户间攻击创造了条件,不过与针对系统级的 CVE-2025-24076 相比,其影响要小得多。
概念验证过程包括:
1.触发 “移动设备” 的网络摄像头功能安装。
2.等待 DLL 文件关闭。
3.用恶意 DLL 替换它。
这成功展示了低权限用户如何在 Windows 11 机器上获得管理员权限。
Microsoft 已在 3 月的 “补丁星期二” 更新中修复了这些漏洞。
发表评论
您还未登录,请先登录。
登录