Critical CVSS 9.8 EPSS 0.5585 🔬 Patch diffed 2026-04 archive

Executive Summary

Double free in Windows IKE Extension allows an unauthorized attacker to execute code over a network.

Overview

9.8
CVSS CRITICAL
Critical
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Remote Code Execution
Released Apr 14 2026
Last Updated Apr 14 2026
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.5585 — 0.98954 percentile
NVD CVSS 9.8 CRITICAL — matches MSRC

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C
ATTACK VECTOR
Network
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
None
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
High
AVAILABILITY
High
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 8.5

EPSS Score

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

Affected Products

27 affected products
Product KB Article Severity Impact Restart Required
Windows 10 Version 1607 for 32-bit Systems 5082198 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 1607 for x64-based Systems 5082198 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 1809 for 32-bit Systems 5082123 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 1809 for x64-based Systems 5082123 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 21H2 for 32-bit Systems 5082200 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 21H2 for ARM64-based Systems 5082200 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 21H2 for x64-based Systems 5082200 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 22H2 for 32-bit Systems 5082200 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 22H2 for ARM64-based Systems 5082200 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 22H2 for x64-based Systems 5082200 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 23H2 for ARM64-based Systems 5082052 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 23H2 for x64-based Systems 5082052 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 24H2 for ARM64-based Systems 5083769 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 24H2 for x64-based Systems 5083769 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 25H2 for ARM64-based Systems 5083769 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 25H2 for x64-based Systems 5083769 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 26H1 for ARM64-based Systems 5083768 (Security Update) Critical Remote Code Execution Yes
Windows 11 version 26H1 for x64-based Systems 5083768 (Security Update) Critical Remote Code Execution Yes
Windows Server 2016 5082198 (Security Update) Critical Remote Code Execution Yes
Windows Server 2016 (Server Core installation) 5082198 (Security Update) Critical Remote Code Execution Yes
Windows Server 2019 5082123 (Security Update) Critical Remote Code Execution Yes
Windows Server 2019 (Server Core installation) 5082123 (Security Update) Critical Remote Code Execution Yes
Windows Server 2022 5082142 (Security Update) Critical Remote Code Execution Yes
Windows Server 2022 (Server Core installation) 5082142 (Security Update) Critical Remote Code Execution Yes
Windows Server 2022, 23H2 Edition (Server Core installation) 5082060 (Security Update) Critical Remote Code Execution Yes
Windows Server 2025 5082063 (Security Update) Critical Remote Code Execution Yes
Windows Server 2025 (Server Core installation) 5082063 (Security Update) Critical Remote Code Execution Yes

Patches

9 patches
Article Type Restart
5082198 Security Update Yes
5082123 Security Update Yes
5082200 Security Update Yes
5082052 Security Update Yes
5083769 Security Update Yes
5083768 Security Update Yes
5082142 Security Update Yes
5082060 Security Update Yes
5082063 Security Update Yes

Patch Diff

ghidriff · ikeext.dll (KB5083769)

Remote, pre-auth double free (CWE-415) in the Windows IKE Extension service (ikeext.dll), reachable on UDP/500 and UDP/4500 with no authentication. During an IKE_SA_INIT exchange a Microsoft Security Realm Vendor ID payload makes IkeHandleSecurityRealmVendorId allocate a heap blob and store the pointer in the MMSA (Main Mode SA) at offset 0x208. When a fragmented IKE_AUTH message is reassembled, IkeReinjectReassembledPacket copies MMSA fields 0x178-0x21F (including the 0x208 blob pointer) into a stack struct, and IkeQueueRecvRequest shallow-copies it into a heap work item - so work_item+0xC8 ALIASES MMSA+0x208 (the reassembly buffer at 0x10 is deep-copied, but the blob pointer is not). Thread-pool processing calls IkeDestroyPacketContext -> WfpMemFree(work_item+0xC8) = FIRST free; later MMSA teardown (IkeCleanupMMNegotiation -> IkeDerefMMSA -> IkeFreeMMSA) frees MMSA+0x208 = SECOND free of the same allocation. Attacker sends IKE_SA_INIT (with the Security Realm Vendor ID) then >=2 SKF fragment payloads (type 0x35) carrying an invalid IKE_AUTH. Service runs as SYSTEM. IN-HOUSE ghidriff diff of 10.0.26100.7920 -> .8246 confirms the fix: IkeReinjectReassembledPacket now deep-copies the blob via IkeCopyBlob into a local and frees the COPY (not the aliased original), and IkeFreeMMSA/IkeBeginLifeExpireInplaceRekeyIkeV2 gain the same pattern - all GATED behind CFR flag Feature_3844326713, so both the aliasing and deep-copy paths ship in .8246. Credit: WARP & MORSE team at Microsoft; public analysis Richard Chen & Lucas Miller (TrendAI/ZDI).

