CVE-2026-33824 — Windows IKE Extensions (IKEEXT) Double-Free Remote Code Execution HuntPack
Executive Summary
CVE-2026-33824 is a critical (CVSS 9.8) double-free vulnerability (CWE-415) in the Windows IKE and AuthIP IPsec Keying Modules service extension (ikeext.dll, the IKEEXT service), reachable by sending specially crafted, fragmented IKEv2 packets to UDP port 500 or 4500 (NAT-T). Per Zero Day Initiative's technical writeup, IkeReinjectReassembledPacket() shallow-copies a Main Mode Security Association (MMSA) blob pointer (structure offset 0x208) into a stack variable while IkeQueueRecvRequest() deep-copies the reassembly buffer but not that pointer; the work-item thread's IkeDestroyPacketContext() frees the blob once, and a later IkeCleanupMMNegotiation() → IkeDerefMMSA() → IkeFreeMMSA() call frees the same allocation a second time. The trigger is a crafted IKE_SA_INIT message followed by two or more Encrypted Fragment (SKF) payloads containing an invalid IKE_AUTH message — no authentication and no user interaction are required, and because IKEEXT runs as SYSTEM, successful exploitation yields SYSTEM-level remote code execution. Microsoft patched it in the April 2026 security update cycle (ZDI disclosure 2026-04-22).
On 2026-08-18, CISA added CVE-2026-33824 to the Known Exploited Vulnerabilities (KEV) catalog with a short (3-day) federal remediation deadline. The trigger was Palo Alto Networks Unit 42's report "Chinese-Speaking Threat Actor Harnesses AI Models for Autonomous Cyberattacks", which documents a Zhuhai, China-based actor (aliases knaithe / KnYuan) who, as part of a broader campaign combining autonomous DeepSeek/Hermes-Agent-driven exploitation with hands-on-keyboard activity, manually sent reverse-shell callback attempts against three internet-facing IKE VPN endpoints using this CVE. Unit 42 is explicit that this activity was manual, separate from the actor's autonomous-AI attempts against other CVEs, and the campaign-wide "460+ targets" figure is not the CVE-2026-33824 victim count — only 3 endpoints were targeted through this flaw.
Exploitation is four months after patch availability, meaning every internet-reachable Windows IKE responder (RRAS/IKEv2 VPN gateway, IPsec-secured server-to-server link, DirectAccess/Always On VPN server) still running an unpatched build is at immediate risk. The CVSS vector (AV:N/AC:L/PR:N/UI:N) places this in the same wormable class as EternalBlue/BlueKeep-style flaws, though no self-propagating/worm activity has been observed in the wild as of 2026-08-20 — only the three manually-targeted endpoints reported by Unit 42.
Defender priority: Patch every Windows host that runs an IKE responder role immediately, then hunt for the exploitation signature: unexpected restarts of the svchost.exe process hosting IKEEXT, crash/fault telemetry referencing ikeext.dll, an unexpected child process spawned from that svchost.exe, and any outbound connection from that process or its child (the reverse-shell pivot).
IOC provenance note: No atomic IOCs (source IPs, callback destinations, or file hashes) have been publicly disclosed for the in-the-wild IKE exploitation as of 2026-08-20. Unit 42's own report describes the IKE activity as manual reverse-shell attempts against three endpoints but publishes no IKE-specific indicators; the IOCs it does publish (AI-model API and proxy hosts plus Telegram C2) belong to the actor's broader AI-tooling infrastructure, not confirmed IKE callback infrastructure. Gridinsoft's analysis independently confirms: "the public evidence confirms attempts to obtain a reverse shell, but it does not provide a unique IKE-specific file hash, process name, or complete victim count." This pack is therefore intentionally behavioral. Every IOC-appendix atomic field ships as a labelled REPLACE_WITH_… placeholder — nothing is fabricated.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Fwd |
|---|---|---|---|
| 1 | Zero Day Initiative — CVE-2026-33824 technical writeup (2026-04-22) | Root-cause: double-free via IkeReinjectReassembledPacket shallow-copy of MMSA blob pointer (offset 0x208); freed first by IkeDestroyPacketContext, freed again by IkeCleanupMMNegotiation→IkeDerefMMSA→IkeFreeMMSA. Trigger: IKE_SA_INIT + 2+ SKF fragments forming an invalid IKE_AUTH. Credits WARP & MORSE (Microsoft) and TrendAI Research (Richard Chen, Lucas Miller). | yes |
| 1 | Palo Alto Networks Unit 42 — "Chinese-Speaking Threat Actor Harnesses AI Models for Autonomous Cyberattacks" (primary source, located via search) | Actor knaithe/KnYuan (Zhuhai, China) manually sent reverse-shell callbacks against 3 IKE VPN endpoints via CVE-2026-33824, distinct from the actor's autonomous DeepSeek/Hermes-Agent attempts against other CVEs. Campaign observed ~2026-05-07. No IKE-specific atomic indicators published. | yes |
| 2 | The Hacker News — KEV roundup (2026-08) | Confirms CISA KEV addition 2026-08-18; CVSS 9.8; attributes Unit 42 finding of Chinese-speaking actor exploitation alongside AI-enabled campaign context. Does not independently detail the reverse-shell mechanics. | yes |
| 2 | cvefeed.io — CVE detail page | CWE-415 (Double Free); KEV listed 2026-08-18, remediation due 2026-08-21; 16 affected Microsoft products across Windows 10/11 and Server 2016–2025 branches. | yes |
| 2 | SentinelOne Vulnerability Database (correct CVE URL — see note) | Full CVSS vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H; UDP 500/4500 attack surface; lists behavioral detection guidance (IKEEXT crashes, ikeext.dll fault events, anomalous svchost.exe child processes) that independently corroborates this pack's detection design. | yes |
| 2 | Gridinsoft Blog — exploitation writeup | Scopes real-world exposure (ordinary PCs not at risk unless acting as an internet-reachable IKE responder); explicitly states no IKE-specific hash/process name/victim count has been published; recommends patch + exposure audit. | yes |
Sources deliberately not used: the task-supplied SentinelOne URL for CVE-2026-68820 was verified to be a different, unrelated CVE and was not used; the correct CVE-2026-33824 SentinelOne URL was located and used instead. CVE-2026-68820 (Lazarus / AFD.sys / Operation Dream Job) is a separate, already-published HuntPack and is not referenced here.
Carry-forward decision: Build a behavioral pack anchored on the ZDI root-cause writeup (which process/DLL/service is involved and why it crashes) and the Unit 42 primary source (confirms manual reverse-shell exploitation against 3 endpoints, no atomic IOCs). No third-party indicator is imported as fact.
Hunt Brief & Attack Chain
Hunt hypotheses (ordered by fidelity)
- H1 (high): The
svchost.exeprocess hostingIKEEXT(command line contains-s IKEEXT) launches/restarts more than once on a host outside of a normal boot — the Service Control Manager auto-restarting a service whose host process just crashed is the earliest, lowest-cost signal of an exploitation attempt (successful or failed). - H2 (high): A child process is spawned from the
IKEEXT-hostingsvchost.exe— in benign operation this service never spawns child processes, so any child process is a strong RCE/pivot signal. - H3 (high): The
IKEEXT-hostingsvchost.exeprocess itself opens an outbound network connection — possible in-process reverse-shell callback without a distinct child process. - H4 (high): A process that is a child of the
IKEEXT-hostingsvchost.exeopens an outbound network connection — the two-hop reverse-shell chain matching Unit 42's "manually sent reverse-shell callback" description. - H5 (medium, native only): Windows Security log records repeated IPsec Main Mode negotiation failures (Event ID 4653) from a single external source — the network-level probing/exploitation signature. Falcon EDR does not parse IKE protocol payloads, so this is a native audit-log hunt, not a CQL query.
- H6 (medium, native only): Windows System log records Service Control Manager crash events (7031/7034) for
IKEEXT, or Application log records a WER crash (Event ID 1000/1001) with faulting moduleikeext.dll— the most direct native crash signature. - H7 (medium): Post-compromise persistence — a service or scheduled task is created by a process descending from the compromised
IKEEXTsvchost.exeshortly after the crash/restart window. - H8 (scoping, not an attack signal): Attack-surface baseline — identify which hosts have an active listener on UDP 500/4500 to prioritize patching and hunting.
Attack chain
| # | Step | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Recon: identify an internet-reachable Windows IKE responder (RRAS/IKEv2 gateway, IPsec server-to-server link) | Falcon NetworkListenIP4; perimeter scan telemetry | Exposure baseline (H8) |
| 2 | Send crafted IKE_SA_INIT + 2+ SKF fragments forming an invalid IKE_AUTH to UDP 500/4500 | Windows Security log (Event ID 4653); perimeter firewall/IDS UDP 500/4500 flow logs | Native probing hunt (H5) |
| 3 | Double-free triggers inside ikeext.dll within the IKEEXT-hosting svchost.exe (SYSTEM) | Windows System/Application log (7031/7034, WER 1000/1001 faulting module ikeext.dll) | Native crash hunt (H6) |
| 4a | Failed/probing attempt: process crashes, Service Control Manager restarts it | Falcon ProcessRollup2 — repeated svchost.exe -s IKEEXT launches | Crash-restart hunt (H1) |
| 4b | Successful exploitation: attacker gains SYSTEM code execution inside the IKEEXT svchost.exe | Falcon ProcessRollup2 parent/child correlation | Child-process pivot hunt (H2) |
| 5 | Reverse-shell callback opened from the compromised svchost.exe or its child (Unit 42's observed "manual reverse-shell callback attempts") | Falcon NetworkConnectIP4 joined to the IKEEXT PID chain | Reverse-shell hunt (H3, H4) |
| 6 | Post-compromise persistence (optional) | Falcon ProcessRollup2 — sc.exe/schtasks.exe descending from the PID chain | Persistence hunt (H7) |
| 7 | (Unconfirmed ITW) Wormable re-targeting of other IKE-exposed hosts from the new SYSTEM foothold | Falcon NetworkConnectIP4 to UDP 500/4500 destinations from a host with an H2/H4 hit | Coverage gap — no worm behavior observed as of 2026-08-20; monitor for it |
Consolidated IOC Table
No public atomic IOCs for the in-the-wild IKE exploitation. No source reviewed for this pack publishes an attacker source IP, reverse-shell callback IP/domain, or file hash tied specifically to the CVE-2026-33824 exploitation against the three Unit 42-observed endpoints. Per this pack's provenance rule, nothing is fabricated. The rows below are behavioral / log-based — that is the available hunt surface today.
| Type | Value / Signature | Confidence | Action | Context / Source |
|---|---|---|---|---|
| Process behavior | Repeated launch of svchost.exe -s IKEEXT on the same host outside a boot event | high | hunt | Crash-restart signature. ZDI root cause + SentinelOne behavioral guidance. |
| Process behavior | Any child process of the IKEEXT-hosting svchost.exe | high | hunt | IKEEXT does not spawn children in benign operation. SentinelOne behavioral guidance. |
| Network behavior | Outbound connection from the IKEEXT svchost.exe or a descendant process | high | hunt | Matches Unit 42's "manually sent reverse-shell callback" description; no destination published. |
| Windows event log | Event ID 7031/7034 (Service Control Manager) for IKEEXT; Event ID 1000/1001 (WER) faulting module ikeext.dll | high | hunt | Direct native crash signature. Windows Event Log reference; SentinelOne guidance. |
| Windows event log | Event ID 4653 — IPsec Main Mode negotiation failed, repeated from a single external source | medium | hunt | Network-level probing/exploitation attempt. Requires IPsec Main Mode auditing enabled. |
| Attack surface | Host with an active listener on UDP 500 or UDP 4500 reachable from outside trusted ranges | medium | scope | Exposure baseline, not an attack signal. Gridinsoft exposure framing. |
| Atomic (unpublished) | REPLACE_WITH_ATTACKER_SOURCE_IP | n/a | populate locally | No public IOC disclosed as of 2026-08-20 — populate from your own Unit 42 threat-intel feed or observed exploitation. |
| Atomic (unpublished) | REPLACE_WITH_C2_CALLBACK_IP | n/a | populate locally | No public IOC disclosed as of 2026-08-20 — populate from your own Unit 42 threat-intel feed or observed exploitation. |
If your own IR produces a verified reverse-shell destination or dropped-tool hash from an actual CVE-2026-33824 exploitation event, add it to the Falcon IOC-Management CSV in §10 with action=detect and a documented expiry — but only from first-party evidence.
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Internet-facing Windows RRAS / IKEv2 VPN gateways | Falcon EDR (ProcessRollup2, NetworkConnectIP4, NetworkListenIP4); Windows Security/System/Application event logs | critical | High — VPN gateways are frequently under-instrumented or excluded from EDR |
| Windows IPsec server-to-server links / DirectAccess / Always On VPN | Same as above | high | Medium |
Internal Windows hosts with IKEEXT present but UDP 500/4500 restricted | Falcon EDR process/network telemetry | medium | Low — smaller blast radius, still needs patch |
| Windows Event Log (Security — IPsec Main Mode auditing) | Event ID 4653; requires Advanced Audit Policy enabled and forwarded to SIEM | high | High — IPsec Main Mode auditing is off by default in most environments |
| Perimeter firewall / NGFW / IDS (UDP 500/4500 flow & fragmentation) | NetFlow/IPFIX or vendor IPS log with a CVE-2026-33824 signature | high | High — protocol-level fragmentation anomaly detection is vendor/signature dependent |
Prerequisite: §8 CQL queries Q1–Q4 assume Falcon sensor coverage on the IKE-capable host itself. §7 native hunts (Windows Event Log) require IPsec Main Mode auditing to be explicitly enabled (it is not on by default) before Event ID 4653 will populate.
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1190 Exploit Public-Facing Application | Crafted fragmented IKEv2 packets trigger the double-free in ikeext.dll | Q1, Q5, native H5/H6 / Patch (M1051), restrict exposure (M1030) |
| Initial Access | T1210 Exploitation of Remote Services | Unauthenticated RCE against the exposed IKEEXT service | Q1–Q4 / Patch, NIPS signature (M1031) |
| Execution | T1059.001 / T1059.003 Command and Scripting Interpreter | Child process (shell/interpreter) spawned from the compromised IKEEXT svchost.exe | Q2, Q4 / ASR, Custom IOA (§9) |
| Command and Control | T1071 Application Layer Protocol / T1219 Remote Access Software | Reverse-shell callback from the compromised process or its child (protocol unconfirmed publicly) | Q3, Q4 / Egress filtering (M1037) |
| Persistence | T1543.003 Windows Service / T1053.005 Scheduled Task | Service or task created by a process descending from the compromised IKEEXT svchost.exe | Q6 / Application control (M1038) |
| Defense Evasion (gap) | T1055 Process Injection | In-process shellcode execution with no new child process would evade Q2/Q4 — only Q1 (crash-restart) or Q3 (in-process outbound connection) would catch it | Q1, Q3 / see §15 Coverage Map gap note |
| Impact (failed attempts) | Related to CWE-415 crash behavior | Repeated IKEEXT service crash/restart with no follow-on process (probing, not successful RCE) | Q1, native H6 |
Native Audit-Log Hunts (Windows Event Log)
Falcon EDR does not parse IKE protocol payloads, so the network-level probing signature and the most direct crash signature live in native Windows Event Log channels. Run these on candidate IKE-responder hosts, or ship the channels below to your SIEM.
7.1 — Enable and hunt IPsec Main Mode negotiation failures (network-level probing signal)
Enable auditing (off by default):
auditpol /set /subcategory:"IPsec Main Mode" /success:enable /failure:enable
auditpol /set /subcategory:"IPsec Extended Mode" /success:enable /failure:enable
Hunt (Windows Security log):
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4653} |
Select TimeCreated, Message
Review the source address and negotiation-failure reason for each hit.
Many failures from one external source in a short window = probing or
active exploitation attempts against the IKE responder.
7.2 — IKEEXT service crash / restart (System log)
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7031,7034} |
Where-Object { $_.Message -match 'IKEEXT' } |
Select TimeCreated, Id, Message
Event ID 7031: "The IKEEXT service terminated unexpectedly."
Event ID 7034: "... This has happened N time(s)." (repeat-crash counter
is itself a strong exploitation-attempt signal — legitimate services
essentially never crash-loop.)
7.3 — Application crash referencing ikeext.dll (Windows Error Reporting)
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000,1001} |
Where-Object { $_.Message -match 'ikeext\.dll' } |
Select TimeCreated, Id, Message
Event ID 1000 (Application Error) with Faulting module name = ikeext.dll
and Faulting application = svchost.exe is the single highest-fidelity
native signature that the double-free was actually triggered on this host.
7.4 — Perimeter / NGFW cross-check
If your perimeter firewall/NGFW/IDS vendor has published or auto-updated an IPS/IDS signature for CVE-2026-33824 since the 2026-08-18 KEV addition, enable it and cross-reference hits against §7.1/7.2/7.3 on the same host and time window. Vendor coverage is not verified in this pack — check with your specific perimeter vendor.
Automation stitch: alert the SOC in real time on any Event ID 7034 (repeat IKEEXT crash) or Event ID 1000 with faulting module ikeext.dll, even before the host's logs reach a SIEM.
CrowdStrike LogScale CQL Hunt Queries
All queries below run against Falcon EDR endpoint telemetry. Windows builds shared-service hosts, so svchost.exe -s IKEEXT is the identifying command-line signature; on very low-memory/legacy configurations Windows may share IKEEXT in a multi-service svchost.exe group, which changes the command-line shape — validate the exact command line in your fleet before deploying.
Looks for: the same host launching the IKEEXT-hosting svchost.exe more than once within a rolling window — in benign operation this process starts once at boot and runs continuously. FP: host reboots, Windows Update-driven service restarts, deliberate admin restart for maintenance — exclude the boot-time window and known patch/maintenance schedules.
// HUNT: IKEEXT-hosting svchost.exe restarts more than once (crash-restart signature) // MITRE: T1190, T1210 // CONF: high FP: medium COST: low | REQUIRES: Falcon EDR ProcessRollup2 // FALSE POSITIVES: host reboot, patch-driven service restart, deliberate admin restart // TUNING: exclude the first 5 minutes after host boot; exclude known patch-window hosts/times #event_simpleName=/^ProcessRollup2$/ | FileName=/^svchost\.exe$/i | CommandLine=/-s\s+IKEEXT/i | groupBy([aid, ComputerName, CommandLine], function=([count(TargetProcessId, as=launches, distinct=true), collect(@timestamp, limit=5)])) | rename(field=@timestamp, as=launchTimes) | launches >= 2 | table([ComputerName, aid, CommandLine, launches, launchTimes], limit=200)
Looks for: any process whose parent is the IKEEXT-hosting svchost.exe. IKEEXT handles IKE/IPsec negotiation internally and does not spawn child processes in benign operation, so this is a high-fidelity RCE signal. FP: low, but validate against shared-svchost group edge cases on legacy/low-RAM builds.
// HUNT: child process spawned from the IKEEXT-hosting svchost.exe // MITRE: T1210, T1059.001, T1059.003 // CONF: high FP: low COST: medium | REQUIRES: Falcon EDR ProcessRollup2 // FALSE POSITIVES: shared svchost service-group edge cases on legacy/low-RAM builds // TUNING: confirm -s IKEEXT is isolated (not grouped) in your fleet's svchost split before alerting #event_simpleName=ProcessRollup2 | FileName=/^svchost\.exe$/i | CommandLine=/-s\s+IKEEXT/i | rename(field=TargetProcessId_decimal, as=ParentProcessId_decimal) | join(query={#event_simpleName=ProcessRollup2}, field=[aid, ParentProcessId_decimal], include=[FileName, CommandLine, TargetProcessId_decimal, ImageFileName, @timestamp]) | table([ComputerName, aid, FileName, CommandLine, ImageFileName, TargetProcessId_decimal, @timestamp], limit=200)
Looks for: the IKEEXT svchost.exe process originating an outbound connection — it does not do this in benign operation (its own network activity is inbound IKE UDP negotiation, not outbound app connections). Catches in-process shellcode exploitation that never spawns a child (the T1055 gap noted in §6). FP: low.
// HUNT: outbound connection from the IKEEXT-hosting svchost.exe process itself // MITRE: T1071, T1219, T1055 // CONF: high FP: low COST: medium | REQUIRES: Falcon EDR ProcessRollup2, NetworkConnectIP4 // FALSE POSITIVES: shared svchost service-group edge cases on legacy/low-RAM builds // TUNING: confirm -s IKEEXT is isolated (not grouped) in your fleet's svchost split before alerting #event_simpleName=ProcessRollup2 | FileName=/^svchost\.exe$/i | CommandLine=/-s\s+IKEEXT/i | rename(field=TargetProcessId_decimal, as=ContextProcessId_decimal) | join(query={#event_simpleName=NetworkConnectIP4}, field=[aid, ContextProcessId_decimal], include=[RemoteAddressIP4, RemotePort, LocalPort, Protocol_decimal, @timestamp]) | table([ComputerName, aid, RemoteAddressIP4, RemotePort, LocalPort, @timestamp], limit=200)
Looks for: the two-hop chain matching Unit 42's "manually sent reverse-shell callback attempts" — a process spawned from the compromised IKEEXT svchost.exe that then makes its own outbound connection (e.g., cmd.exe/powershell.exe establishing the shell). This is the single most specific query in this pack for the reported activity. FP: low; Cost: high (double join) — scope the time window before running org-wide.
// HUNT: outbound connection from a child process of the IKEEXT-hosting svchost.exe (reverse-shell chain) // MITRE: T1210, T1059, T1071, T1219 // CONF: high FP: low COST: high | REQUIRES: Falcon EDR ProcessRollup2, NetworkConnectIP4 // FALSE POSITIVES: shared svchost service-group edge cases on legacy/low-RAM builds // TUNING: scope to a 7-30d window before running fleet-wide; confirm -s IKEEXT isolation in your build #event_simpleName=ProcessRollup2 | FileName=/^svchost\.exe$/i | CommandLine=/-s\s+IKEEXT/i | rename(field=TargetProcessId_decimal, as=ParentProcessId_decimal) | join(query={#event_simpleName=ProcessRollup2}, field=[aid, ParentProcessId_decimal], include=[TargetProcessId_decimal, FileName, CommandLine]) | rename(field=TargetProcessId_decimal, as=ContextProcessId_decimal) | join(query={#event_simpleName=NetworkConnectIP4}, field=[aid, ContextProcessId_decimal], include=[RemoteAddressIP4, RemotePort, @timestamp]) | table([ComputerName, aid, FileName, CommandLine, RemoteAddressIP4, RemotePort, @timestamp], limit=200)
Looks for: hosts with an active listener on IKE ports 500 or 4500, to prioritize which endpoints need urgent patch verification and the §7 native hunts. Not an attack signal — an inventory/exposure query.
// HUNT: hosts listening on UDP 500/4500 (IKE attack-surface baseline) // MITRE: T1190, T1210 (exposure context) // CONF: medium (scoping query, not an attack signal) FP: n/a COST: low | REQUIRES: Falcon EDR NetworkListenIP4 // FALSE POSITIVES: n/a — this is an inventory query // TUNING: none required; re-run periodically as fleet composition changes #event_simpleName=NetworkListenIP4 | in(LocalPort, values=[500, 4500]) | table([ComputerName, aid, LocalAddressIP4, LocalPort, @timestamp], limit=200)
Looks for: a new service or scheduled task created by a process descending from the compromised IKEEXT svchost.exe — the persistence step after initial RCE. FP: low; legitimate IKEEXT-descended sc.exe/schtasks.exe activity should not exist.
// HUNT: sc.exe/schtasks.exe create spawned from a child of the IKEEXT-hosting svchost.exe // MITRE: T1543.003, T1053.005 // CONF: medium FP: low COST: medium | REQUIRES: Falcon EDR ProcessRollup2 // FALSE POSITIVES: none expected; flag any hit as a confirmed persistence event // TUNING: extend the join depth if attackers proxy through an extra hop (e.g. cmd.exe /c) #event_simpleName=ProcessRollup2 | FileName=/^svchost\.exe$/i | CommandLine=/-s\s+IKEEXT/i | rename(field=TargetProcessId_decimal, as=ParentProcessId_decimal) | join(query={#event_simpleName=ProcessRollup2}, field=[aid, ParentProcessId_decimal], include=[TargetProcessId_decimal, FileName, CommandLine]) | rename(field=TargetProcessId_decimal, as=ParentProcessId_decimal) | join(query={#event_simpleName=ProcessRollup2}, field=[aid, ParentProcessId_decimal], include=[FileName, CommandLine, @timestamp]) | FileName=/^(sc|schtasks)\.exe$/i | CommandLine=/(create|config|\/create)/i | table([ComputerName, aid, FileName, CommandLine, @timestamp], limit=200)
CrowdStrike Custom IOA Recommendations
Promote the highest-confidence, lowest-FP endpoint hunts to Custom IOAs. Q5 (exposure baseline) stays a scheduled scoping search, not an IOA.
| IOA Name | From | Pattern | Exclusions | Action |
|---|---|---|---|---|
| IKEEXT — Repeat svchost.exe Restart | Q1 | ≥2 launches of svchost.exe -s IKEEXT on one host outside boot window | Boot-time window, known patch schedule | Monitor |
| IKEEXT — Unexpected Child Process | Q2 | Any process with parent = IKEEXT-hosting svchost.exe | Shared-svchost edge case (validate first) | Detect (pilot Monitor) |
| IKEEXT — Outbound Connection From Service Host | Q3 | IKEEXT-hosting svchost.exe opens outbound connection | Shared-svchost edge case (validate first) | Detect (pilot Monitor) |
| IKEEXT — Reverse-Shell Chain | Q4 | Child of IKEEXT svchost.exe opens outbound connection | Shared-svchost edge case (validate first) | Detect+Block (pilot Monitor) |
| IKEEXT — Post-Compromise Persistence | Q6 | sc.exe/schtasks.exe descending from IKEEXT svchost.exe | None expected | Detect+Block (pilot Monitor) |
Pilot every IOA in Monitor for 7–14 days on your IKE-capable host population and confirm the shared-svchost-group exclusion is correct for your Windows builds before promoting to Detect/Block.
Machine-Readable IOC Appendix
Behavioral pack — no atomic IOCs published for the IKE exploitation. The CSV below ships with REPLACE_WITH_… placeholders only. Populate it solely from first-party evidence (your own IR / confirmed exploitation). Do not import the AI-tooling infrastructure IOCs from Unit 42's report (the AI-model API and proxy hosts named in section 2) as IKE-specific — Unit 42 does not attribute those to the IKE reverse-shell activity.
type,value,action,severity,expiration,description,tags ipv4,REPLACE_WITH_ATTACKER_SOURCE_IP,detect,high,2027-02-20,CVE-2026-33824 IKE exploitation source (first-party),cve:CVE-2026-33824 ipv4,REPLACE_WITH_C2_CALLBACK_IP,detect,critical,2027-02-20,CVE-2026-33824 reverse-shell callback dest (first-party),cve:CVE-2026-33824 domain,REPLACE_WITH_C2_CALLBACK_DOMAIN,detect,critical,2027-02-20,CVE-2026-33824 reverse-shell callback domain (first-party),cve:CVE-2026-33824 sha256,REPLACE_WITH_REVERSE_SHELL_BINARY_HASH,detect,critical,2027-02-20,post-exploitation tool dropped via CVE-2026-33824 (first-party),cve:CVE-2026-33824 # No public IOC disclosed as of 2026-08-20. Leave rows blank/unused unless # YOUR OWN telemetry confirms them. Populate from your own Unit 42 threat-intel # feed or observed exploitation only — never from third-party recycling.
ipsec_mm_fail Security log, EventID 4653 (IPsec Main Mode negotiation failed) svc_crash System log, EventID 7031/7034, message contains "IKEEXT" wer_crash Application log, EventID 1000/1001, faulting module ikeext.dll faulting_proc Faulting application = svchost.exe (paired with wer_crash)
restart svchost.exe -s IKEEXT launches >=2x outside boot window (Q1) child_proc any child of the IKEEXT-hosting svchost.exe (Q2) out_conn IKEEXT svchost.exe itself opens outbound connection (Q3) rev_shell child of IKEEXT svchost.exe opens outbound connection (Q4) persist sc.exe/schtasks.exe descending from IKEEXT svchost.exe (Q6)
Verify build against Microsoft's official Security Update Guide entry
for CVE-2026-33824 (fixed in the April 2026 cycle) — do not assume a
build number without checking your specific Windows branch.
Get-CimInstance Win32_OperatingSystem | Select Version, BuildNumber
Identify exposed IKE responders:
Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'} |
Get-NetFirewallPortFilter | Where-Object {$_.LocalPort -in 500,4500}
Service state:
Get-Service IKEEXT | Select Status, StartType
Detection Validation Gates
| Gate | Check | Pass Criteria |
|---|---|---|
| Telemetry ready | Falcon sensor present and healthy on every IKE-capable host (RRAS/VPN gateways especially) | Q5 returns expected listener rows for known VPN gateways |
| Command-line baseline | Confirm svchost.exe -s IKEEXT is the isolated command line in your Windows builds (not grouped with other services) | Manual spot-check on 2–3 representative hosts per OS build/RAM tier |
| Benign baseline | Identify normal boot-time launch pattern and any legitimate maintenance restarts | Exclusion window populated in Q1 |
| Positive test | In an isolated lab host, launch a benign child process manually under the IKEEXT-hosting svchost.exe PID (e.g., via a test harness) or simulate via a documented safe method | Q2/Q4 fire and IOA logs the event in Monitor |
| Native log enablement | auditpol /get /subcategory:"IPsec Main Mode" shows success/failure enabled | Event ID 4653 populates on a lab negotiation failure |
| Promotion | IOA FP rate over 7–14 day Monitor pilot | < 1 FP/host/week before Detect/Block, especially for Q2/Q3 |
Hardening — Tiered
- Patch every IKE-capable Windows host (MITRE M1051, Update Software): verify the installed build against Microsoft's official Security Update Guide entry for CVE-2026-33824 — do not assume a build number by branch name alone. Prioritize internet-facing RRAS/IKEv2 gateways first.
- Restrict UDP 500/4500 exposure (MITRE M1030, Network Segmentation / M1037, Filter Network Traffic): allow inbound IKE traffic only from known VPN client ranges or peer gateways; deny from the open internet where the deployment allows it.
- Enable IPsec Main Mode auditing (MITRE M1047, Audit): turn on Event ID 4653 logging so the native probing hunt (§7.1) has data before an incident, not after.
- Run §7 native hunts now on every internet-facing IKE responder for existing crash/restart evidence.
- Deploy a perimeter IPS/NGFW signature for CVE-2026-33824 (MITRE M1031, Network Intrusion Prevention): check with your specific perimeter vendor for a published signature (several vendors typically ship one after a KEV addition) and enable it in blocking mode where feasible.
- Centralize Windows Event Forwarding (MITRE M1047, Audit): ship Security/System/Application logs from every IKE-capable host to your SIEM so §7 hunts run continuously, not just on demand.
- Segment VPN/RRAS gateways (MITRE M1030, Network Segmentation): place IKE responders in a DMZ with no direct routing to the internal LAN beyond what the VPN policy explicitly requires, limiting the blast radius of the SYSTEM-level foothold described in §3.
- Pilot the §9 Custom IOAs in Monitor across the IKE-capable host population.
- Reduce reliance on Windows-hosted IKE/IPsec for internet-facing remote access ⚠ best-practice, no formal benchmark: where feasible, migrate internet-facing VPN termination to a dedicated, purpose-built VPN concentrator or ZTNA broker rather than a general-purpose Windows Server RRAS role, reducing the attack surface of a full OS behind an unauthenticated network protocol parser.
- Move toward Zero Trust Network Access (MITRE M1030, Network Segmentation): replace flat-network, device-terminated VPN with per-application ZTNA brokering so a single compromised gateway process no longer grants broad internal reachability.
- Governance: tie remediation SLAs to KEV/BOD 26-04-style timelines ⚠ best-practice, no formal benchmark: even non-federal organizations benefit from adopting CISA's aggressive KEV remediation windows as an internal SLA for any host matching a KEV entry.
Deployable Playbooks
13.1 — Verify patch level and enable IPsec Main Mode auditing (PowerShell)
# Verify build (compare against Microsoft's Security Update Guide entry # for CVE-2026-33824 for your specific Windows branch — do not assume): Get-CimInstance Win32_OperatingSystem | Select-Object Version, BuildNumber # Enable IPsec Main Mode / Extended Mode auditing (off by default): auditpol /set /subcategory:"IPsec Main Mode" /success:enable /failure:enable auditpol /set /subcategory:"IPsec Extended Mode" /success:enable /failure:enable # Verify: auditpol /get /subcategory:"IPsec Main Mode"
Prerequisites: local administrator rights on the target host. Reboot required: No. Rollback: auditpol /set /subcategory:"IPsec Main Mode" /success:disable /failure:disable (and the same for Extended Mode) to restore the prior (default-off) audit state.
13.2 — Restrict UDP 500/4500 to known VPN peers (Windows Firewall)
# Only run on hosts where the legitimate VPN client/peer range is known.
# Replace the placeholder CIDR with your actual VPN client pool / peer range.
New-NetFirewallRule -DisplayName "CVE-2026-33824 — Restrict IKE to known peers" `
-Direction Inbound -Protocol UDP -LocalPort 500,4500 `
-RemoteAddress REPLACE_WITH_KNOWN_VPN_CLIENT_CIDR -Action Allow -Profile Any
# Verify the rule and confirm no broader "Allow Any" IKE rule remains enabled
# alongside it (an existing permissive rule will make this addition a no-op):
Get-NetFirewallRule -DisplayName "CVE-2026-33824*" | Get-NetFirewallPortFilter
Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'} |
Get-NetFirewallPortFilter | Where-Object {$_.LocalPort -in 500,4500}
Prerequisites: local administrator rights; an accurate, documented list of legitimate VPN client/peer source ranges (getting this wrong breaks remote access). Reboot required: No. Rollback: Remove-NetFirewallRule -DisplayName "CVE-2026-33824 — Restrict IKE to known peers", then re-confirm the previously existing IKE firewall rule (if any) is back to its documented prior state.
13.3 — Collect IKEEXT crash artifacts for IR (PowerShell, read-only)
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7031,7034} |
Where-Object { $_.Message -match 'IKEEXT' } |
Export-Csv -Path .\ikeext_scm_crashes.csv -NoTypeInformation
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000,1001} |
Where-Object { $_.Message -match 'ikeext\.dll' } |
Export-Csv -Path .\ikeext_wer_crashes.csv -NoTypeInformation
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4653} |
Export-Csv -Path .\ipsec_mm_failures.csv -NoTypeInformation
Prerequisites: local administrator or event-log read rights; IPsec Main Mode auditing enabled (13.1) for the third export to return data. Reboot required: No. Rollback: none required — this is a read-only evidence-collection step.
13.4 — Emergency mitigation: disable IKEEXT on hosts confirmed not to need IPsec/VPN
# Only run after confirming the host does NOT provide IPsec/VPN service — # this will break any active or future IKE/IPsec negotiation on the host. Stop-Service IKEEXT -Force Set-Service IKEEXT -StartupType Disabled # Verify: Get-Service IKEEXT | Select-Object Status, StartType
Prerequisites: confirmed, documented evidence the host does not require IPsec/IKEv2 VPN functionality; local administrator rights. Reboot required: No, but any active VPN/IPsec session on the host will drop immediately. Rollback: Set-Service IKEEXT -StartupType Manual; Start-Service IKEEXT (or restore the host's prior documented startup type if it was not Manual).
13.4 is a breaking change if applied to a host that does need IPsec/VPN — confirm scope with the §5 affected-surface matrix before running it broadly.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Falcon network-contain any host with a Q2/Q3/Q4 hit; block inbound UDP 500/4500 to the affected host at the perimeter; preserve WER crash dumps and the process memory of the compromised svchost.exe before further action | SOC + Network | Falcon containment log; WER crash dump; process memory capture |
| Eradicate | Terminate any unauthorized child process and reverse-shell connection (Q2–Q4 hits); remove persistence found via Q6; patch to the fixed build; treat the host as fully compromised at SYSTEM level and rotate local admin credentials, any cached credentials, and the machine account secure channel | SOC + IT | Removed-persistence list; patch confirmation; credential-rotation record |
| Recover | Verify patch level via 13.1; restore from a known-clean backup if host integrity is in question; re-enable restricted UDP 500/4500 access (13.2) only to the documented legitimate peer range; monitor §8 queries for 14 days post-recovery | SOC + Network | Build-version confirmation; clean post-recovery hunt results |
| Endpoint / Identity | For any account that authenticated to or was cached on the compromised host, force credential resets; hunt for lateral movement sourced from the compromised host using Falcon UserLogon and NetworkConnectIP4; watch for the theoretical wormable re-targeting pattern (§3, step 7) against other IKE-exposed hosts | SOC + Identity | Reset confirmations; lateral-movement hunt results |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 / T1210 | Crash-restart of IKEEXT svchost.exe (probing or exploitation attempt) | Q1 | Repeat-Restart IOA | Partial — behavioral proxy for the exploit, not the exploit itself |
| T1210, T1059 | Child process from IKEEXT svchost.exe | Q2 | Unexpected-Child IOA | Good |
| T1071, T1219, T1055 | Outbound connection from IKEEXT svchost.exe itself | Q3 | Outbound-Conn IOA | Good |
| T1210, T1059, T1071 | Reverse-shell chain (child of IKEEXT svchost.exe connects out) | Q4 | Reverse-Shell-Chain IOA | Good — highest-fidelity match to Unit 42's reported activity |
| T1543.003, T1053.005 | Post-compromise persistence from the IKEEXT chain | Q6 | Persistence IOA | Good |
| n/a (exposure) | UDP 500/4500 listener inventory | Q5 | n/a (scoping) | Scoping only |
| T1190 (network-level) | Crafted fragmented IKEv2 packets / repeated failed negotiations | — | — | Gap — Falcon EDR does not parse IKE payloads; covered only by native Event ID 4653 (§7.1) and perimeter IPS/NGFW |
| T1055 (pure in-process, no outbound) | Shellcode executes entirely in-process with no child spawned and no outbound connection | — | — | Gap — only Q1 (crash-restart, if the exploit attempt also crashes the process) would surface this; a clean in-process compromise with no crash and no network activity is currently undetectable by this pack |
| Wormable re-targeting | Compromised host scanning for/attacking other IKE-exposed hosts | — | — | Gap — not observed ITW as of 2026-08-20; would require correlating a Q2/Q4 hit host initiating new outbound UDP 500/4500 connections (build a custom watch if concerned) |
Validation: Coverage is strongest on the post-exploitation pivot (child process, outbound connection, reverse-shell chain, persistence — Q2/Q3/Q4/Q6), which matches exactly what Unit 42 reported observing. Coverage is weakest on the network-level exploit trigger itself (fragmented IKEv2 packets) because Falcon EDR does not parse that protocol — §7 native Windows Event Log hunts and perimeter IPS/NGFW signatures are required to close that gap.
Hunt Summary Ticket
TITLE......: CVE-2026-33824 — Windows IKEEXT double-free RCE hunt
THREAT.....: CVE-2026-33824, Windows IKE and AuthIP IPsec Keying Modules
(IKEEXT / ikeext.dll) double-free (CWE-415), CVSS 9.8
SEVERITY...: CRITICAL — added to CISA KEV 2026-08-18; Unit 42 observed
manual reverse-shell exploitation against 3 IKE VPN endpoints
SCOPE......: Internet-facing Windows RRAS/IKEv2 VPN gateways, IPsec
server-to-server links, DirectAccess/Always On VPN hosts
HYPOTHESIS.: Attacker sends crafted fragmented IKEv2 packets to UDP
500/4500, triggers double-free in ikeext.dll, gains SYSTEM
code exec inside the IKEEXT svchost.exe, spawns a child
process, opens a reverse-shell callback
QUERIES....: Q1 crash-restart | Q2 child-process | Q3 in-process outbound
Q4 reverse-shell chain (highest fidelity) | Q5 exposure
baseline | Q6 persistence
DO FIRST...: Q5 (exposure baseline) to find every IKE-capable host, then
Q1 + Q2 + Q4 on that population; enable §7.1 auditing
FINDINGS...: <fill: crash-restart hosts / unexpected svchost children /
reverse-shell chains / persistence artifacts>
GAPS.......: Network-level exploit trigger (fragmented IKEv2 packets) not
visible to Falcon EDR — native Event ID 4653 + perimeter
IPS/NGFW required. Pure in-process compromise with no crash
and no outbound connection is currently undetectable.
NO public atomic IOCs — behavioral pack only.
ACTIONS....: Patch every IKE-capable host now; restrict UDP 500/4500 to
known peers; enable IPsec Main Mode auditing; run §7/§8
OWNER......: HuntPack
VERSION....: v0.1 · 2026-08-20
Changelog
References
| Tier | Source | Used For | Accessed |
|---|---|---|---|
| 1 | Zero Day Initiative — CVE-2026-33824: Remote Code Execution in Windows IKEv2 | Root-cause technical writeup: double-free mechanism, function names, offsets, trigger conditions, patch timing | 2026-08-20 |
| 1 | Palo Alto Networks Unit 42 — Chinese-Speaking Threat Actor Harnesses AI Models for Autonomous Cyberattacks | Primary source for the reverse-shell callback attempts against 3 IKE VPN endpoints; actor attribution (knaithe/KnYuan); confirms no IKE-specific atomic IOCs published | 2026-08-20 |
| 2 | The Hacker News — Critical macOS, SharePoint, vCenter, and Microsoft IKE Flaws Under Active Exploitation | KEV addition date (2026-08-18) and CVSS confirmation; secondary corroboration of Unit 42 finding | 2026-08-20 |
| 2 | cvefeed.io — CVE-2026-33824 detail | CWE-415 classification, KEV remediation deadline, affected-product list (16 Microsoft products across Windows 10/11 and Server branches) | 2026-08-20 |
| 2 | SentinelOne Vulnerability Database — CVE-2026-33824 | Full CVSS 3.1 vector string; independent corroboration of the behavioral detection surface (IKEEXT crashes, ikeext.dll fault events, anomalous svchost.exe children) | 2026-08-20 |
| 2 | Gridinsoft Blog — CVE-2026-33824 Exploited Against Windows IKE VPNs | Real-world exposure scoping (which hosts are actually at risk); explicit confirmation that no IKE-specific hash/process name/victim count has been published | 2026-08-20 |
Provenance statement: This pack contains zero atomic IOCs for the in-the-wild IKE exploitation. Every detection signature traces to the ZDI root-cause writeup (Tier 1), the Unit 42 primary source (Tier 1), or documented behavioral guidance in Tier 2 sources. The task-supplied SentinelOne URL for the unrelated CVE-2026-68820 was identified as incorrect and not used; the correct CVE-2026-33824 SentinelOne page was located and used instead. All 6 sources above have fetched-text snapshots saved alongside this file for the IOC-provenance validation gate.