Important CVSS 7.8 EPSS 0.01208 🔬 Patch diffed 2021-06 archive

Executive Summary

None

Overview

7.8
CVSS HIGH
Important
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Elevation of Privilege
Released Jun 8 2021
Last Updated Jun 8 2021
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.01208 — 0.65676 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.01208
probability of exploitation in the next 30 days
0.65676 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

18 affected products
Product KB Article Severity Impact Restart Required
Windows 10 Version 1809 for 32-bit Systems 5003646 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 1809 for ARM64-based Systems 5003646 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 1809 for x64-based Systems 5003646 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 1909 for 32-bit Systems 5003635 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 1909 for ARM64-based Systems 5003635 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 1909 for x64-based Systems 5003635 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 2004 for 32-bit Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 2004 for ARM64-based Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 2004 for x64-based Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 20H2 for 32-bit Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 20H2 for ARM64-based Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 21H1 for 32-bit Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 21H1 for ARM64-based Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows 10 Version 21H1 for x64-based Systems 5003637 (Security Update) Important Elevation of Privilege Yes
Windows Server 2019 5003646 (Security Update) Important Elevation of Privilege Yes
Windows Server 2019 (Server Core installation) 5003646 (Security Update) Important Elevation of Privilege Yes
Windows Server, version 2004 (Server Core installation) 5003637 (Security Update) Important Elevation of Privilege Yes
Windows Server, version 20H2 (Server Core Installation) 5003637 (Security Update) Important Elevation of Privilege Yes

Patches

3 patches
Article Type Restart
5003646 Security Update Yes
5003635 Security Update Yes
5003637 Security Update Yes

Patch Diff

ghidriff · cldflt.sys (KB5003646)

Integer underflow in cldflt.sys HsmpRpiDecompressBuffer leading to controlled paged pool overflow from 0x20-byte allocation. cstmDataSize (WORD) controls allocation size (cstmDataSize + 8). No minimum check allows value 0, causing allocatedSize - 12 to underflow to 0xFFFFFFF4 for RtlDecompressBuffer. LZNT1 header can be set to uncompressed, making the call behave as memcpy with attacker-controlled size and content. Patch adds if (cstmDataSize >= 4) guard. Related: CVE-2023-36036 (same function, missing max check, exploited ITW).

Pre-patch version 10.0.19041.906
Post-patch version 10.0.19041.1052
Function Address Change Note
HsmpRpiDecompressBuffer code (minimum size check added) Added check that cstmDataSize >= 4 before computing allocatedSize = cstmDataSize + 8. Prevents unsigned integer underflow when (allocatedSize - 12) is passed as UncompressedBufferSize to RtlDecompressBuffer.
View full diff report View RCA report Download PoC

Attack Path

Local EoP via an integer underflow in HsmpRpiDecompressBuffer turning RtlDecompressBuffer into an unbounded copy

Attack path for CVE-2021-31969 Local EoP via an integer underflow in HsmpRpiDecompressBuffer turning RtlDecompressBuffer into an unbounded copy 01 — ENTRY Attacker registers a cloud sync root and creates a directory inside it CfRegisterSyncRoot() + CfConnectSyncRoot() attaches the cldflt.sys minifilter. Any authenticated user; no admin rights. 02 — CONTROLLED INPUT Sets reparse data declaring a zero-length custom block FSCTL_SET_REPARSE_POINT_EX (the pre-op blocks the plain FSCTL) with HSM_REPARSE_DATA carrying cstmDataSize = 0, flag = 0x8000, and an LZNT1 header marking the payload as uncompressed. 03 — PATH Reopening the directory drives the post-create callback into the decompressor HsmFltPostCREATE -> HsmpSetupContexts -> HsmpRpReadBuffer -> FltFsControlFile(FSCTL_GET_REPARSE_POINT) -> HsmpRpiDecompressBuffer. 04 — MISSING CHECK No minimum check on cstmDataSize before computing the decompression bounds allocatedSize = cstmDataSize + 8, then (allocatedSize - 12) is passed as UncompressedBufferSize. With cstmDataSize = 0 that underflows to 0xFFFFFFF4. The patch adds a cstmDataSize >= 4 guard. 05 — PRIMITIVE Paged pool overflow from a 0x20-byte allocation with attacker-controlled contents The uncompressed LZNT1 header makes RtlDecompressBuffer behave as a memcpy of attacker-chosen size and data. Same function as CVE-2023-36036, which was exploited in the wild via a missing maximum check.

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 working with Trend Micro Zero Day Initiative
Keqi Hu