A glowing security shield protects servers as red malware fragments are blocked above a digital desktop.
For years, the golden rule of Windows security was pretty straightforward: if an attacker transitions from user mode to kernel mode, pack up your bags because it is game over. Then Microsoft rolled out Virtualization-Based Security (VBS), flipping the chessboard into three dimensions. By using the Windows hypervisor to carve the operating system into distinct Virtual Trust Levels (VTLs), Windows created a heavily fortified VIP lounge—Virtual Trust Level 1 (VTL1)—where even a fully compromised normal kernel sitting in VTL0 isn't allowed to peek behind the velvet rope.

What happens, though, when the bouncer at that VIP lounge forgets to check an ID badge? New technical research published by Adrian Denkiewicz of security firm Doyensec on October 13, 2026, alongside coverage by Petri, demonstrates how a seemingly minor implementation flaw inside a Microsoft VBS enclave component can be chained into full control over the enclave instance in Isolated User Mode (IUM). Tracked by Microsoft as CVE-2026-83498 and already patched in the September 8, 2026 security updates, the research offers a fascinating look into how Windows 11 protects your most sensitive secrets—and why building digital vaults requires paranoid-level input validation.

A glowing security shield protects servers as red malware fragments are blocked above a digital desktop. The Anatomy of VBS Enclaves and Enhanced Phishing Protection​

To understand why this research matters to Windows administrators and security architects, we first need to look at how VBS enclaves actually work. Unlike traditional user-mode versus kernel-mode separation, VBS splits the system orthogonally into VTL0 (the standard world containing normal user applications and the standard Windows kernel) and VTL1 (the isolated world containing Isolated User Mode and the Secure Kernel).

A VBS enclave is essentially a specially compiled, digitally signed DLL that gets loaded by a normal VTL0 host process (CreateEnclave), initialized, and invoked via CallEnclave. While the host application controls the enclave's lifecycle and calls its exported functions, the code executes inside VTL1's Isolated User Mode, and its private memory remains completely opaque to the VTL0 host. It does not require specialized hardware like Intel SGX or an NPU—just standard VBS hardware prerequisites. Inside VTL1, the enclave relies on a restricted runtime environment led by vertdll.dll (acting much like ntdll.dll does in VTL0), with no direct access to the file system or network; it has to ask the VTL0 host via callouts to perform those mundane tasks.

Microsoft increasingly leans on these enclaves for sensitive Windows features, including SQL Server Always Encrypted (Aetm-enclave.dll), Windows Search (sfsenclave.dll), Windows Recall (snapshot_support.dll, settings_support.dll, and storage_support.dll), and Microsoft Defender SmartScreen's Enhanced Phishing Protection (SFAPE.dll).

According to Microsoft Support documentation, Enhanced Phishing Protection is a Windows 11-exclusive feature designed to catch users in the act of making terrible life choices—like typing their Windows sign-in password into a malicious website, an untrusted app, or plain old Notepad, Word, or OneNote. To pull this off without keeping your plaintext password lying around in standard memory, Windows intercepts the password during login and stores a hashed representation inside the SFAPE.dll VBS enclave. Its VTL0 host component is SFAPM.dll, a Local Security Authority (LSA) package loaded directly by lsass.exe running as NT AUTHORITY\SYSTEM. When you type or paste text, the system hashes and compares the input inside the enclave's private VTL1 memory, keeping the credential hashes safe even if the normal operating system is compromised.

Section Summary:

  • Virtual Trust Levels: VBS separates the normal OS (VTL0) from Isolated User Mode and the Secure Kernel (VTL1).
  • The Target (SFAPE.dll): The VBS enclave powering Windows 11 Enhanced Phishing Protection, hosted via SFAPM.dll inside lsass.exe.
  • The Security Promise: Storing and comparing hashed Windows sign-in credentials in VTL1 so that even a privileged VTL0 attacker cannot inspect them.

Inside the Exploit Chain: How Four Bytes Broke the Boundary​

Here is the catch with VBS enclaves: the memory relationship between VTL0 and VTL1 is asymmetric. While the VTL0 host cannot read or write enclave memory, the enclave code in VTL1 can freely read and write its host's VTL0 memory. Because the host passes request structures and pointers into the enclave, the enclave must verify that every single pointer and nested buffer supplied by the host actually points to VTL0 memory—and doesn't sneakily point at private VTL1 addresses or change mid-flight.

