文章总结: CVE-2026-20817是Windows错误报告服务中的本地权限提升漏洞。由于WER服务在处理ALPC消息时缺少授权检查,导致低权限用户可利用回调机制获取除SeTcbPrivilege外的SYSTEM权限令牌,进而执行任意代码。文章详细分析了漏洞原理、调用链及利用过程,指出补丁通过禁用功能标志修复。建议及时更新补丁并监控异常WER进程行为。 综合评分: 91 文章分类: 漏洞分析,漏洞预警,内网渗透
CVE-2026-20817 – Windows错误报告(WER) ALPC权限提升漏洞深度分析
oxfemale oxfemale
赛博知识驿站
2026年2月24日 16:02 美国
漏洞概述
CVE-2026-20817是Windows错误报告(WER)服务中的本地权限提升漏洞。该漏洞允许经过身份验证的低权限用户通过向WER服务发送特制的ALPC消息,以SYSTEM权限执行任意代码。
核心信息
- • CVE编号: CVE-2026-20817
- • 影响组件:
wersvc.dll(Windows错误报告服务) - • 漏洞类型: 权限提升(Elevation of Privilege)
- • CWE分类: CWE-280 — 权限不足处理不当
- • CVSS评分: 7.8 (高危)
- • 修复时间: 2026年1月安全更新
- • 攻击向量: 本地(ALPC)
- • 所需权限: 低权限(已认证用户)
技术原理
漏洞本质
WER服务作为NT AUTHORITY\SYSTEM运行,通过ALPC端口(\WindowsErrorReportingService)与客户端通信。漏洞的根本原因是在处理触发特权进程创建的请求时缺少授权检查。
低权限用户可以发送精心构造的请求,导致创建一个拥有SYSTEM级别令牌(除SeTcbPrivilege外)的进程,同时完全控制命令行参数。
完整调用链
CWerService::SvcElevatedLaunch
↓ (无授权检查)
ElevatedProcessStart
↓ (提取命令行)
CreateElevatedProcessAsUser
├─ UserTokenUtility::GetProcessToken
└─ CreateProcessAsUserW
最终结果: 创建一个具有特权令牌和攻击者控制参数的进程。
漏洞分析详解
1. SvcElevatedLaunch – 授权缺失
该函数的问题流程:
- 1. 接收ALPC消息
- 2. 打开客户端进程句柄
- 3. 未验证客户端信任级别
- 4. 直接调用
ElevatedProcessStart
任何用户都可以到达特权执行路径,这是漏洞的起点。
2. ElevatedProcessStart – 命令行处理
处理过程:
- 1. 客户端创建共享内存
- 2. 将命令行写入共享内存
- 3. WER服务复制句柄并映射内存
- 4. 未经验证直接复制数据
- 5. 提取的字符串用于创建进程
3. UserTokenUtility::GetProcessToken – 核心漏洞
关键逻辑(这是最危险的部分):
- 1. 服务尝试获取提升的用户令牌
- 2. 对于普通用户,此操作失败
- 3. 触发后备路径:
- • WER打开自己的SYSTEM令牌
- • 创建受限令牌
- • 仅移除
SeTcbPrivilege
- 4. 结果: 攻击者获得几乎等同于SYSTEM的令牌
这是典型的”安全设计缺陷”:
如果无法生成合适的调用者令牌,应该拒绝操作 — 而不是切换到服务令牌。
4. CreateElevatedProcessAsUser – 最终执行
执行特征:
- • 可执行路径固定:
WerFault.exe或WerMgr.exe - • 命令行参数: 完全由攻击者控制(最多约520字节)
- • 进程创建: 通过
CreateProcessAsUserW()使用类SYSTEM令牌
漏洞利用流程
攻击步骤
1. 创建共享内存,写入恶意命令行
↓
2. 连接到WER ALPC端口
↓
3. 发送方法0x0D的ALPC消息,包含:
- 客户端进程ID
- 共享内存句柄
- 命令行长度
↓
4. WER服务复制句柄
↓
5. 使用提供的命令行启动WerFault.exe
↓
6. 进程以SYSTEM权限运行
获得的权限
生成的WerFault.exe进程以包含以下特权的SYSTEM令牌运行:
| 特权 | 描述 | 影响 |
| — | — | — |
| SeDebugPrivilege | 调试任何进程 | 可以注入任意进程 |
| SeImpersonatePrivilege | 模拟任何用户 | 可以完全控制系统 |
| SeBackupPrivilege | 备份文件和目录 | 绕过文件权限 |
| 其他标准SYSTEM特权 | 完整系统访问 | 完全系统控制 |
注意: 令牌不包含SeTcbPrivilege(作为操作系统一部分),但这不会显著降低威胁级别。
PoC代码分析
关键实现要点
// 1. 创建共享内存(520字节)
HANDLE hSharedMemory = CreateFileMapping(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
0x208, // 520字节
NULL
);
// 2. 映射视图并写入命令
void* pSharedView = MapViewOfFile(hSharedMemory, FILE_MAP_WRITE, 0, 0, 0x208);
std::wstring command = L"C:\\Windows\\System32\\cmd.exe /c whoami > C:\\poc_wer.txt & calc.exe";
wcscpy_s((wchar_t*)pSharedView, 0x208 / sizeof(wchar_t), command.c_str());
// 3. 准备ALPC消息
struct WER_ALPC_MESSAGE {
DWORD messageType;
DWORD method; // 0x0D
DWORD processId; // 当前进程ID
DWORD sharedMemoryHandle; // 共享内存句柄
DWORD commandLineLength; // 命令行长度
WCHAR commandLine[260]; // 后备缓冲区
};
// 4. 发送消息到ALPC端口
// 实际利用需要使用ntdll.dll中的未文档化API:
// - NtAlpcConnectPort
// - NtAlpcSendWaitReceivePort
技术实现细节
ALPC交互复杂性:
- • 直接使用ALPC需要
ntdll.dll中的未文档化结构和系统调用 - • 真实利用需要实现这些Native API调用
句柄操作:
- • 漏洞利用了WER服务可以使用
DuplicateHandle()复制低权限进程创建的共享内存句柄的事实
SYSTEM令牌威力:
- • 即使没有
SeTcbPrivilege,保留的SeDebugPrivilege和SeImpersonatePrivilege仍然允许完全系统入侵
补丁分析
修复前(易受攻击的行为)
CWerService::SvcElevatedLaunch()
{
// 无授权检查
// 直接继续处理
}
修复后
微软没有引入直接的授权检查。
相反,启用了一个功能标志来完全禁用易受攻击的功能:
if (featureFlag_DisableElevatedLaunch) {
return E_NOTIMPL; // 或 STATUS_NOT_IMPLEMENTED
}
这强烈表明:
- • 此路径可能仅供内部使用
- • 没有安全的方法将其暴露给任意客户端而不进行重新设计
- • 最快的安全响应是”关闭它”
检测与防御
1. 监控异常WER进程
检测要点:
- • 具有不寻常命令行的
WerFault.exe/WerMgr.exe - • 在奇怪时间启动的WER二进制文件(无崩溃上下文)
- • 从意外上下文启动的WER(或与正常崩溃流程不符的上下文)
2. 令牌/特权”形状”异常
特征模式: SYSTEM令牌减去SeTcbPrivilege
这是一个独特的模式。如果EDR可以记录令牌特权,应警告:
- • 缺少
SeTcbPrivilege但保留其他强大特权的SYSTEM令牌 - • 以SYSTEM运行但特权集与基线不一致的WER二进制文件
3. ALPC + 句柄复制 + 节映射遥测
行为链检测:
ALPC请求
↓
DuplicateHandle
↓
MapViewOfFile(小区域,0x208)
↓
CreateProcessAsUserW(在wersvc.dll内)
如果可以收集系统调用/ETW样式跟踪,在wersvc.dll内部的节映射→进程创建关联是强烈的行为链。
4. 防御建议
短期:
- • 应用2026年1月安全更新
- • 监控WER进程异常
长期:
- • 审计类似的SYSTEM代理路径
- • 寻找其他缺少授权检查的ALPC端点
- • 实施最小权限原则
影响范围
受影响系统
- • Windows 10(2026年1月前的所有版本)
- • Windows 11(2026年1月前的所有版本)
- • Windows Server 2019(2026年1月前)
- • Windows Server 2022(2026年1月前)
CWE-280解释
CWE-280指应用程序出现以下情况:
- • 未能验证足够的权限
- • 或错误处理授权逻辑
在本案例中:
- • 非特权用户可以请求SYSTEM功能
- • 服务不验证信任级别
- • 执行受限操作
- • 低完整性用户接收高特权令牌
总结
CVE-2026-20817是一个典型的”SYSTEM代理 + 缺少授权”类型的本地权限提升漏洞。其核心问题在于:
- 1. 信任边界失效: 特权服务未验证调用者身份
- 2. 后备逻辑缺陷: 在无法获取用户令牌时切换到服务令牌
- 3. 不充分的限制: 仅移除
SeTcbPrivilege不足以防止滥用
对于防御者而言,这是一个重要的案例研究,突出了在特权服务设计中实施适当授权检查的关键重要性。类似的”内部专用”代理路径可能存在于其他服务和ALPC端点中,具有类似的信任错误。
免责声明: 本分析仅供教育和研究目的。仅在您拥有或有明确许可测试的系统上使用。未经授权的使用可能违反法律法规。
GitHub PoC: https://github.com/oxfemale/CVE-2026-20817 原文: https://core-jmp.org/?p=280
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博知识驿站 oxfemale oxfemale《CVE-2026-20817 – Windows错误报告(WER) ALPC权限提升漏洞深度分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论