Important CVSS 7.8 EPSS 0.00267 🔬 Patch diffed 2026-06 archive

Executive Summary

Use after free 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
Exploitation Unlikely
MS Exploit Likelihood
Category Elevation of Privilege
Released Jun 9 2026
Last Updated Jun 9 2026
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.00267 — 0.18776 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.00267
probability of exploitation in the next 30 days
0.18776 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

8 affected products
Product KB Article Severity Impact Restart Required
Windows 11 Version 24H2 for ARM64-based Systems 5094126 (Security Update) Important Elevation of Privilege Yes
Windows 11 Version 24H2 for x64-based Systems 5094126 (Security Update) Important Elevation of Privilege Yes
Windows 11 Version 25H2 for ARM64-based Systems 5094126 (Security Update) Important Elevation of Privilege Yes
Windows 11 Version 25H2 for x64-based Systems 5094126 (Security Update) Important Elevation of Privilege Yes
Windows 11 Version 26H1 for ARM64-based Systems 5095051 (Security Update) Important Elevation of Privilege Yes
Windows 11 version 26H1 for x64-based Systems 5095051 (Security Update) Important Elevation of Privilege Yes
Windows Server 2025 5094125 (Security Update) Important Elevation of Privilege Yes
Windows Server 2025 (Server Core installation) 5094125 (Security Update) Important Elevation of Privilege Yes

Patches

3 patches
Article Type Restart
5094126 Security Update Yes
5095051 Security Update Yes
5094125 Security Update Yes

Patch Diff

ghidriff · clfs.sys (KB5094126)

Use-after-free fix in CClfsLogFcbPhysical::FlushLog's cleanup path. 3 functions modified: FlushLog itself (called-list change), its compiler-generated finally block fin$0 (gained a feature-flag-gated guard before CClfsLogFcbPhysical::ReleaseFlushRef() releases the flush reference -- likely closing a window where the reference could be released/reused before this guard), and wil_details_IsEnabledFallback (refcount/calling-list change consistent with the new feature-flag check being wired in). 2 functions added, both related to a new Feature_3035089211 flag (IsEnabledDeviceUsageNoInline / IsEnabledFallback), suggesting the fix is gated behind a gradual-rollout feature flag rather than an unconditional code change.

Pre-patch version 10.0.28000.2179 Download
Post-patch version 10.0.28000.2269 Download
Function Address Change Note
`CClfsLogFcbPhysical::FlushLog'::__l1::fin$0 14001ae90 -> 14001af50 code, length, address, called similarity 0.83
CClfsLogFcbPhysical::FlushLog 14000ef80 code, length, called similarity 0.56
wil_details_IsEnabledFallback 140011d08 -> 140011d38 refcount, address, calling similarity 1.0
View full diff report View RCA report Download PoC

Attack Path

Use-after-free in the CLFS flush cleanup path - the flush reference is released without the guard that the fix adds, and the guard is feature-flag gated

Attack path for CVE-2026-44809 Use-after-free in the CLFS flush cleanup path - the flush reference is released without the guard that the fix adds, and the guard is feature-flag gated 01 — ENTRY Standard user creates a CLFS log and drives flush activity CreateLogFile plus ordinary log writes. CLFS is a core kernel component present on every install; logs live in user-writable directories. 02 — CONTROLLED INPUT Attacker times log teardown against an in-flight flush The window is between the flush reference still being in use and CClfsLogFcbPhysical::ReleaseFlushRef running in the cleanup path. 03 — PATH CClfsLogFcbPhysical::FlushLog unwinds through its compiler-generated finally block The `FlushLog'::__l1::fin$0 frame is what actually calls ReleaseFlushRef during unwind, so the release happens on the exception/cleanup path rather than the normal one. 04 — MISSING CHECK fin$0 released the flush reference with no guard on whether it was still live The patch adds a check before ReleaseFlushRef in fin$0, closing the window where the reference could be released while another path still held or had already reused it. 05 — PRIMITIVE Freed flush reference reused - kernel pool UAF Gated behind Feature_3035089211 (IsEnabledDeviceUsageNoInline / IsEnabledFallback), so the guard is a gradual rollout rather than an unconditional fix; the unguarded path still ships in the patched binary.

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

Puneeth