Important CVSS 5.5 EPSS 0.00327 🔬 Patch diffed 2026-07 archive

Executive Summary

Out-of-bounds read in Windows TCP/IP allows an authorized attacker to disclose information locally.

Overview

5.5
CVSS MEDIUM
Important
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Information Disclosure
Released Jul 14 2026
Last Updated Jul 14 2026
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.00327 — 0.2548 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.00327
probability of exploitation in the next 30 days
0.2548 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

27 affected products
Product KB Article Severity Impact Restart Required
Windows 10 Version 1607 for 32-bit Systems 5099535 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1607 for x64-based Systems 5099535 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1809 for 32-bit Systems 5099538 (Security Update) Important Information Disclosure Yes
Windows 10 Version 1809 for x64-based Systems 5099538 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H2 for 32-bit Systems 5099539 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H2 for ARM64-based Systems 5099539 (Security Update) Important Information Disclosure Yes
Windows 10 Version 21H2 for x64-based Systems 5099539 (Security Update) Important Information Disclosure Yes
Windows 10 Version 22H2 for 32-bit Systems 5099539 (Security Update) Important Information Disclosure Yes
Windows 10 Version 22H2 for ARM64-based Systems 5099539 (Security Update) Important Information Disclosure Yes
Windows 10 Version 22H2 for x64-based Systems 5099539 (Security Update) Important Information Disclosure Yes
Windows 11 Version 24H2 for ARM64-based Systems 5101650 (Security Update) Important Information Disclosure Yes
Windows 11 Version 24H2 for x64-based Systems 5101650 (Security Update) Important Information Disclosure Yes
Windows 11 Version 25H2 for ARM64-based Systems 5101650 (Security Update) Important Information Disclosure Yes
Windows 11 Version 25H2 for x64-based Systems 5101650 (Security Update) Important Information Disclosure Yes
Windows 11 Version 26H1 for ARM64-based Systems 5101649 (Security Update) Important Information Disclosure Yes
Windows 11 version 26H1 for x64-based Systems 5095051 (Security Update) Important Information Disclosure Yes
Windows Server 2012 5099445 (Monthly Rollup) Important Information Disclosure Yes
Windows Server 2012 (Server Core installation) 5099445 (Monthly Rollup) Important Information Disclosure Yes
Windows Server 2012 R2 5099444 (Monthly Rollup) Important Information Disclosure Yes
Windows Server 2012 R2 (Server Core installation) 5099444 (Monthly Rollup) Important Information Disclosure Yes
Windows Server 2016 5099535 (Security Update) Important Information Disclosure Yes
Windows Server 2016 (Server Core installation) 5099535 (Security Update) Important Information Disclosure Yes
Windows Server 2019 5099538 (Security Update) Important Information Disclosure Yes
Windows Server 2019 (Server Core installation) 5099538 (Security Update) Important Information Disclosure Yes
Windows Server 2022 5099540 (Security Update) Important Information Disclosure Yes
Windows Server 2025 5099536 (Security Update) Important Information Disclosure Yes
Windows Server 2025 (Server Core installation) 5099536 (Security Update) Important Information Disclosure Yes

Patches

10 patches
Article Type Restart
5099535 Security Update Yes
5099538 Security Update Yes
5099539 Security Update Yes
5101650 Security Update Yes
5101649 Security Update Yes
5095051 Security Update Yes
5099445 Monthly Rollup Yes
5099444 Monthly Rollup Yes
5099540 Security Update Yes
5099536 Security Update Yes

Patch Diff

ghidriff · tcpip.sys (KB5101650)

