Local privilege-escalation proof of concept for the Windows WalletService vulnerability fixed in July 2026.

Technical write-up: CVE-2026-49176 Exploit Development: WalletService to SYSTEM.

A standard user creates a Wallet ESE database containing a persisted callback and redirects their Documents known folder to it. Vulnerable WalletService opens the database as LocalSystem with persisted callbacks enabled, causing ESE to load the supplied DLL. The payload starts a command prompt as SYSTEM in the active desktop session.

Run

On a vulnerable Windows 11 system, open a non-elevated PowerShell and run:

powershell.exe -ExecutionPolicy Bypass -File .\trigger.ps1

Alternatively, double-click run.cmd. A shell should open and print nt authority\system.

To rebuild the included binaries, install the Visual Studio C++ build tools and run:

powershell.exe -ExecutionPolicy Bypass -File .\build.ps1

Tested on Windows 11 25H2 build 26200.8737.

Root cause

WalletService resolves FOLDERID_Documents while impersonating the caller, then reverts to LocalSystem before opening <Documents>\Wallet\wallet.db. It accepts a caller-created database and enables ESE persisted callbacks. Opening the Cards table resolves the callback path stored in the database schema and loads the specified DLL as SYSTEM.