CVE-2026-62889 — Windows Secure Socket Tunneling Protocol (SSTP) Remote Code Execution Vulnerability
Executive Summary
Double free in Windows Secure Socket Tunneling Protocol (SSTP) allows an unauthorized attacker to execute code over a network.
Overview
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C
EPSS Score
Affected Products
| Product | KB Article | Severity | Impact | Restart Required |
|---|---|---|---|---|
| Windows 10 Version 1607 for 32-bit Systems | 5120418 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5120418 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5120238 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5120238 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5120249 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5120249 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5120249 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5120249 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5120249 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5120249 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5120240 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5120240 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5120994 (Security Hotpatch Update) 5121003 (Security Update) Critical Remote Code Execution 5101650 Base: 8.1 Temporal: 7.1 Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.9106 10.0.26100.9168 Yes None Windows 11 Version 24H2 for x64-based Systems 5121003 (Security Update) 5120994 (Security Hotpatch Update) Critical Remote Code Execution 5101650 Base: 8.1 Temporal: 7.1 Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.9168 10.0.26000.9106 Yes None Windows 11 Version 25H2 for ARM64-based Systems 5121003 (Security Update) 5120994 (Security Hotpatch Update) Critical Remote Code Execution 5101650 Base: 8.1 Temporal: 7.1 Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.9168 10.0.26100.9106 Yes None Windows 11 Version 25H2 for x64-based Systems 5121003 (Security Update) 5120994 (Security Hotpatch Update) Critical Remote Code Execution 5101650 Base: 8.1 Temporal: 7.1 Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.9168 10.0.26100.9106 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5121000 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5121000 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 | 5120386 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 (Server Core installation) | 5120386 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 R2 | 5120385 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5120385 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 | 5120418 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 (Server Core installation) | 5120418 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 | 5120238 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 (Server Core installation) | 5120238 (Security Update) |
Critical | Remote Code Execution | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5120418 |
Security Update | Yes |
5120238 |
Security Update | Yes |
5120249 |
Security Update | Yes |
5120240 |
Security Update | Yes |
5121000 |
Security Update | Yes |
5120386 |
Monthly Rollup | Yes |
5120385 |
Monthly Rollup | Yes |
Patch Diff
Double free (CWE-415) via a race in the Windows Secure Socket Tunneling Protocol service sstpsvc.dll SSTP-over-HTTP call-context handling, unauthenticated remote code execution (AV:N, AC:H race). SSTP tunnels PPP over HTTPS; sstpsvc processes HTTP request/response call contexts, each reference-counted (a refcount field at context+0xd0) and freed when the count reaches zero. The HTTP receive-completion callback SstpWebReceiveResponseCompletion drops the call-context reference (DereferenceRefCount(ctx+0xd0)); disconnect/cleanup paths (DisconnectServerHttpCallContext / InitiateCallContextCleanup / HttpThreadPoolRequestQueueCallback) also release it. PRE: under a race between the receive-completion path and the disconnect/cleanup path, the call-context reference could be dropped twice (or the context freed twice), a double free that corrupts the heap. Because the service is reachable over the network without authentication, the double free is a remote code-execution primitive (Microsoft rates it Critical, AC:H race). Diff of sstpsvc.dll 10.0.26100.8875 -> .9168 (Aug 11 2026, KB5121003) confirms the fix: gated behind CFR flag Feature_1207409977, SstpWebReceiveResponseCompletion restructures the DereferenceRefCount(ctx+0xd0) handling to use a null-guarded local (lVar10) so the call-context reference is dropped exactly once per path, and the surrounding cleanup (InitiateCallContextCleanup / DisconnectServerHttpCallContext / DereferenceRefCount) is reworked so the context is freed once. Note: the double-free fix is confirmed as the Feature_1207409977-gated rework of the call-context reference drop; the exact doubly-freed allocation is the reference-counted SSTP call context (freed at refcount zero).
| Function | Address | Change | Note |
|---|---|---|---|
SstpWebReceiveResponseCompletion |
code change |
code (call-context reference drop made single-path, CFR-gated) | Pre: DereferenceRefCount((int*)(ctx+0xd0)) dropped the call-context reference in a way that, racing the disconnect/cleanup path, could drop/free the context twice. Post (Feature_1207409977): uses a null-guarded local (lVar10) so the reference is dropped exactly once per path. |
DereferenceRefCount / InitiateCallContextCleanup / DisconnectServerHttpCallContext |
code change |
code (context reference/cleanup reworked) | Call-context reference release and cleanup ordering reworked so the reference-counted context is freed once across the completion/disconnect race. |
Feature_1207409977 |
gate |
added (CFR gate) | CFR flag (with Feature_2530182457) gating the single-drop reference handling; the original path still ships when disabled. |
Attack Path
An SSTP call context's reference is dropped twice in the HTTP receive-completion vs disconnect race, freeing it twice
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.
Exploits & PoC
Detection Rules
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.