CVE-2026-34343 — Windows Application Identity (AppID) Subsystem Elevation of Privilege Vulnerability
Executive Summary
Heap-based buffer overflow in Windows Application Identity (AppID) Subsystem allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/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 | 5087537 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5087537 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5087544 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5087544 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5087544 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5087420 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5093998 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5082063 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.8457 10.0.26100.8390 Yes None Windows 11 Version 24H2 for x64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5082063 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.8457 10.0.26100.8390 Yes None Windows 11 Version 25H2 for ARM64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5083769 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.8457 10.0.26200.8390 Yes None Windows 11 Version 25H2 for x64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5083769 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.8457 10.0.26200.8390 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5089548 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5089548 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 | 5087470 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5087470 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5087471 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5087471 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5087537 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5087537 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 5087545 (Security Update) 5087424 (Security Hotpatch Update) Important Elevation of Privilege 5082142 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.20348.5139 10.0.20348.5074 Yes None Windows Server 2022 (Server Core installation) 5087545 (Security Update) 5087424 (Security Hotpatch Update) Important Elevation of Privilege 5082142 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.20348.5139 10.0.20348.5074 Yes None Windows Server 2022, 23H2 Edition (Server Core installation) | 5087541 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5087537 |
Security Update | Yes |
5087538 |
Security Update | Yes |
5087544 |
Security Update | Yes |
5094127 |
Security Update | Yes |
5087420 |
Security Update | Yes |
5093998 |
Security Update | Yes |
5089548 |
Security Update | Yes |
5087470 |
Monthly Rollup | Yes |
5087471 |
Monthly Rollup | Yes |
5087541 |
Security Update | Yes |
Patch Diff
Integer-truncation heap buffer overflow (CWE-122) in the Windows Application Identity subsystem appid.sys (also srpapi.dll/appidapi.dll) AiConvertFullImagePathToMacroFormat, local EoP. The function rewrites a path prefix with macros (%OSDRIVE%/%REMOVABLE%/%HOT%). It computes the result length as a2->Length + prefix_len - matched_len where all three are USHORT UNICODE_STRING.Length fields; the 32-bit arithmetic result is stored back into a USHORT DestinationString.Length (explicit (unsigned __int16) cast in appid.sys), truncating to 16 bits. The truncated length is passed to AiAlloc as the buffer size, so a buffer far smaller than needed is allocated, while the subsequent memmove/memcpy copy uses the original non-truncated size -> heap/pool overflow (e.g. Length=65000, prefix=1000, matched=10 needs 65990 bytes but allocates 470 -> ~64520-byte overflow). The bug exists in two loops (macro-prefix array and the global ::P linked list). Diff of appid.sys 10.0.26100.8246 -> .8457 (May 12 2026, KB5089549) confirms the fix: gated behind CFR flag Feature_3858697530, a 32-bit intermediate length plus an explicit `> 0xFFFE` bound check are added before storing to the 16-bit field / allocating; over-length aborts with STATUS_NAME_TOO_LONG (0xC0000106). Applied to both loops; the global-list error path also frees P[1] only when independently allocated (P[1] != i[6]). Note: our diff shows Feature_3858697530 (build/arch); the >0xFFFE check and 32-bit widening are as described.
| Function | Address | Change | Note |
|---|---|---|---|
AiConvertFullImagePathToMacroFormat |
code change |
code (32-bit length + >0xFFFE bound check, CFR-gated) | Pre: DestinationString.Length = (USHORT)(a2->Length + prefix_len - matched_len) truncates >0xFFFF lengths; AiAlloc sized to the truncated value while memmove/memcpy use the real size -> overflow. Post (Feature_3858697530): 32-bit intermediate; if 0xfffe < len return 0xC0000106 (STATUS_NAME_TOO_LONG) in both the macro-prefix loop and the global-list loop; conditional cleanup of P[1] (only if P[1] != i[6]). |
Feature_3858697530 |
gate |
added (CFR gate) | CFR flag gating the widened length + >0xFFFE bound; original truncating path still ships when disabled. |
Attack Path
A very long image path truncates to a 16-bit length that under-sizes the AiAlloc buffer, overflowed by the full-size copy
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.