CVE-2026-50655 — Microsoft Windows Media Foundation Remote Code Execution Vulnerability
Executive Summary
Heap-based buffer overflow in Windows Media allows an unauthorized attacker to execute code locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/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 | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 26H1 for ARM64-based Systems | 5101649 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5101649 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 (Server Core installation) | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 (Server Core installation) | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2022 | 5099540 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2025 | 5099536 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2025 (Server Core installation) | 5099536 (Security Update) |
Critical | Remote Code Execution | 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 |
5099540 |
Security Update | Yes |
5099536 |
Security Update | Yes |
Patch Diff
Integer overflow leading to a heap-based buffer overflow (CWE-122) in the Windows Media Foundation audio converter mfaudiocnv.dll (DTS audio MFT, CDTSMFTDataHandler), local arbitrary code execution when a user opens a crafted media file (Critical, RCE, AV:L, UI:R, CVSS 7.8, Exploitation More Likely). When producing output samples, _CreateNewOutputBuffer and _AppendPacketToOutputBuffer compute the required output-buffer size by adding a fixed header size to the payload length (payload + 8, payload + 4, payload + 0x13 aligned) and compare it against the buffer capacity. PRE: the size was computed in 32-bit and compared (unsigned) to capacity with no overflow check, so a crafted stream whose payload length is near 0xFFFFFFFF wraps the addition to a small value that passes the capacity check while the real copy overruns the buffer. Because a user need only open/play a crafted audio file, it is an ACE primitive. Diff of mfaudiocnv.dll 10.0.14393.4169 -> .9339 (Jul 14 2026, KB5099535, Server 2016) confirms the fix: gated via the velocity EvaluateCurrentState mechanism (Feature_2888010040 in _CreateNewOutputBuffer, Feature_3712716091 in _AppendPacketToOutputBuffer), each header+payload addition gains a monotonicity check - if (payload + 8 < payload) the 32-bit add wrapped, so it rejects with 0x8000FFFF (E_UNEXPECTED) before the size drives the capacity comparison/copy; the same guard is applied to the payload+4 and payload+0x13+hdr calculations. Cross-checked against an independent writeup (the size-addition sites and the monotonicity fix match; the writeup cites Feature_2552465720 while this build shows Feature_2888010040 / Feature_3712716091, and the capacity-field offset differs because the object layout changed between the two revisions).
| Function | Address | Change | Note |
|---|---|---|---|
CDTSMFTDataHandler::_CreateNewOutputBuffer |
code change |
code (adds 32-bit overflow/monotonicity guard on the size addition, CFR-gated) | Pre: uVar8 = (payload + 0x13) & ~0xF then wrote size (short)uVar8 + 8 with no overflow check. Post (Feature_2888010040): uVar3 = payload + 8; if (uVar3 < payload) set 0x8000FFFF (E_UNEXPECTED) before using the size / comparing to capacity. |
CDTSMFTDataHandler::_AppendPacketToOutputBuffer |
code change |
code (guarded header+payload additions vs capacity, CFR-gated) | Post (Feature_3712716091): computes payload + 0x13 + hdr (aligned) and payload + 8 + hdr and checks them against capacity (local_res8[0]) with the wrap guard, rejecting with 0x8000FFFF when the 32-bit add would overflow. |
Feature_2888010040 / Feature_3712716091 |
gate |
added (CFR gates, velocity EvaluateCurrentState) | Feature descriptors gating the overflow guards in the two sizing functions; the original unchecked additions ship when disabled. (An independent writeup cites Feature_2552465720 for the same fix.) |
Attack Path
A crafted audio payload length overflows the 32-bit output-buffer size computation, bypassing the capacity check
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.