Apr 16, 2026·6 min read·9 visits
CVE-2026-33824 (BlueHammer) is an actively exploited, zero-click remote code execution vulnerability in the Windows IKE service (IKEEXT). It leverages a double-free condition during SA_INIT packet parsing to bypass mitigations and execute arbitrary code as SYSTEM.
A double-free vulnerability in the Windows IKE Extension service allows unauthenticated remote attackers to achieve arbitrary code execution with SYSTEM privileges by sending malformed IKEv2 payloads.
CVE-2026-33824, publicly referred to as BlueHammer, is a critical remote code execution vulnerability located in the Windows Internet Key Exchange (IKE) service extension (IKEEXT.dll). The IKEEXT service facilitates IPsec negotiations and is responsible for parsing inbound IKEv1 and IKEv2 packets. The service listens by default on UDP ports 500 and 4500 on systems configured for VPN or IPsec connectivity.
The vulnerability is classified as a double-free memory corruption issue (CWE-415). It occurs during the processing of specific IKEv2 payloads, specifically when the service mishandles the allocation lifecycle of parsed payload objects. An unauthenticated attacker with network reachability to the exposed UDP ports can trigger this flaw without prior authorization.
Successful exploitation results in arbitrary code execution within the context of the IKEEXT service. Because this service operates with Local System privileges, exploitation guarantees complete system compromise. The vulnerability requires no user interaction, making it highly suitable for zero-click exploitation and lateral movement.
The fundamental flaw resides within the ikeext!IKEEXT::ProcessIKEPayload function. This function is tasked with parsing the structure and content of IKEv2 payloads, verifying payload lengths, and allocating corresponding internal objects for subsequent state machine processing. The double-free condition is triggered by a logic error in how the function handles malformed nested payloads.
When processing a sequence of SA_INIT packets containing a structurally invalid combination of Notify and Proposal payloads, the parsing logic encounters an error state. The error handling branch attempts to release the memory allocated for the current payload object. However, a failure to appropriately nullify the pointer or update the payload state causes a subsequent cleanup routine to free the exact same memory address a second time.
This duplicate call to the heap allocator's free function corrupts the internal linked lists utilized by the Windows heap manager. Specifically, freeing an already unallocated chunk allows an attacker to manipulate the Next pointer of the free list structure. This manipulation establishes the necessary conditions for an arbitrary memory write primitive when subsequent allocations occur.
The vulnerability stems from inadequate pointer lifecycle management in C++. While the exact source code is proprietary, reverse engineering of the unpatched IKEEXT.dll binary reveals a pattern where an allocated IKE_PAYLOAD_CONTEXT struct is passed to a secondary validation function. If validation fails, the secondary function frees the structure but does not zero out the original pointer held by the caller.
// Conceptual representation of the vulnerable code path
IKE_PAYLOAD_CONTEXT* pContext = AllocatePayloadContext(size);
if (!ParseProposalPayload(packetData, pContext)) {
// ParseProposalPayload frees pContext on error but caller maintains the dangling pointer
LogError("Failed to parse proposal.");
}
// Later in the cleanup routine...
if (pContext != NULL) {
HeapFree(GetProcessHeap(), 0, pContext); // Double Free occurs here
}In the patched versions (Build 10.0.22631.6936+ and equivalents), Microsoft addressed this by implementing robust pointer invalidation. The patch ensures that whenever a payload context is deallocated during early validation failures, all references to that context are immediately set to NULL.
// Conceptual representation of the patched code path
IKE_PAYLOAD_CONTEXT* pContext = AllocatePayloadContext(size);
if (!ParseProposalPayload(packetData, &pContext)) {
// pContext is correctly nullified via pointer-to-pointer or explicit zeroing
LogError("Failed to parse proposal.");
}
// Safe cleanup
if (pContext != NULL) {
HeapFree(GetProcessHeap(), 0, pContext);
}The BlueHammer exploit chain demonstrates a high degree of maturity, converting a standard double-free condition into a reliable remote code execution vector. The attack sequence initiates with a standard IKEv2 SA_INIT message, followed rapidly by three specialized packets containing the malformed Notify and Proposal components. This precise 4-packet sequence guarantees the target code path is exercised.
To achieve reliability, the exploit requires precise heap grooming. The attacker initiates approximately 16 parallel UDP flows to the target. These parallel connections force the IKEEXT service to perform numerous predictable heap allocations and deallocations. This process, known as heap spraying, places the target memory chunk into a highly controlled state on the heap freelist before the double-free is triggered.
Once the double-free corrupts the freelist, the exploit leverages the resulting arbitrary write primitive to bypass modern exploit mitigations. Control Flow Guard (CFG) is circumvented through targeted pointer overwrites within unprotected data structures, while Control-flow Enforcement Technology (CET) is bypassed during the specific pivot to the Return-Oriented Programming (ROP) chain.
The final ROP chain modifies memory protections to allocate an executable segment, copies the secondary payload (typically a compiled PE file or shellcode), and redirects execution flow. Operating within the Local System context, this payload typically establishes a reverse shell or deploys further persistence mechanisms without triggering standard user-land behavioral alerts.
The security impact of CVE-2026-33824 is complete system compromise. An attacker successfully exploiting this vulnerability gains NT AUTHORITY\SYSTEM privileges. This level of access permits the extraction of sensitive credential material (such as LSASS memory dumps), the modification of system configurations, the termination of endpoint detection and response (EDR) agents, and the installation of persistent rootkits.
The unauthenticated, network-facing nature of the vulnerability presents severe risks for enterprise environments. Systems exposing UDP ports 500 and 4500 to the public internet, primarily VPN gateways and DirectAccess servers, are immediately susceptible. The lack of required user interaction means exploitation can be entirely automated.
Active exploitation in the wild was confirmed prior to the availability of official vendor patches, cementing its status as an exploited zero-day. Security vendors observed threat actors utilizing BlueHammer to establish initial footholds in enterprise networks, rapidly transitioning to lateral movement utilizing the compromised boundary systems.
The primary and only definitive remediation for CVE-2026-33824 is applying the April 14, 2026, Cumulative Updates provided by Microsoft. Administrators must prioritize patching internet-facing Windows servers acting as VPN or IPsec endpoints. Internal endpoints should be patched subsequently, as the vulnerability remains viable for internal lateral movement.
For environments where immediate patching is unfeasible, temporary mitigations can sever the attack surface. Disabling the IKEEXT ("IKE and AuthIP IPsec Keying Modules") service entirely eliminates the vulnerability. Alternatively, network perimeters can be configured to block UDP ports 500 and 4500, effectively shielding the vulnerable service from external network ingress.
Network detection strategies should focus on anomalous IKE traffic patterns. Intrusion Detection Systems (IDS) can be tailored to identify the specific malformed Notify and Proposal payload structures used by BlueHammer. Additionally, monitoring for excessive SA_INIT requests originating from a single IP address without corresponding handshake completions provides a reliable indicator of the heap grooming phase.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
Windows 11 Microsoft | 22H2, 23H2, 24H2, 25H2, 26H1 | 10.0.22631.6936+ |
Windows 10 Microsoft | 1607, 1809, 21H2, 22H2 | 10.0.14393.9060+ |
Windows Server Microsoft | 2016, 2019, 2022, 2025 | April 2026 Cumulative Update |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-415 |
| Attack Vector | Network (UDP 500/4500) |
| CVSS Score | 9.8 |
| EPSS Score | 0.00067 |
| Impact | Unauthenticated RCE as SYSTEM |
| Exploit Status | Active Exploitation |
The product calls free() twice on the same memory address, potentially leading to modification of unexpected memory locations.