Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend oversized UDP/TCP packet
-
DeliveryTrigger sock_recvfrom_into() with insufficient buffer
-
ExploitOverflow writes attacker data beyond bounds
-
ExecutionCorrupt heap metadata or function pointers
-
PersistRedirect execution flow
-
ImpactExecute arbitrary code as Python process
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Windows operating system required - Linux, macOS, and Unix platforms are not vulnerable due to different asyncio event loop implementations. Application code must explicitly use asyncio.ProactorEventLoop (Windows default since Python 3.8) AND call the sock_recvfrom_into() method with the nbytes parameter AND accept network data from untrusted sources. Most Python web frameworks (Django, Flask, FastAPI) do not directly expose this low-level asyncio API, limiting exposure to custom network protocol implementations. Exploitation success further constrained by: process memory layout (requires predictable heap structure), Windows ASLR configuration (randomizes memory addresses), and DEP/NX protections (prevent direct shellcode execution from data regions). These system-level mitigations increase attack complexity beyond the CVSS AC:L rating, though a determined attacker with multiple attempts could overcome ASLR through information leaks or heap spraying techniques. |
| Impact | Real-world risk is moderate despite the 8.8 CVSS score due to significant exploitation constraints. CVSS vector (AV:N/AC:L/PR:N/UI:N) indicates network-accessible attack requiring no authentication, but impact is tempered by multiple factors: (1) Windows-only - eliminates Linux/Unix server deployments which dominate Python backend infrastructure, (2) Requires application code specifically using asyncio.ProactorEventLoop.sock_recvfrom_into() with the nbytes parameter - not a default code path in common frameworks, (3) Exploitation complexity depends on memory layout and ASLR/DEP mitigations in modern Windows, reducing reliable code execution scenarios. No EPSS score, KEV status, or POC availability data provided - absence of active exploitation indicators suggests this is a code-quality fix rather than an observed attack vector. SSVC assessment: exploitation status unknown, not automatable (requires specific API usage pattern), technical impact potentially high (memory corruption) but mitigated by platform and deployment constraints. Priority for organizations running Python network services on Windows with custom asyncio implementations; lower priority for typical Linux-hosted web applications. |
| Exploit ScenarioDerived | An attacker sends a specially crafted network packet to a Windows-hosted Python application using asyncio.ProactorEventLoop for asynchronous socket operations. The application calls sock_recvfrom_into() with a fixed-size buffer but the incoming data exceeds this allocation. Without boundary validation, the method writes attacker-controlled payload beyond the buffer bounds, corrupting adjacent heap memory structures. Depending on memory layout, this could overwrite function pointers, vtable entries, or other critical data structures, potentially leading to control-flow hijacking and arbitrary code execution with the privileges of the Python process. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Apr 21, 2026
Out-of-bounds buffer write in CPython's asyncio.ProactorEventLoop (Windows only) allows remote attackers to trigger memory corruption via oversized network data. The sock_recvfrom_into() method lacks buffer size validation when the nbytes parameter is used, enabling writes beyond allocated memory boundaries. Patch available via GitHub PR #148809. CVSS 8.8 reflects network-accessible attack surface with no authentication required, though exploitation is platform-specific (Windows only) and requires specific asyncio usage patterns.
RemediationAI
Upgrade to the patched CPython version incorporating fix from GitHub pull request #148809 (https://github.com/python/cpython/pull/148809). Specific patched version number not confirmed in available data - consult the Python Security Announce mailing list thread at https://mail.python.org/archives/list/security-announce@python.org/thread/KWTPIQBOOOUNQP7UFSLBI437NJDFLA3F/ for exact release versions. If immediate patching is not feasible, implement compensating controls: (1) Audit application code for direct usage of sock_recvfrom_into() with nbytes parameter and add explicit buffer size validation before calls, (2) Deploy on Linux/Unix platforms where ProactorEventLoop is not used, eliminating exposure, (3) Enable Windows DEP (Data Execution Prevention) and ASLR system-wide to increase exploitation difficulty, though these do not eliminate the vulnerability. Note that moving to selector-based event loops (SelectorEventLoop) on Windows will change performance characteristics for high-concurrency applications. Code-level workaround trades developer effort for deployment flexibility; platform migration trades Windows-specific features for immediate risk elimination.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This vulnerability affects CPython's asyncio module, specifically the ProactorEventLoop implementation used exclusively on Windows platforms. The ProactorEventLoop uses Windows I/O Completion Ports (IOCP) for asynchronous I/O operations, unlike Unix-based systems which use selector-based event loops. The sock_recvfrom_into() method implements zero-copy network data reception by writing directly into a caller-provided buffer. CWE-787 (Out-of-bounds Write) occurs when the method fails to validate that incoming network data does not exceed the destination buffer size specified by the nbytes parameter. This is a classic buffer overflow vulnerability where the bounds check was omitted in the data copy operation, allowing adjacent memory regions to be overwritten with attacker-controlled network payload data.
Know when Cpython gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N
Primary rating from Vendor (PSF) · only source for this CVE.
CVSS VectorVendor: PSF
Lifecycle Timeline
3DescriptionCVE.org
The method "sock_recvfrom_into()" of "asyncio.ProacterEventLoop" (Windows only) was missing a boundary check for the data buffer when using nbytes parameter. This allowed for an out-of-bounds buffer write if data was larger than the buffer size. Non-Windows platforms are not affected.
Executive ViewAI
CVE-2026-3298 is a memory corruption vulnerability in CPython's asyncio library on Windows that allows unauthenticated remote attackers to crash applications or execute code by sending oversized network data to vulnerable event loop implementations. Organizations running Python asyncio-based services on Windows should prioritize patching to prevent denial-of-service and potential code execution attacks.
Apply vendor patch. Interim mitigation if patching is delayed: restrict network access to asyncio services using Windows firewall rules; disable ProactorEventLoop usage where possible and substitute SelectorEventLoop; implement input validation at application layer to reject oversized network payloads before asyncio processing.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Integrity bypass in CPython's stringprep module causes divergent domain name normalization when processing international
A use-after-free in CPython's ssl module lets a remote, unauthenticated TLS client crash a Python TLS server process - o
CPython decompression modules (lzma, bz2, gzip) allow memory corruption via use-after-free when decompressor instances a
Denial of service in CPython's tarfile module allows remote attackers to trigger an infinite loop by supplying a crafted
Stack-based buffer overflow in CPython's bz2.BZ2Decompressor allows remote attackers to crash Python applications by sen
Path traversal in CPython's tarfile module allows a crafted tar archive to bypass the 'data' and 'tar' extraction filter
Certificate hostname verification is silently skipped in CPython's TLS stack when an application enables SSLContext.chec
Command injection in CPython's webbrowser.open() API bypasses previous CVE-2026-4519 mitigation via specially crafted UR
The webbrowser.open() API in CPython accepts URLs with leading dashes, which certain web browsers interpret as command-l
Path traversal in CPython's tarfile module allows malicious tar archives to bypass the data_filter safety mechanism and
CPython's tarfile module on POSIX platforms creates empty directories outside the intended extraction destination when p
XML parsers in CPython's xml.parsers.expat and xml.etree.ElementTree modules use insufficient entropy for Expat hash-flo
EUVD-2026-24136
GHSA-3p9c-22jr-wq4x
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB