CVE-2025-24059 — Windows Common Log File System Driver Elevation of Privilege Vulnerability
Executive Summary
Incorrect conversion between numeric types in Windows Common Log File System 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 for 32-bit Systems | 5053618 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 for x64-based Systems | 5053618 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for 32-bit Systems | 5053594 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5053594 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5053596 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5053596 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5053606 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5053606 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5053606 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5053606 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5053606 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5053606 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for ARM64-based Systems | 5053602 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for x64-based Systems | 5053602 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5053602 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5053602 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5053598 (Security Update) 5053636 (SecurityHotpatchUpdate) Important Elevation of Privilege 5051987 5052105 Base: 7.8 Temporal: 6.8 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 10.0.26100.3476 10.0.26100.3403 Yes None Windows 11 Version 24H2 for x64-based Systems 5053598 (Security Update) 5053636 (SecurityHotpatchUpdate) Important Elevation of Privilege 5051987 5052105 Base: 7.8 Temporal: 6.8 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 10.0.26100.3476 10.0.26100.3403 Yes None Windows Server 2008 for 32-bit Systems Service Pack 2 5053888 (Monthly Rollup) 5053995 (Security Only) Important Elevation of Privilege 5052038 Base: 7.8 Temporal: 6.8 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 6.0.6003.23168 Yes None Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) 5053888 (Monthly Rollup) 5053995 (Security Only) Important Elevation of Privilege 5052038 Base: 7.8 Temporal: 6.8 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 6.0.6003.23168 Yes None Windows Server 2008 for x64-based Systems Service Pack 2 5053888 (Monthly Rollup) 5053995 (Security Only) Important Elevation of Privilege 5052038 Base: 7.8 Temporal: 6.8 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 6.0.6003.23168 Yes None Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation) 5053888 (Monthly Rollup) 5053995 (Security Only) Important Elevation of Privilege 5052038 Base: 7.8 Temporal: 6.8 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 6.0.6003.23168 Yes None Windows Server 2008 R2 for x64-based Systems Service Pack 1 5053620 (Monthly Rollup) 5053627 (Security Only) Important Elevation of Privilege 5052016 Base: 7.8 Temporal: 6.8 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 6.1.7601.27618 Yes None Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) 5053620 (Monthly Rollup) 5053627 (Security Only) Important Elevation of Privilege 5052016 Base: 7.8 Temporal: 6.8 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 6.1.7601.27618 Yes None Windows Server 2012 | 5053886 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5053886 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5053887 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5053887 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5053594 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5053594 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5053596 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5053596 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 5053603 (Security Update) 5053638 (SecurityHotpatchUpdate) Important Elevation of Privilege 5051979 5052106 Base: 7.8 Temporal: 6.8 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 10.0.20348.3328 10.0.20348.3270 Yes None Windows Server 2022 (Server Core installation) 5053603 (Security Update) 5053638 (SecurityHotpatchUpdate) Important Elevation of Privilege 5051979 5052106 Base: 7.8 Temporal: 6.8 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 10.0.20348.3328 10.0.20348.3270 Yes None Windows Server 2022, 23H2 Edition (Server Core installation) | 5053599 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5053618 |
Security Update | Yes |
5053594 |
Security Update | Yes |
5053596 |
Security Update | Yes |
5053606 |
Security Update | Yes |
5053602 |
Security Update | Yes |
5053886 |
Monthly Rollup | Yes |
5053887 |
Monthly Rollup | Yes |
5053599 |
Security Update | Yes |
Patch Diff
Negative cache offset reaches CcPurgeCacheSection in clfs.sys CClfsLogFcbPhysical::PurgeCacheSection. Pre-patch the FileOffset was computed inline as a SIGNED subtraction of two LSN-derived byte offsets - (startIdx*containerSize + startBlockOffset) - (baseIdx*containerSize + baseBlockOffset) - guarded only by a field-wise comparison of the container index and block offset, which does not guarantee the resulting byte difference is non-negative once the container-size multiply is applied. The CLFS_LSN_INVALID arm explicitly set -1. The result was then masked with & 0xfffffffffffff000, which for a negative value rounds AWAY from zero, and passed to CcPurgeCacheSection as the file offset. The patch factors the computation into LsnToCacheOffset(), adds an explicit `if ((longlong)offset < 0) bail` check, and makes the page rounding sign-aware (offset + ((offset >> 63) & 0xfff)) before the mask. Gated behind Feature_2633002298 - the unchecked path still ships and runs when the flag is disabled. Verified by Ghidra MCP decompilation of both builds.
| Function | Address | Change | Note |
|---|---|---|---|
CClfsLogFcbPhysical::PurgeCacheSection |
|
code (negative-offset check added, gated on Feature_2633002298) | PRE: `local_res18 = (idxA*size + offA) - (idxB*size + offB); local_res18 &= ~0xfff;` with the CLFS_LSN_INVALID arm setting -1. POST (flag-enabled): `_Var5 = LsnToCacheOffset(this, &local_48); if ((longlong)_Var5 < 0) goto bail; _Var5 += ((_Var5 >> 63) & 0xfff); local_res18 = _Var5 & ~0xfff;` Both the sign check and the sign-aware rounding are new. Also note the post-patch call is CcPurgeCacheSection(this+0x288, puVar8, 0, 0) - the decompiler's extra pre-patch args were spurious. |
CClfsRequest::WriteRestart |
|
code (inline StateFlags set replaced by CClfsLogCcb::MarkAccessed call) | Verified both builds by Ghidra MCP. The ONLY semantic change is at the tail: pre-patch `ccb->StateFlags(+0x1c) |= 8` inline, post-patch `CClfsLogCcb::MarkAccessed(ccb)`. The reservation guard (`ccb->ReservedLogSpace(+0x68) + userValue < 0` -> 0xc01a0010) and the increment (`ReservedLogSpace += amountReserved`) are UNCHANGED. Significant because CVE-2025-62470 (2025-12) then modifies MarkAccessed, WriteRestart and ReserveAndAppendLog together - same 24H2 branch, so a follow-on relationship cannot be explained by SKU. |
LsnToCacheOffset |
|
refactor target | The offset computation is factored out of PurgeCacheSection into this helper by the patch. |
Feature_2633002298__private_IsEnabledDeviceUsageNoInline / _IsEnabledFallback |
|
added -- CFR gate | Both the checked and unchecked paths ship in 10.0.26100.3470. |
Attack Path
A signed subtraction of two log-sequence-number offsets yields a negative cache offset, which is masked into a huge unsigned value and handed to CcPurgeCacheSection
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