CVE-2026-49177 — Windows TCP/IP Information Disclosure Vulnerability
Executive Summary
Out-of-bounds read in Windows TCP/IP allows an authorized attacker to disclose information locally.
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 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
| 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
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).
| 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. |
Attack Path
An unbounded destination count from the NSI address-sort IOCTL walks a fixed 0x36bc buffer off its end
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