In his lab analysis on Windows 11 version 25H2 (build 26200.8973), Denkiewicz examined SFAPE.dll (version 10.0.26100.8875) and vertdll.dll (version 10.0.26100.8972). Doyensec discovered that while SFAPE.dll exports ten functions, two specific flaws could be chained together by a local host process loading a test enclave:

  1. The Repeated Initialize Four-Byte Write: When a host calls SFAPE's exported Initialize function for the first time, the enclave thoroughly validates the request structure and its nested callback pointers. However, if Initialize is called a second time after the global g_initialized flag is already set, the function skips address verification and immediately writes the fixed status code STATUS_ALREADY_INITIALIZED (0xC0000510) to request + 0x30. Because the calling VTL0 host controls the request pointer, this created a constrained four-byte write primitive (write32(request + 0x30, 0xC0000510)) capable of targeting VTL1 memory.
  2. Defeating the Range Validator (IsInsideEnclave): Writing a fixed value of 0xC0000510 doesn't sound like much of a party trick until you look at how SFAPE checks pointers. Before operating on host-supplied addresses, SFAPE runs a guard function (IsInsideEnclave) that checks whether an address falls within its cached 64-bit g_enclaveBase and g_enclaveSize variables. By aiming the repeated Initialize call at an exact offset (RVA 0xE83C), the researcher overwrote the upper 32 bits (high DWORD) of g_enclaveBase at RVA 0xE86C with 0xC0000510. Suddenly, the guard logic was blind: genuine VTL1 private memory addresses now passed validation as if they were harmless VTL0 host pointers.
  3. The ClipboardInput TOCTOU Race: With the range check neutralized, Doyensec triggered a time-of-check/time-of-use (TOCTOU) flaw in ClipboardInput. This function takes a host-controlled UNICODE_STRING residing in writable VTL0 memory, hashes the clipboard text, fires off a telemetry callback to the host, and then zeroes out the buffer using SecureZeroMemory. Because the telemetry callback gave the host a deterministic synchronization pause, the host could swap out the Buffer and Length fields mid-operation, turning SecureZeroMemory into a controlled memset(ptr, 0, length) primitive inside VTL1.
  4. Pivoting to Read/Write and Code Execution: By zeroing the upper 32 bits of a global red-black-tree-like credential-context map pointer (RVA 0xE060) and spraying a mirrored VTL0 buffer with synthetic tree nodes, the researcher redirected handle lookups in GetCcAttributes and SetCcTimeStamps to gain constrained 16-byte VTL1 reads and 64-bit VTL1 writes. From there, Doyensec built a replacement VertValidTargetTable (VTT) in writable enclave memory, redirected vertdll.dll's target-table pointer, and used RtlCaptureContext alongside NtContinue to call arbitrary existing VTL1 functions with full argument control—ultimately unlocking clean memory copy wrappers (EnclaveCopyIntoEnclave and EnclaveCopyOutOfEnclave) backed by Secure Kernel service 0x08000019.
Exploit StageTarget Component / FunctionTechnical MechanismResulting Capability
Stage 1: Initial PrimitiveSFAPE.dll (Initialize)Unvalidated status write (0xC0000510) at request + 0x30 on repeated initializationConstrained 4-byte fixed-value write in VTL1
Stage 2: Guard BypassSFAPE.dll (g_enclaveBase)Overwriting high DWORD of cached enclave base address at RVA 0xE86CDefeats IsInsideEnclave pointer range validation
Stage 3: Memory ZeroingSFAPE.dll (ClipboardInput)TOCTOU race during telemetry callback before SecureZeroMemoryControlled memset(ptr, 0, length) in VTL1
Stage 4: R/W PivotGetCcAttributes / SetCcTimeStampsTruncating global credential-context map pointer into sprayed VTL0 memorySelected 16-byte VTL1 read and 64-bit VTL1 write
Stage 5: Code Executionvertdll.dll (VertValidTargetTable)Redirecting writable VTT metadata and chaining RtlCaptureContext + NtContinueArbitrary function calls & VTL1 code execution

Section Summary:

  • Not a Remote Exploit: This attack chain requires a local host process capable of loading and interacting with the enclave; it is not a remote browser or network vulnerability.
  • Chained Primitives: A tiny four-byte error-code write was used to blind the enclave's address range checker, opening the door for a timing attack (ClipboardInput) and full VTL1 code reuse.

Offensive Enclave Reuse and the Blocklist Question​

Why would an attacker care about executing code inside an enclave if they already have local execution on the host? After all, compromising SFAPE.dll in a lab test enclave doesn't automatically hand you the keys to the Windows kernel, nor does it let an unprivileged process casually snoop on lsass.exe when LSA Protection (RunAsPPL) is active.

The broader security implication, as both Doyensec and Petri highlight, is the concept of "Bring Your Own Vulnerable Enclave". Because any local process can call CreateEnclave to load a properly signed primary enclave image, a vulnerable enclave binary can be abused as an isolated execution haven inside VTL1. Even though VTL1 Arbitrary Code Guard (ACG) blocks attackers from allocating brand-new executable shellcode memory, redirecting the writable VertValidTargetTable allows attackers to reuse existing signed code and ROP gadgets inside VTL1.

As Doyensec noted by referencing earlier offensive security research—such as Google Chrome Platform Security researcher Alex Gough's discovery of CVE-2023-36880 (and the follow-up CVE-2024-21423) in Microsoft Edge's prefs_enclave_x64.dll, Akamai researcher Ori David's Mirage proof-of-concept, and Outflank researchers Matteo Malvica and Cedric Van Bockhaven's VTL1 sleepmask techniques—attackers can hide payload data or sleep implants inside VTL1 private memory where standard VTL0 Endpoint Detection and Response (EDR) sensors simply cannot scan. Furthermore, a controlled VTL1 execution environment gives researchers (and well-resourced adversaries) a staging ground to probe Isolated User Mode and test potential attack surfaces against the Secure Kernel itself.