Pre-patch version 10.0.26100.7920 Download
Post-patch version 10.0.26100.8246 Download
Function Address Change Note
IkeReinjectReassembledPacket 78% match code (deep-copy of Security Realm blob added, CFR-gated) Pre: blob pointer at param_3[0x12] copied directly into the stack struct (local_50 = param_3[0x12]); only the reassembly buffer (local_108) was freed. Post (Feature_3844326713 enabled): local_50 zeroed, and if param_3[0x12] != 0 the blob is deep-copied via IkeCopyBlob into &uStack_58; at exit, when the feature is on and the queue request succeeded, WfpMemFree(&local_50) frees the COPY. Removes the alias between work_item+0xC8 and MMSA+0x208.
IkeFreeMMSA 98% match code (feature-gated free of MMSA+0x208) Updated with the same feature-gate pattern so MMSA+0x208 is only freed when the work item does not own a separate copy, preventing the second free.
IkeBeginLifeExpireInplaceRekeyIkeV2 25% match code (same deep-copy pattern for the rekey path) Adds IkeCopyBlob + WfpMemFree under Feature_3844326713 for the IKEv2 rekey path.
IkeHandleSecurityRealmVendorId source (allocation site) Allocates the Security Realm blob during IKE_SA_INIT and stores the pointer at MMSA+0x208 - the allocation that ends up double-freed.
View full diff report View RCA report

Attack Path

A Security Realm blob pointer is shallow-copied during IKEv2 fragment reassembly, aliasing the MMSA field and getting freed twice

Attack path for CVE-2026-33824 A Security Realm blob pointer is shallow-copied during IKEv2 fragment reassembly, aliasing the MMSA field and getting freed twice 01 — ENTRY Remote unauthenticated attacker sends IKE_SA_INIT to UDP/500 or UDP/4500 ikeext.dll (IKEEXT service, SYSTEM) listens pre-auth on 500/4500. The IKE_SA_INIT carries a Microsoft Security Realm Vendor ID payload (68 6a 8c bd fe 63 4b 40 51 46 fb 2b af 33 e9 e8). 02 — CONTROLLED INPUT Vendor ID makes IkeHandleSecurityRealmVendorId allocate a blob at MMSA+0x208 A heap blob is allocated and its pointer stored in the Main Mode Security Association structure at offset 0x208. 03 — PATH Attacker sends >=2 SKF fragments (type 0x35) with an invalid IKE_AUTH; reassembly shallow-copies the blob pointer IkeReinjectReassembledPacket copies MMSA+0x178..0x21F (including the 0x208 blob ptr) into a stack struct; IkeQueueRecvRequest shallow-copies it into a heap work item, so work_item+0xC8 aliases MMSA+0x208. The reassembly buffer at 0x10 is deep-copied; the blob pointer is not. 04 — MISSING CHECK Two owners of one allocation: work_item+0xC8 and MMSA+0x208 alias The blob pointer now has two independent owners that will each free it. Nothing tracks that the work item's copy aliases the MMSA field. 05 — PRIMITIVE Double free (WfpMemFree twice) in the SYSTEM IKEEXT service -> RCE/DoS Thread-pool processing: IkeDestroyPacketContext -> WfpMemFree(work_item+0xC8) = first free. MMSA teardown: IkeCleanupMMNegotiation -> IkeDerefMMSA -> IkeFreeMMSA -> WfpMemFree(MMSA+0x208) = second free. Double free of the same allocation -> service crash or, under heap grooming, code execution as SYSTEM. The April fix deep-copies the blob (IkeCopyBlob) so the copy is freed instead of the aliased original - gated behind CFR flag Feature_3844326713.

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

WARP & MORSE team at Microsoft