Important CVSS 7.8 EPSS 0.00533 🔬 Patch diffed 2025-03 archive

Executive Summary

Incorrect conversion between numeric types in Windows Common Log File System Driver allows an authorized attacker to elevate privileges locally.

Overview

7.8
CVSS HIGH
Important
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Elevation of Privilege
Released Mar 11 2025
Last Updated Mar 11 2025
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.00533 — 0.42393 percentile
NVD CVSS 7.8 HIGH — matches MSRC

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
ATTACK VECTOR
Local
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
Low
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
High
AVAILABILITY
High
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 6.8

EPSS Score

0.00533
probability of exploitation in the next 30 days
0.42393 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

25 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

8 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

ghidriff + ghidra-mcp · clfs.sys (KB5053598)

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.

Pre-patch version 10.0.26100.3037
Post-patch version 10.0.26100.3470
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.
View full diff report View RCA report

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

Attack path for CVE-2025-24059 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 01 — ENTRY Standard user creates a CLFS log and drives a cache purge CreateLogFile in any user-writable directory, then any operation that purges the log's cache section. CLFS is a core kernel component present on every install; no elevation required. 02 — CONTROLLED INPUT The start and end LSNs, and the log's base LSN, are attacker-influenced LSNs are (container index, block offset) pairs drawn from the log the attacker controls. The base LSN sits at this+0x558 / +0x55c; the container size at this+0x2b8. 03 — PATH PurgeCacheSection converts the start LSN into a byte offset relative to the base local_res18 = (startIdx * containerSize + startBlockOffset) - (baseIdx * containerSize + baseBlockOffset), then masked with & 0xfffffffffffff000 and passed to CcPurgeCacheSection as the FileOffset. 04 — MISSING CHECK The guard compares LSN fields, not the resulting byte difference, and the result is never checked for sign The `base <= start` test compares container index and block offset separately; it does not guarantee the byte difference is non-negative once the container-size multiply is applied. The CLFS_LSN_INVALID arm sets -1 outright. Masking a negative value with & ~0xfff rounds it AWAY from zero, making it larger in magnitude. 05 — PRIMITIVE A negative offset - a huge unsigned value after masking - reaches CcPurgeCacheSection The patch adds an explicit `if ((longlong)offset < 0) bail`, factors the arithmetic into LsnToCacheOffset, and makes the rounding sign-aware. Gated behind Feature_2633002298, so the unchecked path still ships and runs when the flag is off.

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