OOB read (CWE-125) in tcpip.sys reachable from a local user via DeviceIoControl(\Device\Nsi, IOCTL 0x120007) (NSI address-sort). IpGetAllSortedAddressParameters passes the user KeyBuffer (0x36bc bytes) and MaxDestCount into IppCreateSortedAddressPairsEx -> IppQualifyAddresses, which walks the destination list MaxDestCount times (stride 0x1c from KeyBuffer+8) with NO upper bound; the buffer holds at most (0x36bc-4-8)/0x1c = 0x1f4 (500) records, so MaxDestCount > 0x1f4 reads past the end (Talos PoC uses 0xbbbbbbbb -> bugcheck 0x50 in IppQualifyAddresses). IN-HOUSE ghidriff diff of tcpip.sys 10.0.26100.8737 -> .8875 (the July 14 2026 fix) CONFIRMS Talos and reveals the fix: IpGetAllSortedAddressParameters adds `if (uVar3 == 0 || (uint)MaxDestCount < 0x1f5)` before the sort, i.e. requires MaxDestCount <= 0x1f4 - but only when CFR flag Feature_4272399675 is enabled (uVar3 = featureState & 1). With the flag disabled the patched binary still runs the unbounded walk. Talos: TALOS-2026-2427 (KPC, Cisco Talos). Same \Device\Nsi IOCTL 0x120007 surface as CVE-2026-50475 (netio.sys).

Pre-patch version 10.0.26100.8737 Download
Post-patch version 10.0.26100.8875 Download
Function Address Change Note
IpGetAllSortedAddressParameters 64% match code (MaxDestCount bound check added, CFR-gated) Post-patch reads Feature_4272399675 state (uVar3 = featureState & 1) and gates the sort: `if (uVar3 == 0 || (uint)piVar1[0xdad] < 0x1f5)` before calling IppCreateSortedAddressPairsEx. piVar1[0xdad] is the KeyBuffer MaxDestCount; 0x1f5 => the walk proceeds only when MaxDestCount <= 0x1f4 (500) - exactly Talos's (0x36bc-4-8)/0x1c bound. When the flag is DISABLED (uVar3==0) the `||` short-circuits and the sort proceeds with no bound - the original OOB-read path still runs on a patched binary. Gains a call to Feature_4272399675__private_IsEnabledDeviceUsageNoInline vs pre.
IppCreateSortedAddressPairsEx downstream (receives MaxDestCount) Fifth arg MaxDestCount comes from the user KeyBuffer; only reached after the new bound check when the flag is enabled.
IppQualifyAddresses vulnerable sink (per Talos) Walks the destination list MaxDestCount times striding 0x1c from KeyBuffer+8 with no internal bound; OOB read when MaxDestCount > 0x1f4. Not independently modified - the fix is the upstream bound in IpGetAllSortedAddressParameters.
View full diff report View RCA report

Attack Path

An unbounded destination count from the NSI address-sort IOCTL walks a fixed 0x36bc buffer off its end

Attack path for CVE-2026-49177 An unbounded destination count from the NSI address-sort IOCTL walks a fixed 0x36bc buffer off its end 01 — ENTRY Standard user issues the NSI address-sort IOCTL DeviceIoControl(\Device\Nsi, 0x120007) with a KeyBuffer. Reachable by any local user via nsiproxy; no elevation, no interaction. 02 — CONTROLLED INPUT KeyBuffer is fixed at 0x36bc bytes and carries the destination count MaxDestCount is read from the buffer and becomes the 5th argument to IppCreateSortedAddressPairsEx. The whole buffer is attacker-controlled. 03 — PATH IpGetAllSortedAddressParameters -> IppCreateSortedAddressPairsEx -> IppQualifyAddresses Via NETIO!NsiGetParameterEx. IppCreateSortedAddressPairsEx checks only MaxDestCount != 0, then calls IppQualifyAddresses to classify each destination. 04 — MISSING CHECK MaxDestCount is used as the loop bound with no maximum IppQualifyAddresses walks from KeyBuffer+8, striding 0x1c per entry, `while (i < MaxDestCount)`. The buffer holds at most (0x36bc-4-8)/0x1c = 0x1f4 entries, but the count is never checked against that. 05 — PRIMITIVE Out-of-bounds read past the 0x36bc buffer into NonPagedPool MaxDestCount > 0x1f4 reads adjacent kernel pool - information disclosure across a trust boundary (Talos S:C/C:H), or a bugcheck 0x50 DoS when the read hits an unmapped page (PoC used 0xbbbbbbbb). Expected fix bounds the count to 0x1f4.

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

Microsoft Red Team (MRT) with Microsoft
Microsoft