CVE-2022-21972 — Windows Point-to-Point Tunneling Protocol Remote Code Execution Vulnerability
Executive Summary
None
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 for 32-bit Systems | 5013963 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 for x64-based Systems | 5013963 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1607 for 32-bit Systems | 5013952 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5013952 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5013941 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for ARM64-based Systems | 5013941 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5013941 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1909 for 32-bit Systems | 5013945 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1909 for ARM64-based Systems | 5013945 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1909 for x64-based Systems | 5013945 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 20H2 for 32-bit Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 20H2 for ARM64-based Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H1 for 32-bit Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H1 for ARM64-based Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H1 for x64-based Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 version 21H2 for ARM64-based Systems | 5013943 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 version 21H2 for x64-based Systems | 5013943 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 7 for 32-bit Systems Service Pack 1 5014012 (Monthly Rollup) 5013999 (Security Only) Critical Remote Code Execution 5012626 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 6.1.7601.25954 Yes 5014012 5013999 Windows 7 for x64-based Systems Service Pack 1 5014012 (Monthly Rollup) 5013999 (Security Only) Critical Remote Code Execution 5012626 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 6.1.7601.25954 Yes 5014012 5013999 Windows 8.1 for 32-bit systems 5014011 (Monthly Rollup) 5014001 (Security Only) Critical Remote Code Execution 5012670 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 6.3.9600.20371 6.3.9600.20365 Yes 5014011 5014001 Windows 8.1 for x64-based systems 5014011 (Monthly Rollup) 5014001 (Security Only) Critical Remote Code Execution 5012670 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 6.3.9600.20371 6.3.9600.20365 Yes 5014011 5014001 Windows RT 8.1 | 5014025 (ServicingStackUpdate) |
Critical | Remote Code Execution | Yes |
| Windows Server 2008 for 32-bit Systems Service Pack 2 5014010 (Monthly Rollup) 5014006 (Security Only) Critical Remote Code Execution 5012658 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 6.0.6003.21481 Yes 5014010 5014006 Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) 5014010 (Monthly Rollup) 5014006 (Security Only) Critical Remote Code Execution 5012658 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 6.0.6003.21481 Yes 5014010 5014006 Windows Server 2008 for x64-based Systems Service Pack 2 5014010 (Monthly Rollup) 5014006 (Security Only) Critical Remote Code Execution 5012658 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 6.0.6003.21481 Yes 5014010 5014006 Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation) 5014010 (Monthly Rollup) 5014006 (Security Only) Critical Remote Code Execution 5012658 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 6.0.6003.21481 Yes 5014010 5014006 Windows Server 2008 R2 for x64-based Systems Service Pack 1 5014012 (Monthly Rollup) 5013999 (Security Only) Critical Remote Code Execution 5012626 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 6.1.7601.25954 Yes 5014012 5013999 Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) 5014012 (Monthly Rollup) 5013999 (Security Only) Critical Remote Code Execution 5012626 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 6.1.7601.25954 Yes 5014012 5013999 Windows Server 2012 5014017 (Monthly Rollup) 5014018 (Security Only) Critical Remote Code Execution 5012650 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 6.2.9200.23714 Yes 5014017 5014018 Windows Server 2012 (Server Core installation) 5014017 (Monthly Rollup) 5014018 (Security Only) Critical Remote Code Execution 5012650 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 6.2.9200.23714 Yes 5014017 5014018 Windows Server 2012 R2 5014011 (Monthly Rollup) 5014001 (Security Only) Critical Remote Code Execution 5012670 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 6.3.9600.20371 6.3.9600.20365 Yes 5014011 5014001 Windows Server 2012 R2 (Server Core installation) 5014011 (Monthly Rollup) 5014001 (Security Only) Critical Remote Code Execution 5012670 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 6.3.9600.20371 6.3.9600.20365 Yes 5014011 5014001 Windows Server 2016 | 5013952 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 (Server Core installation) | 5013952 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 | 5013941 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 (Server Core installation) | 5013941 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2022 | 5013944 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2022 (Server Core installation) | 5013944 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server, version 20H2 (Server Core Installation) | 5013942 (Security Update) |
Critical | Remote Code Execution | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5013963 |
Security Update | Yes |
5013952 |
Security Update | Yes |
5013941 |
Security Update | Yes |
5013945 |
Security Update | Yes |
5013942 |
Security Update | Yes |
5013943 |
Security Update | Yes |
5014025 |
ServicingStackUpdate | Yes |
5013944 |
Security Update | Yes |
Patch Diff
Remote pre-auth kernel use-after-free (CWE-416, race CWE-362) in the Windows PPTP VPN driver raspptp.sys, on the TCP 1723 control connection (RRAS). WskAcceptCompletion -> CtlConnectQueryCallback -> CtlAlloc allocates the PPTP control-connection context PptpCtlCtx (0x290 bytes, pool tag 'TPTP'). The context is used concurrently by the control state machine (CtlpEngine), the receive callback (CtlReceiveCallback), and the death/wait timers (CtlpDeathTimeout/CtlpWaitTimeout), while its teardown (CtlpCleanup) can run in parallel - and its lifetime was not safely reference-counted, so one path frees PptpCtlCtx while another still dereferences it (UAF), reliably triggerable by crafted control traffic. IN-HOUSE ghidriff of raspptp.sys 10.0.19041.1586 -> .1706 (May 10 2022) confirms the fix: the May build overhauls PPTP object lifetime, adding rundown protection (ExInitialize/Acquire/Release/WaitForRundownProtectionRelease/ExRundownCompleted) and new ReferenceRefCount/DereferenceRefCount helpers across CtlAlloc/CtlpCleanup/CtlpEngine/CtlReceiveCallback/CtlpDeathTimeout so a free waits for in-flight users. Not feature-gated (2022). The same overhaul fixes the sibling CVE-2022-23270. Credit: Alex Nichols (@i4mchr00t), Yuki Chen (@guhe120).
| Function | Address | Change | Note |
|---|---|---|---|
CtlpCleanup / CtlpEngine / CtlReceiveCallback / CtlpDeathTimeout |
code change |
code (object-lifetime rework: rundown protection + refcount) | Control-context (PptpCtlCtx) use/free paths reworked to acquire rundown protection / a reference while using the context and to free only after ExWaitForRundownProtectionRelease / DereferenceRefCount reports no user remains. |
ReferenceRefCount / DereferenceRefCount |
new/added |
added (explicit reference counting) | New helpers introduced by the May 2022 build to reference-count PPTP control/call objects, closing the free-while-in-use window. |
Ex*RundownProtection* |
newly imported/called |
added (rundown barriers) | ExInitializeRundownProtection/ExAcquireRundownProtection/ExReleaseRundownProtection/ExWaitForRundownProtectionRelease/ExRundownCompleted added so a free waits for all in-flight users before releasing the object. |
Attack Path
The PPTP control-connection context is freed while a concurrent control-packet path still uses it
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.