CVE-2026-33098 — Windows Container Isolation FS Filter Driver Elevation of Privilege Vulnerability
Executive Summary
Use after free in Windows Container Isolation FS Filter Driver allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:L/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 1607 for 32-bit Systems | 5082198 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5082198 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5082123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5082123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5082200 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5082200 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5082200 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5082200 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5082200 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5082200 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5082052 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5082052 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5083769 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5083769 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5083769 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5083769 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 26H1 for ARM64-based Systems | 5083768 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5083768 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5082198 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5082198 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5082123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5082123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 | 5082142 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 (Server Core installation) | 5082142 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022, 23H2 Edition (Server Core installation) | 5082060 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 | 5082063 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 (Server Core installation) | 5082063 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5082198 |
Security Update | Yes |
5082123 |
Security Update | Yes |
5082200 |
Security Update | Yes |
5082052 |
Security Update | Yes |
5083769 |
Security Update | Yes |
5083768 |
Security Update | Yes |
5082142 |
Security Update | Yes |
5082060 |
Security Update | Yes |
5082063 |
Security Update | Yes |
Patch Diff
Reference-count underflow use-after-free (CWE-416) via cleanup asymmetry in the Windows Container Isolation FS minifilter wcifs.sys WcScheduleExpansionWorkItem. The function allocates a work item (FltAllocateGenericWorkItem), then ObfReferenceObject(target) +1, then FltQueueGenericWorkItem. Two failure paths shared ONE cleanup block (LABEL_10/LABEL_14) that unconditionally ObfDereferenceObject'd: on queue-insert failure the ref was already taken (symmetric), but on ALLOCATION failure the goto reaches the same cleanup before ObfReferenceObject ran -> a dereference with no matching reference, so the object's refcount ends 1 lower than actual. A container doing heavy file I/O can exhaust NonPagedPoolNx to make the allocation fail repeatedly, decrementing until the count hits 0 while other paths still hold pointers -> object freed -> kernel UAF -> EoP. Diff of wcifs.sys 10.0.26100.7920 -> .8246 (Apr 14 2026, KB5083769) confirms the fix: gated behind CFR flag Feature_1773654331, a boolean flag (init false) is set true only immediately after ObfReferenceObject, and the shared-cleanup ObfDereferenceObject is guarded by `!feature || flag` so it runs only when a ref was actually taken; control flow restructured from goto-merge to if/else with early return on success. Note: our diff shows Feature_1773654331, differing from the circulated screenshots' Feature_2042089787 (build/arch difference); the ref-tracking-flag guard is identical.
| Function | Address | Change | Note |
|---|---|---|---|
WcScheduleExpansionWorkItem |
code change |
code (ref-tracking flag guards shared-cleanup deref, CFR-gated) | Pre: alloc-fail -> goto shared cleanup -> unconditional ObfDereferenceObject with no matching ObfReferenceObject -> refcount underflow. Post (Feature_1773654331 enabled): bVar13=false initially, set true right after ObfReferenceObject; cleanup does ObfDereferenceObject only if `!feature || bVar13`; goto-merge restructured to if/else + early return on success. |
Feature_1773654331 |
gate |
added (CFR gate) | CFR flag gating the guarded dereference; the original unconditional deref still ships when disabled. |
Attack Path
An allocation-failure path dereferences a wcifs object it never referenced, underflowing the refcount to a free-while-in-use
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
Anonymous