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
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) |
noisgate verdict.
The single most decisive factor is the wormable, unauthenticated, network-level RCE against a service that runs as SYSTEM on every Windows VPN gateway in the fleet — a canonical network-edge and infrastructure role where successful exploitation yields immediate domain-adjacent access. Active KEV listing and a public PoC confirm this is not theoretical; the attack path has zero authentication gates, zero user interaction requirements, and the blast radius extends from a single VPN gateway to fleet-wide propagation.
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.
What to do — in priority order.
- Block UDP 500 and 4500 from untrusted sources at the perimeter firewall immediately — The exploit requires sending crafted IKE packets to these ports. Restrict inbound UDP 500/4500 to an explicit allowlist of known VPN peer IP addresses. This eliminates the unauthenticated internet attack vector. Deploy within the noisgate mitigation SLA of ≤ 3 days for CRITICAL findings.
- Set IKEEXT service to Disabled on hosts not using IPsec or VPN — Many Windows workstations and servers have IKEEXT in demand-start mode but never actually use IPsec. Disabling the service via GPO (
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. - Deploy IDS/IPS signatures for CVE-2026-33824 — Snort/Suricata rules from Talos and ET Open cover malformed IKE_SA_INIT and SKF fragment sequences. Deploy these on perimeter and internal NDR sensors to detect exploitation attempts and worm propagation. Enable in blocking mode on inline IPS where possible.
- Enable host-based firewall rules blocking inter-host UDP 500/4500 — To prevent internal worm propagation, deploy Windows Firewall rules via GPO that restrict UDP 500/4500 to only the designated VPN gateway IPs. This breaks the worm's lateral movement path even if one host is compromised.
- Apply April 2026 cumulative updates to all affected systems — This is the definitive fix. Prioritize VPN gateways, RRAS servers, domain controllers, and Hyper-V hosts. Use the noisgate remediation SLA of ≤ 90 days, but given KEV status, target internet-facing systems within hours to 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.
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 1If you remember one thing.
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
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.