This brings up a fascinating architectural quirk: unlike kernel drivers, Windows does not currently maintain a dedicated "Vulnerable Enclave Blocklist" analogous to the Microsoft Vulnerable Driver Blocklist. While Doyensec observed that older vulnerable builds of Edge's prefs_enclave_x64.dll remained loadable on recent systems during their testing, Microsoft took decisive action for SFAPE.dll. Alongside patching the code, Microsoft updated the VBS Code Integrity policy (VbsSiPolicy.p7b) to explicitly block all older, vulnerable SFAPE.dll images from loading.

Section Summary:

  • EDR Evasion & Research Staging: Compromised enclaves can act as VTL1 safe houses that VTL0 security tools cannot inspect, or serve as launchpads for inspecting Isolated User Mode.
  • Revocation Reality Check: While Windows lacks a universal vulnerable-enclave blocklist and an older Edge enclave remained loadable in Doyensec's tests, Microsoft updated VbsSiPolicy.p7b so outdated SFAPE.dll binaries are actively rejected on patched systems.

Patch Details, Disclosure Timeline, and Admin Guidance​

Here is the good news for enterprise defenders: you don't need to scramble for an emergency out-of-band workaround today if your patch management pipeline is doing its job. Microsoft addressed this vulnerability—assigned CVE-2026-83498 (Windows Virtualization-Based Security Enclave Elevation of Privilege Vulnerability)—over a month before the research went public.

According to Doyensec's disclosure timeline:

  • August 7, 2026: Doyensec reported the initial Initialize fixed-value write flaw to the Microsoft Security Response Center (MSRC).
  • August 11, 2026: Doyensec updated MSRC after expanding the primitive into full VTL1 code execution inside their test enclave.
  • September 8, 2026: Microsoft shipped the fix as part of the September Patch Tuesday cumulative updates (including KB5124008, which updated SFAPE.dll from version 10.0.26100.8875 to 10.0.26100.9444).
  • September 21–25, 2026: Microsoft confirmed the report was a duplicate of an internally identified vulnerability (CVE-2026-83498) and updated the public MSRC advisory to credit Doyensec.

In the patched SFAPE.dll build (10.0.26100.9444), Microsoft closed every link in the chain:

  1. Range Validation on Re-Initialization: The repeated Initialize path now validates the request address range before writing STATUS_ALREADY_INITIALIZED, killing the initial four-byte write primitive.
  2. Hardened ClipboardInput Handling: The function now rejects empty inputs and mismatched lengths, enforces a strict 512-byte cap on MaximumLength, and copies input bytes directly into private enclave memory before processing—eliminating the VTL0 descriptor race condition.
  3. Code Integrity Enforcement: The updated VbsSiPolicy.p7b policy blocks rollback or "bring your own enclave" attacks using older SFAPE.dll binaries.

Actionable Steps for Windows Administrators​

  1. Verify September 2026 (or Later) Cumulative Updates: Ensure all Windows 11 endpoints and applicable Windows Server environments have installed the September 8, 2026 security updates (such as KB5124008 on the tested Windows 11 branch) or the October 2026 cumulative updates. Check Microsoft's Security Update Guide for CVE-2026-83498 to verify exact build numbers across your deployed OS branches.
  2. Confirm VBS Policy Integrity: Because the revocation of older SFAPE.dll binaries relies on the updated VbsSiPolicy.p7b file shipped in the cumulative update, keeping systems current ensures local attackers cannot sideload an older copy of SFAPE.dll from public file archives.
  3. Maintain LSA Protection (RunAsPPL): In production, SFAPE.dll is hosted by lsass.exe via SFAPM.dll. Ensuring LSA Protection remains enabled across your Windows 11 fleet provides essential defense-in-depth for the host process managing credential protection.
  4. Guidance for Enclave Developers: Now that Microsoft allows third-party developers to sign custom VBS enclaves via Azure Artifact Signing (formerly Trusted Signing), software engineers building enclaves must treat every pointer, length field, and nested structure coming from VTL0 as hostile. Always copy host descriptors into private VTL1 memory before validating and operating on them, and use Windows SDK tools like VEIID to strictly bind enclave imports.

As Windows 11 continues to tuck more high-value operations—from SmartScreen phishing checks to Windows Recall—inside VBS enclaves, the boundary between VTL0 and VTL1 is quickly becoming one of the most important frontiers in operating system security. Strengthening the vault door only works if the code inside refuses to trust what gets slipped under the slot.

 

References

  1. CVE-2026-83498 - Security Update Guide - Microsoft - Windows Virtualization-Based Security (VBS) Enclave Elevation of Privilege Vulnerability msrc.microsoft.com
  2. Research Shows Vulnerability in Microsoft VBS Enclave Component Petri IT Knowledgebase 2026-10-14T16:06:53+00:00
  3. Abusing VBS Enclaves to Create Evasive Malware | Akamai akamai.com