CVE-2026-25188 — Windows Telephony Service Elevation of Privilege Vulnerability
Executive Summary
Heap-based buffer overflow in Windows Telephony Service allows an unauthorized attacker to elevate privileges over an adjacent network.
Overview
CVSS Vector
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/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 | 5078938 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5078938 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5078752 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5078752 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5078885 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5078885 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5078885 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5078885 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5078885 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5078885 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5078883 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5078883 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5079473 (Security Update) 5079420 (Security Hotpatch Update) Important Elevation of Privilege 5077181 5077212 Base: 8.8 Temporal: 7.7 Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.8037 10.0.26100.7979 Yes None Windows 11 Version 24H2 for x64-based Systems 5079473 (Security Update) 5079420 (Security Hotpatch Update) Important Elevation of Privilege 5077181 5077212 Base: 8.8 Temporal: 7.7 Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.8037 10.0.26100.7979 Yes None Windows 11 Version 25H2 for ARM systems 5079473 (Security Update) 5079420 (Security Hotpatch Update) Important Elevation of Privilege 5077181 5077212 Base: 8.8 Temporal: 7.7 Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.8037 10.0.26200.7979 Yes None Windows 11 Version 25H2 for x64-based Systems 5079473 (Security Update) 5079420 (Security Hotpatch Update) Important Elevation of Privilege 5077181 5077212 Base: 8.8 Temporal: 7.7 Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.8037 10.0.26200.7979 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5079466 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5079466 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 | 5078775 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5078775 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5078774 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5078774 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5078938 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5078938 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5078752 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5078752 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 5078766 (Security Update) 5078737 (Security Hotpatch Update) Important Elevation of Privilege 5075906 5075943 Base: 8.8 Temporal: 7.7 Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.20348.4893 10.0.20348.4830 Yes No None Windows Server 2022 (Server Core installation) 5078766 (Security Update) 5078737 (Security Hotpatch Update) Important Elevation of Privilege 5075906 5075943 Base: 8.8 Temporal: 7.7 Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.20348.4893 10.0.20348.4830 Yes No None Windows Server 2022, 23H2 Edition (Server Core installation) | 5078734 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5078938 |
Security Update | Yes |
5078752 |
Security Update | Yes |
5078885 |
Security Update | Yes |
5078883 |
Security Update | Yes |
5079466 |
Security Update | Yes |
5078775 |
Monthly Rollup | Yes |
5078774 |
Monthly Rollup | Yes |
5078734 |
Security Update | Yes |
Patch Diff
Heap-based buffer overflow (CWE-122) in the Windows Telephony Service (tapisrv.dll) LForward, the server-side handler for lineForward. LForward parses a client-supplied LINEFORWARDLIST (header + array of LINEFORWARD entries, each with variable-length caller/callee address blobs referenced by offset/size). It allocates a heap buffer of 2 x dwTotalSize (the client-declared list size) and copies the list in, widening embedded ANSI address strings to Unicode. Each entry's caller/callee block is validated INDIVIDUALLY with IsBadSizeOffset, but the CUMULATIVE size of all entries' variable-length address data is never checked against the allocation. A crafted list whose entries each pass the per-entry check but whose aggregate (or ANSI->Unicode-widened, or overlapping/aliased-offset) address data exceeds 2 x dwTotalSize overflows the tapisrv service heap (ghTapisrvHeap) with attacker-controlled bytes - a local EoP. IN-HOUSE ghidriff diff of 10.0.26100.7623 -> .8036 shows LForward is the only function with a real code change; the March fix adds an integer-overflow-checked cumulative size accumulator validated against dwTotalSize, GATED behind CFR flag Feature_3967746362 - with the flag off the patched binary still runs the per-entry-only validation and remains overflowable. Credit: h4urek.
| Function | Address | Change | Note |
|---|---|---|---|
LForward |
18000a750 -> 18000a790 |
code (cumulative size validation added, CFR-gated) | Pre-patch validates each LINEFORWARD entry's caller/callee address block individually via IsBadSizeOffset but never sums them; allocation is HeapAlloc(ghTapisrvHeap,8,dwTotalSize*2). Post-patch adds Feature_3967746362__private_IsEnabledDeviceUsageNoInline() checks at 3 sites that accumulate each entry's CallerSize/CalleeSize into a running total (local_c4) with 32-bit add-overflow checks and reject when the total exceeds dwTotalSize (handles the aliased caller==callee case specially). Length 1502 -> 1656; match ratio 0.25/b_ratio 0.37. The cumulative check runs only when the flag is enabled. |
Feature_3967746362__private_IsEnabledDeviceUsageNoInline |
18000699c (new) |
added (CFR flag accessor) | New Controlled Feature Rollout flag accessor introduced by this patch and called only from LForward. Gates the cumulative-size bounds check. |
Attack Path
Per-entry-only validation lets a LINEFORWARDLIST's aggregate address data overflow a 2 x dwTotalSize heap buffer in the Telephony service
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.