CVE-2026-42968 — Windows Telephony Server Information Disclosure Vulnerability
Executive Summary
Out-of-bounds read in Windows Telephony Service 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 | 5094122 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5094122 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5094123 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5094123 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5094127 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5094127 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5093998 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5093998 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5094126 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5094126 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5094126 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5094126 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 Version 26H1 for ARM64-based Systems | 5095051 (Security Update) |
Important | Information Disclosure | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5095051 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2012 | 5094042 (Monthly Rollup) |
Important | Information Disclosure | Yes |
| Windows Server 2012 (Server Core installation) | 5094042 (Monthly Rollup) |
Important | Information Disclosure | Yes |
| Windows Server 2012 R2 | 5094041 (Monthly Rollup) |
Important | Information Disclosure | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5094041 (Monthly Rollup) |
Important | Information Disclosure | Yes |
| Windows Server 2016 | 5094122 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2016 (Server Core installation) | 5094122 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2019 | 5094123 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2019 (Server Core installation) | 5094123 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2022 | 5094128 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2022 (Server Core installation) | 5094128 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2025 | 5094125 (Security Update) |
Important | Information Disclosure | Yes |
| Windows Server 2025 (Server Core installation) | 5094125 (Security Update) |
Important | Information Disclosure | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5094122 |
Security Update | Yes |
5094123 |
Security Update | Yes |
5094127 |
Security Update | Yes |
5093998 |
Security Update | Yes |
5094126 |
Security Update | Yes |
5095051 |
Security Update | Yes |
5094042 |
Monthly Rollup | Yes |
5094041 |
Monthly Rollup | Yes |
5094128 |
Security Update | Yes |
5094125 |
Security Update | Yes |
Patch Diff
Out-of-bounds read (CWE-125) in the Windows Telephony Server tapisrv.dll TAPI event-mask handling, local information disclosure over the Telephony RPC interface. TAPI stores per-object event state as a 31-entry DWORD array (valid index 0-30). In single sub-mask mode (request+0x10 != 0) the handler combines request+0x18/+0x1C into a 64-bit sub-mask and derives an array index via GetSubMaskIndex = floor(log2(submask)), which can be up to 63. PRE: neither the read helper nor the write helper checked idx against the 31-slot array, so a sub-mask with bit 63 set yields idx=63 and reads base[63] - 132 bytes past the last valid entry base[30]. On the read path (TGetEventMasksOrSubMasks, 6 per-object accesses) the OOB DWORD is written to request+0x14 and returned in the RPC response (4-byte disclosure of adjacent TAPI memory); the same unbounded index reaches an OOB array write on SetEventMasksOrSubMasks. IN-HOUSE ghidriff of tapisrv.dll 10.0.26100.8521 -> .8655 (Jun 9 2026, KB5094126) confirms the fix: a new GetEventMasksOrSubMasks read helper and SetEventMasksOrSubMasks add an index bound (0x1e < idx -> return 0x80000032) at 7 access points, gated behind CFR flag Feature_500158777 (TGet also references Feature_784066872). Note: our x64 24H2 diff shows Feature_500158777/784066872, differing from the circulated screenshots' Feature_768594233 (build/arch difference); the >= 0x1F bound and 0x80000032 error are identical. We ship what our diff shows.
| Function | Address | Change | Note |
|---|---|---|---|
GetEventMasksOrSubMasks |
new helper |
added (bounded read helper, CFR-gated) | New per-object read helper used by TGetEventMasksOrSubMasks. Single sub-mask branch: idx=GetSubMaskIndex(submask); if Feature_500158777 enabled and 0x1e<idx (>=31) return 0x80000032 else *param_4=param_5[idx]. Bound absent pre-patch (base[idx] read up to base[63]). |
SetEventMasksOrSubMasks |
code change |
code (index bound added, CFR-gated) | Common write helper for the 6 per-object setters. Pre: param_4[GetSubMaskIndex(submask)] = value with no bound. Post: if Feature_500158777 enabled and 0x1e<idx return 0x80000032 before the write. Whole-mask loop (lVar=0x1f, 31 iterations) unchanged. |
TGetEventMasksOrSubMasks |
code change |
code (read path refactored to bounded helper) | Read path; 6 per-object accesses refactored through GetEventMasksOrSubMasks; references Feature_784066872 in addition to Feature_500158777. The OOB DWORD was returned via request+0x14 in the RPC response pre-patch. |
Feature_500158777 |
new flag |
added (CFR gate) | New CFR flag gating the idx>=0x1F bound on the shared read/write helpers. |
Feature_784066872 |
new flag |
added (CFR gate) | Second new CFR flag referenced on the TGetEventMasksOrSubMasks read path. |
Attack Path
A 64-bit TAPI sub-mask yields an array index up to 63 that reads past the 31-entry event-mask array and leaks the DWORD via RPC
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
wxz
Diffract
z1r0