Critical CVSS 8.1 EPSS 0.7035 🔬 Patch diffed 2022-05 archive

Executive Summary

None

Overview

8.1
CVSS HIGH
Critical
MS Severity
Not Exploited
MS Exploit Status
More Likely
MS Exploit Likelihood
Category Remote Code Execution
Released May 10 2022
Last Updated May 10 2022
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.7035 — 0.99328 percentile
NVD CVSS 8.1 HIGH — matches MSRC

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
ATTACK VECTOR
Network
ATTACK COMPLEXITY
High
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.7035
probability of exploitation in the next 30 days
0.99328 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

28 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

8 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

ghidriff · raspptp.sys (KB5013941)

Remote pre-auth kernel use-after-free -> double-free (CWE-416/CWE-362) in the Windows PPTP VPN driver raspptp.sys (TCP 1723 control connection, RRAS). PPTP Calls (each a CtlCall context) can be looked up two ways by Call ID: a global Call-ID-indexed array (CallGetCall, returns ANY call from ANY control connection) or the per-control-connection linked list (EnumListEntry/EnumComplete). Several control-connection handlers wrongly use CallGetCall - reaching other connections' calls - and PPTP handling runs concurrently, so two paths race the same CtlCall: (1) closing a control connection walks its call linked list and frees each call via CtlpCleanup; (2) an OutgoingCallReply with an error frees the call it relates to, looked up via CallGetCall. Consecutively these free the same CtlCall twice -> UAF/double-free in kernel pool. IN-HOUSE ghidriff of raspptp.sys 10.0.19041.1586 -> .1706 (May 10 2022) confirms the fix: the May build reworks call/control object lifetime with rundown protection (ExInitialize/Acquire/Release/WaitForRundownProtectionRelease/ExRundownCompleted) and new ReferenceRefCount/DereferenceRefCount across CallGetCall/CallReceiveDatagramCallback/CtlpCleanup/CtlpEngine so a call is freed only once no user remains. Not feature-gated (2022). Same overhaul fixes the sibling CVE-2022-21972. Credit: Yuki Chen, Lewis Lee, liubenjin (QI-ANXIN), Alex Nichols.

Pre-patch version 10.0.19041.1586 Download
Post-patch version 10.0.19041.1706 Download
Function Address Change Note
CallGetCall code change code (reference/rundown on call lookup) Pre: returns the CtlCall for a Call ID from the global array with no lifetime guard, letting control-connection handlers reach and free other connections' calls. Post: reworked to take a reference / rundown protection so a looked-up call cannot be freed out from under a concurrent user.
CtlpCleanup / CallReceiveDatagramCallback / CtlpEngine code change code (serialized free via refcount/rundown) Call teardown and datagram/receive paths updated to release a call only after ExWaitForRundownProtectionRelease / DereferenceRefCount reports no user remains - eliminating the double-free between control-connection close and errored OutgoingCallReply.
ReferenceRefCount / DereferenceRefCount + Ex*RundownProtection* new/added added (object-lifetime primitives) New reference counting and rundown-protection barriers introduced in May 2022 across the PPTP call/control objects.
View full diff report View RCA report

Attack Path

Two threads free the same PPTP call context - one closing the connection, one via a global Call-ID lookup - double-freeing kernel pool

Attack path for CVE-2022-23270 Two threads free the same PPTP call context - one closing the connection, one via a global Call-ID lookup - double-freeing kernel pool 01 — ENTRY Remote unauthenticated attacker opens a PPTP control connection to TCP 1723 raspptp.sys accepts PPTP control connections pre-auth. The attacker sets up a Call and learns its server-generated Call ID from the Incoming/Outgoing call reply. 02 — CONTROLLED INPUT Uses the Call ID across handlers that call the global CallGetCall CallGetCall retrieves a CtlCall from a global Call-ID-indexed array and can return calls owned by ANY control connection - not just the caller's linked list. 03 — PATH Races connection-close cleanup against an errored OutgoingCallReply Thread A closes a control connection: CtlpCleanup walks CtlCallDoubleLinkedList and frees each CtlCall. Thread B sends OutgoingCallReply with an error, which frees the same call looked up via CallGetCall. 04 — MISSING CHECK The same CtlCall is freed on two threads with no serialization Cross-connection access (CallGetCall) plus unsynchronised frees let both paths release the same call context - a use-after-free that becomes a double-free (CWE-416/CWE-362). 05 — PRIMITIVE Kernel double-free of the call context -> remote kernel RCE The call allocation is freed twice and reused; the resulting kernel corruption yields DoS at minimum and RCE with heap grooming. The May 2022 fix adds rundown protection + ReferenceRefCount/DereferenceRefCount so a call is freed only once, after all users release 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.

Known Exploits

Acknowledgments

Yuki Chen
Lewis Lee
liubenjin with Codesafe Team of Legendsec at QI-ANXIN Group
Alex Nichols