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.
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 viaSFAPM.dllinsidelsass.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:
- The Repeated
InitializeFour-Byte Write: When a host calls SFAPE's exportedInitializefunction for the first time, the enclave thoroughly validates the request structure and its nested callback pointers. However, ifInitializeis called a second time after the globalg_initializedflag is already set, the function skips address verification and immediately writes the fixed status codeSTATUS_ALREADY_INITIALIZED(0xC0000510) torequest + 0x30. Because the calling VTL0 host controls therequestpointer, this created a constrained four-byte write primitive (write32(request + 0x30, 0xC0000510)) capable of targeting VTL1 memory. - Defeating the Range Validator (
IsInsideEnclave): Writing a fixed value of0xC0000510doesn'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-bitg_enclaveBaseandg_enclaveSizevariables. By aiming the repeatedInitializecall at an exact offset (RVA 0xE83C), the researcher overwrote the upper 32 bits (high DWORD) ofg_enclaveBaseatRVA 0xE86Cwith0xC0000510. Suddenly, the guard logic was blind: genuine VTL1 private memory addresses now passed validation as if they were harmless VTL0 host pointers. - The
ClipboardInputTOCTOU Race: With the range check neutralized, Doyensec triggered a time-of-check/time-of-use (TOCTOU) flaw inClipboardInput. This function takes a host-controlledUNICODE_STRINGresiding in writable VTL0 memory, hashes the clipboard text, fires off a telemetry callback to the host, and then zeroes out the buffer usingSecureZeroMemory. Because the telemetry callback gave the host a deterministic synchronization pause, the host could swap out theBufferandLengthfields mid-operation, turningSecureZeroMemoryinto a controlledmemset(ptr, 0, length)primitive inside VTL1. - 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 inGetCcAttributesandSetCcTimeStampsto gain constrained 16-byte VTL1 reads and 64-bit VTL1 writes. From there, Doyensec built a replacementVertValidTargetTable(VTT) in writable enclave memory, redirectedvertdll.dll's target-table pointer, and usedRtlCaptureContextalongsideNtContinueto call arbitrary existing VTL1 functions with full argument control—ultimately unlocking clean memory copy wrappers (EnclaveCopyIntoEnclaveandEnclaveCopyOutOfEnclave) backed by Secure Kernel service0x08000019.
| Exploit Stage | Target Component / Function | Technical Mechanism | Resulting Capability |
|---|---|---|---|
| Stage 1: Initial Primitive | SFAPE.dll (Initialize) | Unvalidated status write (0xC0000510) at request + 0x30 on repeated initialization | Constrained 4-byte fixed-value write in VTL1 |
| Stage 2: Guard Bypass | SFAPE.dll (g_enclaveBase) | Overwriting high DWORD of cached enclave base address at RVA 0xE86C | Defeats IsInsideEnclave pointer range validation |
| Stage 3: Memory Zeroing | SFAPE.dll (ClipboardInput) | TOCTOU race during telemetry callback before SecureZeroMemory | Controlled memset(ptr, 0, length) in VTL1 |
| Stage 4: R/W Pivot | GetCcAttributes / SetCcTimeStamps | Truncating global credential-context map pointer into sprayed VTL0 memory | Selected 16-byte VTL1 read and 64-bit VTL1 write |
| Stage 5: Code Execution | vertdll.dll (VertValidTargetTable) | Redirecting writable VTT metadata and chaining RtlCaptureContext + NtContinue | Arbitrary 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.p7bso outdatedSFAPE.dllbinaries 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
Initializefixed-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.dllfrom version10.0.26100.8875to10.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:
- Range Validation on Re-Initialization: The repeated
Initializepath now validates the request address range before writingSTATUS_ALREADY_INITIALIZED, killing the initial four-byte write primitive. - Hardened
ClipboardInputHandling: The function now rejects empty inputs and mismatched lengths, enforces a strict512-bytecap onMaximumLength, and copies input bytes directly into private enclave memory before processing—eliminating the VTL0 descriptor race condition. - Code Integrity Enforcement: The updated
VbsSiPolicy.p7bpolicy blocks rollback or "bring your own enclave" attacks using olderSFAPE.dllbinaries.
Actionable Steps for Windows Administrators
- 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-83498to verify exact build numbers across your deployed OS branches. - Confirm VBS Policy Integrity: Because the revocation of older
SFAPE.dllbinaries relies on the updatedVbsSiPolicy.p7bfile shipped in the cumulative update, keeping systems current ensures local attackers cannot sideload an older copy ofSFAPE.dllfrom public file archives. - Maintain LSA Protection (RunAsPPL): In production,
SFAPE.dllis hosted bylsass.exeviaSFAPM.dll. Ensuring LSA Protection remains enabled across your Windows 11 fleet provides essential defense-in-depth for the host process managing credential protection. - 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
- CVE-2026-83498 - Security Update Guide - Microsoft - Windows Virtualization-Based Security (VBS) Enclave Elevation of Privilege Vulnerability msrc.microsoft.com
- Research Shows Vulnerability in Microsoft VBS Enclave Component Petri IT Knowledgebase · 2026-10-14T16:06:53+00:00
- Abusing VBS Enclaves to Create Evasive Malware | Akamai akamai.com