CVE-2026-62728 — Windows Common Log File System Driver Elevation of Privilege Vulnerability
Executive Summary
Time-of-check time-of-use (toctou) race condition in Windows Common Log File System Driver 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 1607 for 32-bit Systems | 5120418 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5120418 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5120238 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5120238 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5120249 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5120249 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5120249 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5120249 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5120249 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5120249 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5120240 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5120240 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5120994 (Security Hotpatch Update) 5121003 (Security Update) Important Elevation of Privilege 5101650 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.9106 10.0.26100.9168 Yes None Windows 11 Version 24H2 for x64-based Systems 5121003 (Security Update) 5120994 (Security Hotpatch Update) Important Elevation of Privilege 5101650 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.9168 10.0.26000.9106 Yes None Windows 11 Version 25H2 for ARM64-based Systems 5121003 (Security Update) 5120994 (Security Hotpatch Update) Important Elevation of Privilege 5101650 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.9168 10.0.26100.9106 Yes None Windows 11 Version 25H2 for x64-based Systems 5121003 (Security Update) 5120994 (Security Hotpatch Update) Important Elevation of Privilege 5101650 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.9168 10.0.26100.9106 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5121000 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5121000 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 | 5120386 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5120386 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5120385 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5120385 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5120418 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5120418 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5120238 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5120238 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5120418 |
Security Update | Yes |
5120238 |
Security Update | Yes |
5120249 |
Security Update | Yes |
5120240 |
Security Update | Yes |
5121000 |
Security Update | Yes |
5120386 |
Monthly Rollup | Yes |
5120385 |
Monthly Rollup | Yes |
Patch Diff
Double-fetch (CWE-367) of the log block sector count in clfs.sys ClfsValidateBlock. The bounds check param_3 < count << 9 used one read of *(ushort *)(param_2 + 4), but the sector-walk loop re-read the same attacker-controlled header field on every iteration for its termination condition. If the field changes between check and walk, the loop indexes param_2[i * 0x200 + 0x1fe] past the validated extent. Reached from CreateLogFile -> ReadLogBlock -> CompleteAsyncReadBlock -> ValidateLogBlock -> ClfsValidateBlock; the async completion path is what makes a mid-validation mutation conceivable. Patch captures the count once into a local and uses it for both the bound and the loop, and refactors per-sector flag checks into ClfsValidateSector. Gated behind Feature_344697147, so the double-fetch path still ships and runs when the flag is off. ReadLogBlock also changed here, but gated by the SAME Feature_344697147 - part of this fix, not a re-fix of CVE-2026-40407 (whose Feature_748929339 is absent from the 26100 branch). Investigated and ruled out as a variant pair.
| Function | Address | Change | Note |
|---|---|---|---|
ClfsValidateBlock |
|
code (double fetch removed, gated on Feature_344697147) | Pre-patch loop condition re-read *(ushort *)(param_2 + 4) each iteration while the bounds check used an earlier read of the same field. Patch captures it once into uVar2 and uses that for both. Both branches ship in 10.0.26100.9168. |
CClfsLogFcbPhysical::ValidateLogBlock |
140008bb0 |
code | Caller. Carries a 128-bit overflow guard on 0x200 * sectorCount that cannot fire (ushort operand), and passes the expected sector signature as (uchar)param_2[2] - read from the same header being validated, so it is a torn-write detector rather than a security check. |
CClfsLogFcbPhysical::CompleteAsyncReadBlock |
|
code | Async completion path that walks a multi-block buffer and calls ValidateLogBlock per block. The asynchronous context is what makes a mid-validation mutation of the header plausible. |
CClfsLogFcbPhysical::ReadLogBlock |
|
code (part of the same Feature_344697147 fix) | Gated by Feature_344697147 at 14000f6ba and 14000f717 - i.e. part of THIS fix, not a re-fix of CVE-2026-40407. Feature_748929339 (the May CVE-2026-40407 flag) is absent from clfs.sys 10.0.26100.9168 entirely; that fix lives on the 10.0.28000.x Server branch. Same function, different branches, different defects - not a variant pair. |
CClfsLogFcbPhysical::IsEof |
|
code | Participates in the same block read path. |
Feature_344697147__private_IsEnabledDeviceUsageNoInline / _IsEnabledFallback |
|
added -- CFR gate | Controlled Feature Rollout flag selecting between the fixed and original code. Patch state cannot be inferred from file version. |
Attack Path
Double-fetch of the block sector count: validation and the sector walk read the same attacker-controlled header field separately
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
Daejin Lee
sweetchip
Kentaro Kawane with GMO Cybersecurity by Ierae, Inc.