An unlocked blast door on every Windows VPN gateway, and the worm is already crawling through
CVE-2026-33824 is a double-free memory corruption vulnerability in ikeext.dll, the Windows IKE Extension responsible for IKEv2 negotiation used by IPsec VPNs, Always On VPN, DirectAccess, and site-to-site tunnels. During IKEv2 fragment reassembly, IkeReinjectReassembledPacket() performs a shallow copy of a heap-allocated blob pointer. When the work item is destroyed via IkeDestroyPacketContext, the allocation is freed once; it is freed again when the MMSA is cleaned up through IkeCleanupMMNegotiation. An unauthenticated attacker triggers this by sending a crafted IKE_SA_INIT (with Microsoft Security Realm Vendor ID) followed by fragmented IKE_AUTH payloads to UDP port 500 or 4500. All supported Windows 10 (1607+), Windows 11, and Windows Server 2016–2025 are affected. The April 2026 Patch Tuesday updates fix the issue.
Microsoft's CRITICAL / 9.8 rating is accurate and, if anything, undersells the operational urgency. The CVSS vector — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — perfectly describes the attack: zero auth, zero interaction, low complexity, full impact. ZDI explicitly flagged this as wormable. CISA added it to the KEV catalog, EPSS sits at the 55th percentile (0.5585), and a public PoC (EpSiLoNPoInTIkEv2.cpp) has been circulating since at least mid-2026. There is no friction to discount here — this is the real deal.
5 steps from start to impact.
Identify IKE listeners
port:500 return millions of IKE endpoints globally, a meaningful share of which are Windows.- Target host has IKEEXT service running and listening on UDP 500 or 4500
- Network path to target port is open (no firewall blocking UDP 500/4500)
- Well-configured perimeter firewalls restrict UDP 500/4500 to known VPN peer IPs only
- Hosts not configured for VPN may have IKEEXT in manual/demand-start mode
Send crafted IKE_SA_INIT with Microsoft Vendor ID
ikeext.dll is engaged.- Ability to send crafted UDP packets to target
- None — standard IKEv2 negotiation, no authentication gate
Deliver fragmented IKE_AUTH triggering double free
IkeReinjectReassembledPacket(). The shallow-copied blob pointer creates an alias. When the packet context is destroyed, the first free occurs. The subsequent MMSA cleanup via IkeCleanupMMNegotiation frees the same allocation again, corrupting the heap.- Target entered IKE_SA_INIT negotiation state from step 2
- Heap layout must be groomed for reliable code execution (PoC exists but reliability may vary across OS builds)
- ASLR and CFG on modern Windows add exploit development complexity
Achieve SYSTEM-level code execution
- Successful heap grooming and exploitation from step 3
- Windows exploit mitigations (ASLR, CFG, heap hardening) reduce reliability but do not prevent exploitation — the PoC demonstrates bypass
svchost.exe hosting IKEEXT; crash dumps in IKEEXT service; Windows Event ID 7034 (service crash)Lateral movement or worm propagation
- SYSTEM access on compromised host
- Other Windows hosts on the network with IKEEXT service reachable
- Microsegmentation or host-based firewalls blocking inter-host UDP 500/4500
- Network detection of lateral IKE scanning
sc config IKEEXT start= disabled) eliminates the attack surface entirely on those hosts. Audit which hosts actually need IKE before disabling. Deploy within 3 days.- MFA on the VPN — MFA protects VPN *authentication* but CVE-2026-33824 is exploited during IKEv2 *negotiation* before any authentication occurs. MFA is irrelevant.
- WAF or reverse proxy — This is a UDP-based attack on ports 500/4500, not HTTP traffic. Web application firewalls provide zero coverage.
- EDR alone — While EDR may detect post-exploitation behavior, the initial compromise occurs in a kernel-adjacent service (SYSTEM-level svchost) via memory corruption. EDR will not block the network packet that triggers the double free. EDR is a detection layer, not a prevention control for this CVE.
- Network-level IPsec encryption — Ironically, using IPsec *requires* the vulnerable IKE service to be running and reachable. IPsec does not protect against attacks on the IKE negotiation itself.
The supporting signals.
| In-the-Wild Exploitation | Confirmed. CISA added CVE-2026-33824 to the Known Exploited Vulnerabilities catalog. ZDI flagged the bug as wormable. Reports indicate a Chinese-speaking adversary group has conducted manual exploitation operations. |
|---|---|
| Proof of Concept | Public. EpSiLoNPoInTIkEv2.cpp circulating in community PoC repos (e.g., SecureWithUmer/CVE-2026-PoCs on GitHub). Originally analyzed by Richard Chen and Lucas Miller (TrendAI Research Team). |
| EPSS Score | 0.5585 — indicates a significant probability of exploitation activity, well above the median for all CVEs. |
| KEV Status | Listed. Added to CISA KEV catalog (July/August 2026). Ransomware use: *unknown* per CISA. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8) — Full-scope unauthenticated network RCE with no user interaction. Every metric is worst-case except Scope (Unchanged). |
| Affected Versions | All supported Windows: Windows 10 (1607, 1809, 22H2), Windows 11 (23H2, 24H2, 25H2), Windows Server 2016, 2019, 2022, 2025. Any system with IKEEXT service reachable. |
| Fixed Versions | April 2026 Patch Tuesday cumulative updates: Win10 22H2 → KB5082200, Win11 25H2/24H2 → KB5083769, Win11 23H2 → KB5082052, Server 2025 → KB5082063, plus corresponding KBs for Server 2016/2019/2022. |
| Scanning / Exposure | IKE (UDP 500) is a widely exposed service on VPN gateways, RRAS servers, and Always On VPN endpoints. Any internet-facing Windows VPN gateway is a direct target. Internal hosts with IKEEXT in demand-start mode are reachable post-initial-compromise for worm propagation. |
| Disclosure Date | 2026-04-14 (Microsoft April 2026 Patch Tuesday) |
| Reporting Researcher | WARP & MORSE team (Microsoft internal discovery); independent analysis by Richard Chen and Lucas Miller (TrendAI Research / Zero Day Initiative) |
Sources.
- ZDI Technical Analysis — CVE-2026-33824 IKEv2 RCE
- Security Boulevard — Windows IKE RCE Advisory
- Integrity360 Threat Advisory — CVE-2026-33824
- CrowdStrike April 2026 Patch Tuesday Analysis
- CISA Known Exploited Vulnerabilities Catalog
- Tenable — April 2026 Patch Tuesday (163 CVEs)
- SentinelOne Vulnerability Database — CVE-2026-33824
Why this verdict
- Zero friction in the kill chain: The attack is unauthenticated, requires no user interaction, uses low-complexity network packets to UDP 500/4500. There are no prerequisite compromises — the attacker goes from internet to SYSTEM in a single chain.
- Role multiplier: The affected component (IKEEXT/IKEv2) is canonically deployed on network-edge VPN gateways (RRAS, Always On VPN, DirectAccess) — these are internet-facing by definition. On domain controllers running IPsec transport-mode policies, exploitation yields immediate DA-equivalent access. On Hyper-V hosts using IPsec for live migration, compromise equals hypervisor takeover. ≥10% of Windows Server IKEEXT installations occupy a high-value network-edge or DC role. The blast radius is fleet-scale via worm propagation. Verdict floor: CRITICAL.
- Wormable + KEV + public PoC: ZDI explicitly labeled this wormable. CISA KEV-listed it. A working PoC (
EpSiLoNPoInTIkEv2.cpp) is public. EPSS at 0.5585 confirms high exploitation probability. This combination eliminates any theoretical-only discount. - Universal affected population: Every supported Windows version (10, 11, Server 2016–2025) ships with
ikeext.dll. The service starts on demand when any IPsec or VPN policy is configured — which is standard for enterprise networks.
Why not higher?
The CVSS 9.8 is already the practical ceiling for a Scope:Unchanged vulnerability. A 10.0 would require Scope:Changed. The vendor score is the maximum applicable score and there is no basis to exceed it.
Why not lower?
Downgrading would require identifying meaningful friction or a narrow affected population — neither exists here. The attack is unauthenticated and network-level, the affected component is a canonical network-edge service, the bug is wormable, it is KEV-listed with active exploitation, and a public PoC is available. Any single one of these factors would anchor the verdict at HIGH; together they cement CRITICAL. The role multiplier floor alone (network-edge VPN appliance, domain controllers with IPsec) prevents any downgrade below CRITICAL.
Crowdsourced verification payload.
Run this script on each target Windows host as Administrator. It checks whether the IKEEXT service is present and running, and whether the installed OS build includes the April 2026 fix. Example: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-33824.ps1. Requires local admin privileges.
#Requires -RunAsAdministrator
<# Check-CVE-2026-33824.ps1
Checks whether the host is vulnerable to CVE-2026-33824 (Windows IKE Double Free)
Outputs: VULNERABLE / PATCHED / UNKNOWN
#>
$ErrorActionPreference = 'Stop'
# Patched KB list (April 2026 cumulative updates)
$patchedKBs = @('KB5082200','KB5083769','KB5082052','KB5082063','KB5082123','KB5082198')
# Check if IKEEXT service exists and its status
try {
$svc = Get-Service -Name 'IKEEXT' -ErrorAction Stop
$svcStatus = $svc.Status
$svcStart = $svc.StartType
} catch {
Write-Host '[*] IKEEXT service not found on this host.'
Write-Host 'UNKNOWN - IKEEXT service absent; host may be non-standard build.'
exit 2
}
Write-Host "[*] IKEEXT service found: Status=$svcStatus, StartType=$svcStart"
# Check installed hotfixes for patched KBs
$installedKBs = Get-HotFix | Select-Object -ExpandProperty HotFixID
$matched = $patchedKBs | Where-Object { $installedKBs -contains $_ }
if ($matched.Count -gt 0) {
Write-Host "[+] Patched KB detected: $($matched -join ', ')"
Write-Host 'PATCHED'
exit 0
}
# Fallback: check OS build number (April 2026 builds)
$osBuild = [System.Environment]::OSVersion.Version
$buildRevision = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').UBR
$buildStr = "$($osBuild.Build).$buildRevision"
Write-Host "[*] OS Build: $buildStr"
# Known patched build thresholds (build.revision)
$patchedBuilds = @{
'19045' = 7184 # Win10 22H2
'22631' = 6936 # Win11 23H2
'26100' = 8246 # Win11 24H2 / Server 2025
'26200' = 8246 # Win11 25H2
}
$buildKey = $osBuild.Build.ToString()
if ($patchedBuilds.ContainsKey($buildKey)) {
if ($buildRevision -ge $patchedBuilds[$buildKey]) {
Write-Host "[+] OS build revision $buildRevision >= patched threshold $($patchedBuilds[$buildKey])"
Write-Host 'PATCHED'
exit 0
} else {
Write-Host "[-] OS build revision $buildRevision < patched threshold $($patchedBuilds[$buildKey])"
}
}
# If IKEEXT exists and no patch detected
if ($svcStart -eq 'Disabled') {
Write-Host '[!] IKEEXT service is Disabled — attack surface removed but host is unpatched.'
Write-Host 'VULNERABLE (mitigated - service disabled)'
exit 1
}
Write-Host '[-] No patched KB or build revision found. IKEEXT service is present and not disabled.'
Write-Host 'VULNERABLE'
exit 1