Important CVSS 7.8 EPSS 0.00326 🔬 Patch diffed 2026-05 archive

Executive Summary

Heap-based buffer overflow in Windows Application Identity (AppID) Subsystem allows an authorized attacker to elevate privileges locally.

Overview

7.8
CVSS HIGH
Important
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Elevation of Privilege
Released May 12 2026
Last Updated May 12 2026
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.00326 — 0.25371 percentile
NVD CVSS 7.8 HIGH — matches MSRC

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
ATTACK VECTOR
Local
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
Low
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
High
AVAILABILITY
High
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 6.8

EPSS Score

0.00326
probability of exploitation in the next 30 days
0.25371 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

23 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

10 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

ghidriff · appid.sys (KB5089549)

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.

Pre-patch version 10.0.26100.8246 Download
Post-patch version 10.0.26100.8457 Download
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.
View full diff report View RCA report

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

Attack path for CVE-2026-34343 A very long image path truncates to a 16-bit length that under-sizes the AiAlloc buffer, overflowed by the full-size copy 01 — ENTRY Local caller drives AppID path-to-macro conversion of a crafted long image path appid.sys AiConvertFullImagePathToMacroFormat rewrites the path prefix with macros for AppLocker/AppID policy. AV:L/PR:L. 02 — CONTROLLED INPUT Path chosen so a2->Length + prefix_len - matched_len exceeds 0xFFFF e.g. Length=65000, prefix=1000, matched=10 -> 65990 bytes required. 03 — MISSING CHECK The length is stored in a 16-bit USHORT field and truncated (CWE-122 root: truncation) 65990 & 0xFFFF = 470; AiAlloc allocates only 470 bytes while the copy uses the real 65990-byte size. 04 — PRIMITIVE memmove/memcpy overflow the under-sized kernel-pool buffer -> EoP ~64520 bytes are written past the allocation. The May 2026 fix (Feature_3858697530) widens the length to 32 bits and rejects >0xFFFE with STATUS_NAME_TOO_LONG in both loops.

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