CVE-2022-21877 — Storage Spaces Controller Information Disclosure Vulnerability
Executive Summary
None
Overview
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
EPSS Score
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
| 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
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.
| 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. |
Attack Path
Out-of-bounds read from an unvalidated GUID array offset in a Storage Spaces IOCTL
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.