Important CVSS 5.5 EPSS 0.02894 🔬 Patch diffed 2022-01 archive

Executive Summary

None

Overview

5.5
CVSS MEDIUM
Important
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Information Disclosure
Released Jan 11 2022
Last Updated Jan 11 2022
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.02894 — 0.85694 percentile
NVD CVSS 5.5 MEDIUM — matches MSRC

CVSS Vector

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N/E:U/RL:O/RC:C
ATTACK VECTOR
Local
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
Low
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
None
AVAILABILITY
None
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 4.8

EPSS Score

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

Affected Products

21 affected products
Product KB Article Severity Impact Restart Required
Windows 10 Version 1809 for 32-bit Systems 5009557 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1809 for ARM64-based Systems 5009557 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1809 for x64-based Systems 5009557 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1909 for 32-bit Systems 5009545 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1909 for ARM64-based Systems 5009545 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1909 for x64-based Systems 5009545 (Security Update) Important Information Disclosure Yes
Windows 10 Version 20H2 for 32-bit Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 20H2 for ARM64-based Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H1 for 32-bit Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H1 for ARM64-based Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H1 for x64-based Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H2 for 32-bit Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H2 for ARM64-based Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H2 for x64-based Systems 5009543 (Security Update) Important Information Disclosure Yes
Windows 11 version 21H2 for ARM64-based Systems 5009566 (Security Update) Important Information Disclosure Yes
Windows 11 version 21H2 for x64-based Systems 5009566 (Security Update) Important Information Disclosure Yes
Windows Server 2019 5009557 (Security Update) Important Information Disclosure Yes
Windows Server 2019 (Server Core installation) 5009557 (Security Update) Important Information Disclosure Yes
Windows Server 2022 5009555 (Security Update) Important Information Disclosure Yes
Windows Server 2022 (Server Core installation) 5009555 (Security Update) Important Information Disclosure Yes
Windows Server, version 20H2 (Server Core Installation) 5009543 (Security Update) Important Information Disclosure Yes

Patches

5 patches
Article Type Restart
5009557 Security Update Yes
5009545 Security Update Yes
5009543 Security Update Yes
5009566 Security Update Yes
5009555 Security Update Yes

Patch Diff

ghidriff · spaceport.sys (KB5009543)

Out-of-bounds read in spaceport.sys tier/space creation IOCTLs. SpIoctlCreateTier (IOCTL 0xE7D410) accepts a POOLTIER structure containing user-controlled offsetGuids and numOfGuids fields. SpIdsCopyHelper copies GUIDs from (buffer + offsetGuids) without validating that offset + (count * 16) falls within the buffer boundary. By setting offsetGuids beyond the buffer length, adjacent kernel pool memory (NonPagedPoolNxCacheAligned) is read into the SDB_TIER object. The leaked data is retrievable via SpIoctlGetTierInfo (IOCTL 0xE71408). Three functions patched with the same bounds-check pattern. Found by Quang Linh (STAR Labs SG) via ZDI. Patched January 2022.

Pre-patch version 10.0.22000.282
Post-patch version 10.0.22000.434
Function Address Change Note
SpIoctlCreateTier code (bounds check added) Added safe integer addition (RtlULongAdd) of offsetGuids + totalGuidSize and bounds check against IRP buffer length before calling SpIdsCopyHelper. Pre-patch: no validation of offsetGuids against buffer boundaries. Post-patch: rejects if offsetGuids + numOfGuids*sizeof(GUID) > buffer_length.
SP_POOL::SetTierInfo code (bounds check added) Same pattern fix as SpIoctlCreateTier — added offset+size bounds validation before GUID copy.
SP_POOL::SetSpaceInfoTransaction code (bounds check added) Same pattern fix — added offset+size bounds validation before GUID copy.
View full diff report View RCA report Download PoC

Attack Path

Out-of-bounds read from an unvalidated GUID array offset in a Storage Spaces IOCTL

Attack path for CVE-2022-21877 Out-of-bounds read from an unvalidated GUID array offset in a Storage Spaces IOCTL 01 — ENTRY Local user issues the tier-creation IOCTL to spaceport.sys IOCTL 0xE7D410 (SpIoctlCreateTier). Storage Spaces is present by default; no elevation needed. 02 — CONTROLLED INPUT The POOLTIER structure supplies offsetGuids and numOfGuids Both fields come straight from the IRP buffer and are entirely caller-chosen. 03 — PATH The handler copies GUIDs out of the request buffer SpIoctlCreateTier -> SpIdsCopyHelper reads from (buffer + offsetGuids) for numOfGuids * 16 bytes. SP_POOL::SetTierInfo has the identical pattern. 04 — MISSING CHECK offset + count * 16 is never checked against the IRP buffer length Setting offsetGuids beyond the buffer walks into adjacent NonPagedPoolNx. The patch adds RtlULongAdd for the offset+size computation and bounds-checks the result against the IRP buffer length in both call sites. 05 — PRIMITIVE Adjacent kernel pool memory copied back to the caller Information disclosure from NonPagedPoolNx; pairs with a separate write primitive for elevation.

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