CVE-2024-38215 — Windows Cloud Files Mini Filter Driver Elevation of Privilege Vulnerability
Executive Summary
None
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 1809 for 32-bit Systems | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 21H2 for ARM64-based Systems | 5041592 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 21H2 for x64-based Systems | 5041592 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for ARM64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for x64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5041571 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5041571 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 | 5041160 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 (Server Core installation) | 5041160 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022, 23H2 Edition (Server Core installation) | 5041573 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5041578 |
Security Update | Yes |
5041580 |
Security Update | Yes |
5041592 |
Security Update | Yes |
5041585 |
Security Update | Yes |
5041571 |
Security Update | Yes |
5041160 |
Security Update | Yes |
5041573 |
Security Update | Yes |
Patch Diff
Integer overflow (CWE-190) in the Windows Cloud Files minifilter cldflt.sys hydration-restart / placeholder-create path, local EoP to SYSTEM. cldflt.sys processes messages from the user-mode Cloud Files provider over its communication port; CldiPortProcessRestartHydration parses offset/count fields out of the provider message, and HsmpOpCreatePlaceholders builds placeholder buffers from user input. PRE: the offset/count fields were used to size/index buffers without overflow checks, so a crafted message could wrap an offset+count computation (integer overflow) and drive out-of-bounds access in the kernel minifilter. Diff of cldflt.sys 10.0.26100.1301 -> .1455 (Aug 13 2024, KB5041571) confirms the fix: gated behind CFR flags Feature_2175866168 / Feature_1314816318, CldiPortProcessRestartHydration adds bounds and wrap-detection checks on the message offset/count fields (e.g. requiring count offsets to be >= header size + entry_count*8+0x10, and detecting sum wraps via 'uVar1 = base + count; if (uVar1 < count) reject', plus 'uVar2 < uVar1' upper bounds), and HsmpOpCreatePlaceholders is hardened (IoAllocateMdl + ProbeForRead around the user buffer, bounded ExAllocatePool2) so the overflow can no longer occur.
| Function | Address | Change | Note |
|---|---|---|---|
CldiPortProcessRestartHydration |
code change |
code (offset/count overflow + bounds checks added, CFR-gated) | Post (Feature_2175866168): validates the provider-message offset/count fields - lower bounds (>= entry_count*8+0x10), sum-wrap detection (base+count < count -> reject) and upper bounds (total <= buffer) before use. |
HsmpOpCreatePlaceholders |
code change |
code (user-buffer probing/bounded alloc) | Post: IoAllocateMdl(param_4,param_5) + ProbeForRead(param_4,param_5) around the user buffer and bounded ExAllocatePool2(0x4000) - hardening the placeholder-creation input handling. |
HsmFltProcessConvertPlaceholder / HsmFltProcessUpdatePlaceholder / CldiPortProcessAckNotification |
code change |
code (related placeholder/port paths updated) | Updated alongside under the same gate. |
Feature_2175866168 / Feature_1314816318 |
gate |
added (CFR gate) | CFR flags gating the overflow/bounds validation; the original unchecked path still ships when disabled. |
Attack Path
A crafted Cloud Files provider message wraps an offset+count computation, driving OOB access
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.
Exploits & PoC
Detection Rules
Acknowledgments
Ezrakiez with MatrixCup