CVE-2026-21242 — Windows Subsystem for Linux Elevation of Privilege Vulnerability
Executive Summary
Use after free in Windows Subsystem for Linux allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C
EPSS Score
Affected Products
| Product | KB Article | Severity | Impact | Restart Required |
|---|---|---|---|---|
| Windows 10 Version 21H2 for ARM64-based Systems | 5075912 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5075912 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5075912 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5075912 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5075941 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5075941 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5077181 (Security Update) 5077212 (Security Hotpatch Update) Important Elevation of Privilege 5073379 Base: 7.0 Temporal: 6.1 Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.7840 10.0.26100.7781 Yes None Windows 11 Version 24H2 for x64-based Systems 5077212 (Security Hotpatch Update) 5077181 (Security Update) Important Elevation of Privilege 5074109 Base: 7.0 Temporal: 6.1 Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.7781 10.0.26100.7840 Yes None Windows 11 Version 25H2 for ARM64-based Systems 5077181 (Security Update) 5077212 (Security Hotpatch Update) Important Elevation of Privilege 5074109 Base: 7.0 Temporal: 6.1 Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.7840 10.0.26200.7781 Yes None Windows 11 Version 25H2 for x64-based Systems 5077181 (Security Update) 5077212 (Security Hotpatch Update) Important Elevation of Privilege 5074109 Base: 7.0 Temporal: 6.1 Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.7840 10.0.26200.7781 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5077179 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5077179 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 5075906 (Security Update) 5075943 (Security Hotpatch Update) Important Elevation of Privilege 5073457 Base: 7.0 Temporal: 6.1 Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.20348.4773 10.0.20348.4711 Yes None Windows Server 2022 (Server Core installation) 5075906 (Security Update) 5075943 (Security Hotpatch Update) Important Elevation of Privilege 5073457 Base: 7.0 Temporal: 6.1 Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.20348.4773 10.0.20348.4711 Yes None Windows Server 2022, 23H2 Edition (Server Core installation) | 5075897 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5075912 |
Security Update | Yes |
5075941 |
Security Update | Yes |
5077179 |
Security Update | Yes |
5075897 |
Security Update | Yes |
Patch Diff
Use-after-free (CWE-416) in the Windows 9P/WSL redirector p9rdr.sys UserCallback timeout path, local EoP. Opening \Device\P9Rdr\wsl.localhost\... drives p9fs::P9CreateVNetRoot -> Device::CreateNetRootAndVNetRoot -> UserCallbackManager::CallUserCallback -> NotifyUserProcess, which registers a new p9fs::UserCallback and calls p9fs::UserCallback::SetCallbackTimeout to arm a timer. PRE: SetCallbackTimeout calls ExAllocateTimer (which does ExAllocatePool2(0xA0,'mTxE')); if an attacker exhausts pool so ExAllocateTimer fails, SetCallbackTimeout returns STATUS_INSUFFICIENT_RESOURCES (0xC000009A) up through NotifyUserProcess/CallUserCallback/Device::CallUserCallback, and CreateNetRootAndVNetRoot then calls rdbss!RxFinishPhysicalNetRootConstruction to free the NetRootConstructionContext while the just-registered callback still references the create RxContext/NetRoot - a use-after-free. Diff of p9rdr.sys 10.0.26100.7824 -> .8328 (Feb 10 2026, KB5077181) confirms the fix: gated behind CFR flags Feature_1655910715 / Feature_3906416953, the UserCallback registration/timeout is reworked so the callback is reference-counted and released under the manager lock (UserCallback::ReleaseReference in FindOrInsertCallbackWithLockHeld) and SetCallbackTimeout no longer leaves a dangling callback on the timer-allocation failure path, keeping the callback and the create context lifetimes in sync.
| Function | Address | Change | Note |
|---|---|---|---|
p9fs::UserCallback::SetCallbackTimeout |
code change |
code (timer-allocation failure path reworked, CFR-gated) | Pre: inline ExAllocateTimer(TimerCallback,this,0) under Feature_1655910715; on ExAllocateTimer failure returns 0xC000009A, and the caller CreateNetRootAndVNetRoot frees NetRootConstructionContext while the registered callback still references the create context -> UAF. Post: timer lifecycle reworked; the ExAllocateTimer/DeleteTimer inline block is removed and the callback is reference-released, so a timer-alloc failure no longer strands a callback over a freed context. |
p9fs::UserCallbackManager::FindOrInsertCallbackWithLockHeld |
code change |
code (reference release under lock, CFR-gated) | Now calls p9fs::UserCallback::ReleaseReference on the callback under the manager lock so the callback cannot outlive its create context. |
p9fs::UserCallbackManager::RegisterUserCallback |
code change |
code (reference management, CFR-gated) | Reworked registration path participating in the reference-counted callback lifetime. |
Feature_1655910715 / Feature_3906416953 |
gate |
added (CFR gate) | CFR flags gating the reference-counted callback/timeout lifetime; the original path still ships when disabled. |
Attack Path
A timer-allocation failure on the WSL create path frees the NetRoot construction context while a registered user callback still references it
Derived from the patch delta: the checks added by the vendor identify which fields crossed a trust boundary unvalidated. Reachability and privilege are taken from the call chain in the RCA report.
Known Exploits
Acknowledgments
ChenJian with Sea Security Orca Team