Important CVSS 7.8 EPSS 0.01208 🔬 Patch diffed 2021-07 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 Jul 13 2021
Last Updated Jul 13 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
ProductKB ArticleSeverityImpactRestart Required
Windows 10 Version 1809 for 32-bit Systems5003646 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 1809 for ARM64-based Systems5003646 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 1809 for x64-based Systems5003646 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 1909 for 32-bit Systems5003635 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 1909 for ARM64-based Systems5003635 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 1909 for x64-based Systems5003635 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 2004 for 32-bit Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 2004 for ARM64-based Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 2004 for x64-based Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 20H2 for 32-bit Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 20H2 for ARM64-based Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 21H1 for 32-bit Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 21H1 for ARM64-based Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows 10 Version 21H1 for x64-based Systems5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows Server 20195003646 (Security Update)ImportantElevation of PrivilegeYes
Windows Server 2019 (Server Core installation)5003646 (Security Update)ImportantElevation of PrivilegeYes
Windows Server, version 2004 (Server Core installation)5003637 (Security Update)ImportantElevation of PrivilegeYes
Windows Server, version 20H2 (Server Core Installation)5003637 (Security Update)ImportantElevation of PrivilegeYes

Patches

3 patches
ArticleTypeRestart
5003646Security UpdateYes
5003635Security UpdateYes
5003637Security UpdateYes

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
FunctionAddressChangeNote
HsmpRpiDecompressBuffercode (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-31969Local EoP via an integer underflow in HsmpRpiDecompressBuffer turning RtlDecompressBuffer into an unbounded copy01 — ENTRYAttacker registers a cloud sync root and creates a directory inside itCfRegisterSyncRoot() + CfConnectSyncRoot() attaches the cldflt.sys minifilter. Any authenticated user;no admin rights.02 — CONTROLLED INPUTSets reparse data declaring a zero-length custom blockFSCTL_SET_REPARSE_POINT_EX (the pre-op blocks the plain FSCTL) with HSM_REPARSE_DATA carryingcstmDataSize = 0, flag = 0x8000, and an LZNT1 header marking the payload as uncompressed.03 — PATHReopening the directory drives the post-create callback into the decompressorHsmFltPostCREATE -> HsmpSetupContexts -> HsmpRpReadBuffer -> FltFsControlFile(FSCTL_GET_REPARSE_POINT)-> HsmpRpiDecompressBuffer.04 — MISSING CHECKNo minimum check on cstmDataSize before computing the decompression boundsallocatedSize = cstmDataSize + 8, then (allocatedSize - 12) is passed as UncompressedBufferSize. WithcstmDataSize = 0 that underflows to 0xFFFFFFF4. The patch adds a cstmDataSize >= 4 guard.05 — PRIMITIVEPaged pool overflow from a 0x20-byte allocation with attacker-controlled contentsThe uncompressed LZNT1 header makes RtlDecompressBuffer behave as a memcpy of attacker-chosen size anddata. 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