Critical CVSS 9.8 EPSS 0.00662 🔬 Patch diffed 2026-07 archive

Executive Summary

Use after free in Windows Secure Socket Tunneling Protocol (SSTP) allows an unauthorized attacker to execute code over a network.

Overview

9.8
CVSS CRITICAL
Critical
MS Severity
Not Exploited
MS Exploit Status
Exploitation Unlikely
MS Exploit Likelihood
Category Remote Code Execution
Released Jul 14 2026
Last Updated Jul 14 2026
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.00662 — 0.48571 percentile
NVD CVSS 9.8 CRITICAL — differs from MSRC

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C
ATTACK VECTOR
Network
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
None
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
High
AVAILABILITY
High
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 7.1

EPSS Score

0.00662
probability of exploitation in the next 30 days
0.48571 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

27 affected products
Product KB Article Severity Impact Restart Required
Windows 10 Version 1607 for 32-bit Systems 5099535 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 1607 for x64-based Systems 5099535 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 1809 for 32-bit Systems 5099538 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 1809 for x64-based Systems 5099538 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 21H2 for 32-bit Systems 5099539 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 21H2 for ARM64-based Systems 5099539 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 21H2 for x64-based Systems 5099539 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 22H2 for 32-bit Systems 5099539 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 22H2 for ARM64-based Systems 5099539 (Security Update) Critical Remote Code Execution Yes
Windows 10 Version 22H2 for x64-based Systems 5099539 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 24H2 for ARM64-based Systems 5101650 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 24H2 for x64-based Systems 5101650 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 25H2 for ARM64-based Systems 5101650 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 25H2 for x64-based Systems 5101650 (Security Update) Critical Remote Code Execution Yes
Windows 11 Version 26H1 for ARM64-based Systems 5101649 (Security Update) Critical Remote Code Execution Yes
Windows 11 version 26H1 for x64-based Systems 5095051 (Security Update) Critical Remote Code Execution Yes
Windows Server 2012 5099445 (Monthly Rollup) Critical Remote Code Execution Yes
Windows Server 2012 (Server Core installation) 5099445 (Monthly Rollup) Critical Remote Code Execution Yes
Windows Server 2012 R2 5099444 (Monthly Rollup) Critical Remote Code Execution Yes
Windows Server 2012 R2 (Server Core installation) 5099444 (Monthly Rollup) Critical Remote Code Execution Yes
Windows Server 2016 5099535 (Security Update) Critical Remote Code Execution Yes
Windows Server 2016 (Server Core installation) 5099535 (Security Update) Critical Remote Code Execution Yes
Windows Server 2019 5099538 (Security Update) Critical Remote Code Execution Yes
Windows Server 2019 (Server Core installation) 5099538 (Security Update) Critical Remote Code Execution Yes
Windows Server 2022 5099540 (Security Update) Critical Remote Code Execution Yes
Windows Server 2025 5099536 (Security Update) Critical Remote Code Execution Yes
Windows Server 2025 (Server Core installation) 5099536 (Security Update) Critical Remote Code Execution Yes

Patches

10 patches
Article Type Restart
5099535 Security Update Yes
5099538 Security Update Yes
5099539 Security Update Yes
5101650 Security Update Yes
5101649 Security Update Yes
5095051 Security Update Yes
5099445 Monthly Rollup Yes
5099444 Monthly Rollup Yes
5099540 Security Update Yes
5099536 Security Update Yes

Patch Diff

ghidriff · sstpsvc.dll (KB5101650)

Use-after-free (CWE-416) via an unsynchronized handle lookup in the Windows SSTP service sstpsvc.dll, Critical pre-auth network RCE. The service resolves a client-supplied 32-bit handle to a connection object through the handle table (SstpSvcGlobals index 22). PRE: HfGetPointerFromHandle32 was called WITHOUT holding the handle-table lock, and the object's lifetime reference was acquired outside that lock; only the object's own critical section (obj+288) was entered afterward. A concurrent handle removal (which takes the table lock) could remove the handle and drop the last reference, freeing the object, in the window between the lockless lookup and its use -> UAF. Diff of sstpsvc.dll 10.0.26100.8737 -> .8875 (Jul 14 2026, KB5101650) confirms the fix: gated behind CFR flag Feature_1207409977, the lookup AND the reference increment (obj+0xD0) are moved inside the handle-table critical section (SstpSvcGlobals+0xB8 / +184), synchronizing with concurrent handle removal that needs the same lock; release paths DereferenceRefCount(obj+0xD0). The object's own critical section is still acquired at the same later point. Note: our diff shows Feature_1207409977 (build/arch); the lookup+AddRef-under-table-lock is as described. AV:N/AC:H/PR:N.

Pre-patch version 10.0.26100.8737 Download
Post-patch version 10.0.26100.8875 Download
Function Address Change Note
HfGetPointerFromHandle32 caller (SSTP handle-resolve path) code change code (lookup+AddRef moved under table lock, CFR-gated) Pre: HfGetPointerFromHandle32(table, handle, &obj) with no table lock; ref taken outside the lock; only obj+288 critical section entered later. Post (Feature_1207409977): EnterCriticalSection(SstpSvcGlobals+0xB8); lookup; if found, obj+0xD0 refcount++ ; LeaveCriticalSection - so lookup+AddRef are atomic vs concurrent handle removal.
Feature_1207409977 gate added (CFR gate) CFR flag gating the table-lock-synchronized lookup/AddRef; original lockless path still ships when disabled.
View full diff report View RCA report

Attack Path

SSTP resolves a client handle to an object without the table lock, so a concurrent handle removal frees it mid-use

Attack path for CVE-2026-50694 SSTP resolves a client handle to an object without the table lock, so a concurrent handle removal frees it mid-use 01 — ENTRY Unauthenticated network client drives the SSTP service handle path sstpsvc.dll resolves a client 32-bit handle to a connection object via the handle table (SstpSvcGlobals idx 22). AV:N/PR:N, AC:H (race). 02 — CONTROLLED INPUT Concurrently triggers lookup and removal of the same handle Handle removal takes the table lock and can drop the object's last reference. 03 — PATH HfGetPointerFromHandle32 resolves the object WITHOUT the table lock Pre-patch the lookup and the lifetime reference acquisition are not serialized with removal; only the object's own critical section is entered afterward. 04 — MISSING CHECK Lookup/reference not atomic with concurrent removal (CWE-416) Between the lockless lookup and its use, another thread removes the handle and frees the object. 05 — PRIMITIVE Service uses the freed object -> use-after-free -> RCE The privileged, pre-auth SSTP service dereferences freed memory. The Jul 2026 fix (Feature_1207409977) does the lookup and refcount++ under the handle-table lock (SstpSvcGlobals+0xB8).

Derived from the patch delta: the checks added by the vendor identify which fields crossed a trust boundary unvalidated. Reachability and privilege are taken from the call chain in the RCA report.

Known Exploits

Acknowledgments

Microsoft has not published researcher acknowledgments for this CVE, or they are not yet reflected in our data source. Check the MSRC advisory directly for the most current credit information.