CVE-2024-12254
Unbounded memory buffering in SelectorSocketTransport.writelines()
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
Unbounded memory buffering in SelectorSocketTransport.writelines()
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
CVE-2024-12254- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-770, CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2024-50718
8.7
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
EUVD-2024-50718- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-ph84-rcj2-fxxm
8.7
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not ...
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
GHSA-ph84-rcj2-fxxm- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-770
- Updated
- 2026-11-02
NVD
8.7
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
CVE-2024-12254- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-770
- Updated
- 2026-11-02
OSVALPINE-CVE-2024-12254
8.7
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
ALPINE-CVE-2024-12254- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVBELL-CVE-2024-12254
7.5
- Record
BELL-CVE-2024-12254- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 22 moreShow less
OSV
8.7
Unbounded memory buffering in SelectorSocketTransport.writelines()
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
CVE-2024-12254- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-400, CWE-770
- Updated
- 2026-11-04
OSVDEBIAN-CVE-2024-12254
8.7
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion. This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
DEBIAN-CVE-2024-12254- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVRHBA-2025:6294
7.5
Red Hat Bug Fix Advisory: python3.12 bug fix and enhancement update
- Record
RHBA-2025:6294- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2024:10978
7.5
Red Hat Security Advisory: python3.12 security update
- Record
RHSA-2024:10978- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2024:10980
7.5
Red Hat Security Advisory: python3.12 security update
- Record
RHSA-2024:10980- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2024:11035
7.5
Red Hat Security Advisory: python3.12 security update
- Record
RHSA-2024:11035- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2024-12254
8.7
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion. This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
UBUNTU-CVE-2024-12254- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVALSA-2024:10978 No score
Important: python3.12 security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- python: Virtual environment (venv) activation scripts don't quote paths (CVE-2024-9287)
- python: Unbounded memory buffering in SelectorSocketTransport.writelines() (CVE-2024-12254)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2024:10978- Updated
- 2026-11-02
OSVALSA-2024:10980 No score
Important: python3.12 security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- python: Virtual environment (venv) activation scripts don't quote paths (CVE-2024-9287)
- python: Unbounded memory buffering in SelectorSocketTransport.writelines() (CVE-2024-12254)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2024:10980- Updated
- 2026-11-02
OSVAZL-54042 No score
CVE-2024-12254 affecting package python3 for versions less than 3.12.3-5
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
AZL-54042- Updated
- 2026-11-02
OSVBIT-libpython-2024-12254 No score
Unbounded memory buffering in SelectorSocketTransport.writelines()
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
BIT-libpython-2024-12254- Updated
- 2026-11-02
OSVBIT-python-2024-12254 No score
Unbounded memory buffering in SelectorSocketTransport.writelines()
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
BIT-python-2024-12254- Updated
- 2026-11-02
OSVBIT-python-min-2024-12254 No score
Unbounded memory buffering in SelectorSocketTransport.writelines()
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
BIT-python-min-2024-12254- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:14581-1 No score
python312-3.12.8-1.1 on GA media
These are all security issues fixed in the python312-3.12.8-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:14581-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:14691-1 No score
python313-3.13.1-1.1 on GA media
These are all security issues fixed in the python313-3.13.1-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14691-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:14998-1 No score
python311-aiohttp-3.11.16-1.1 on GA media
These are all security issues fixed in the python311-aiohttp-3.11.16-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14998-1- Updated
- 2026-11-02
OSVPSF-2024-14 No score
Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion.
This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.
- Record
PSF-2024-14- Updated
- 2026-11-02
OSVRLSA-2024:10980 No score
Important: python3.12 security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
-
python: Virtual environment (venv) activation scripts don't quote paths (CVE-2024-9287)
-
python: Unbounded memory buffering in SelectorSocketTransport.writelines() (CVE-2024-12254)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2024:10980- Updated
- 2026-11-02
OSVSUSE-SU-2024:4291-1 No score
Security update for python312
This update for python312 fixes the following issues:
- CVE-2024-12254: Fixed unbounded memory buffering in SelectorSocketTransport.writelines() (bsc#1234290)
Other fixes:
- Updated to version 3.12.8
- Remove -IVendor/ from python-config (bsc#1231795)
- Record
SUSE-SU-2024:4291-1- Updated
- 2026-11-02
OSVSUSE-SU-2025:02074-1 No score
Security update for python313
This update for python313 fixes the following issues:
Update to version 3.13.5.
Security issues fixed:
- CVE-2025-4517: arbitrary filesystem writes outside the extraction directory during extraction with filter='data' (bsc#1244032)
- CVE-2025-4516: use-after-free in the unicode-escape decoder when using the error handler (bsc#1243273).
- CVE-2025-4330: extraction filter bypass for linking outside extraction directory (bsc#1244060)
- CVE-2025-4138: may allow symlink targets to point outside the destination directory, and the modification of some file metadata. (bsc#1244059)
- CVE-2025-0938: domain names containing square brackets are not identified as incorrect by urlparse (bsc#1236705).
- CVE-2024-12718: bypass extraction filter to modify file metadata outside extraction directory (bsc#1244056)
- CVE-2024-12254: memory exhaustion due to unbounded memory buffering in
SelectorSocketTransport.writelines()(bsc#1234290).
Other changes and issues fixed:
Changes from 3.13.5:
-
Tests
- gh-135120: Add test.support.subTests().
-
Library
- gh-133967: Do not normalize locale name ‘C.UTF-8’ to ‘en_US.UTF-8’.
- gh-135326: Restore support of integer-like objects with index() in random.getrandbits().
- gh-135321: Raise a correct exception for values greater than 0x7fffffff for the BINSTRING opcode in the C implementation of pickle.
- gh-135276: Backported bugfixes in zipfile.Path from zipp 3.23. Fixed .name, .stem and other basename-based properties on Windows when working with a zipfile on disk.
- gh-134151: email: Fix TypeError in email.utils.decode_params() when sorting RFC 2231 continuations that contain an unnumbered section.
- gh-134152: email: Fix parsing of email message ID with invalid domain.
- gh-127081: Fix libc thread safety issues with os by replacing getlogin with getlogin_r re-entrant version.
- gh-131884: Fix formatting issues in json.dump() when both indent and skipkeys are used.
-
Core and Builtins
- gh-135171: Roll back changes to generator and list comprehensions that went into 3.13.4 to fix gh-127682, but which involved semantic and bytecode changes not appropriate for a bugfix release.
-
C API
- gh-134989: Fix Py_RETURN_NONE, Py_RETURN_TRUE and Py_RETURN_FALSE macros in the limited C API 3.11 and older: don’t treat Py_None, Py_True and Py_False as immortal. Patch by Victor Stinner.
- gh-134989: Implement PyObject_DelAttr() and PyObject_DelAttrString() as macros in the limited C API 3.12 and older. Patch by Victor Stinner.
Changes from 3.13.4:
-
Security
- gh-135034: Fixes multiple issues that allowed tarfile extraction filters (filter='data' and filter='tar') to be bypassed using crafted symlinks and hard links. Addresses CVE-2024-12718 (bsc#1244056), CVE-2025-4138 (bsc#1244059), CVE-2025-4330 (bsc#1244060), and CVE-2025-4517 (bsc#1244032).
- gh-133767: Fix use-after-free in the “unicode-escape” decoder with a non-“strict” error handler (CVE-2025-4516, bsc#1243273).
- gh-128840: Short-circuit the processing of long IPv6 addresses early in ipaddress to prevent excessive memory consumption and a minor denial-of-service.
-
Library
- gh-134718: ast.dump() now only omits None and [] values if they are default values.
- gh-128840: Fix parsing long IPv6 addresses with embedded IPv4 address.
- gh-134696: Built-in HACL* and OpenSSL implementations of hash function constructors now correctly accept the same documented named arguments. For instance, md5() could be previously invoked as md5(data=data) or md5(string=string) depending on the underlying implementation but these calls were not compatible. Patch by Bénédikt Tran.
- gh-134210: curses.window.getch() now correctly handles …
- Record
SUSE-SU-2025:02074-1- Updated
- 2026-11-02
OSVSUSE-SU-2025:0521-1 No score
Security update for python312
This update for python312 fixes the following issues:
- CVE-2025-0938: Functions
urllib.parse.urlsplitandurlparseaccept domain names including square brackets (bsc#1236705). - CVE-2024-12254: Unbounded memory buffering in SelectorSocketTransport.writelines() (bsc#1234290).
Other bugfixes:
- Position of SUSE Python interpreters on Externally managed environments (bsc#1228165).
- Record
SUSE-SU-2025:0521-1- Updated
- 2026-11-02
OSVUSN-7219-1 No score
python3.12 vulnerability
It was discovered that Python incorrectly handled asyncio write buffers. A remote attacker could possibly use this issue to cause Python to consume memory, leading to a denial of service.
- Record
USN-7219-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
python3Alpine:v3.20 |
before 3.12.8-r1 | 3.12.8-r1 |
python3Alpine:v3.21 |
before 3.12.8-r1 | 3.12.8-r1 |
python3Alpine:v3.22 |
before 3.12.8-r1 | 3.12.8-r1 |
python3Alpine:v3.23 |
before 3.12.8-r1 | 3.12.8-r1 |
python3Alpine:v3.24 |
before 3.12.8-r1 | 3.12.8-r1 |
python3.12AlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
python3.12-debugAlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
python3.12-develAlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
python3.12-idleAlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
python3.12-libsAlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
Show 85 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python3.12-testAlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
python3.12-tkinterAlmaLinux:9 From an advisory covering 2 CVEs |
before 3.12.5-2.el9_5.2 | 3.12.5-2.el9_5.2 |
python3.12AlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-debugAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-develAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-idleAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-libsAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-rpm-macrosAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-testAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3.12-tkinterAlmaLinux:8 From an advisory covering 2 CVEs |
before 3.12.8-1.el8_10 | 3.12.8-1.el8_10 |
python3Azure Linux:3 |
before 3.12.3-5 | 3.12.3-5 |
python3Alpaquita:stream |
3.12.3-r0 up to 3.12.8-r1 | 3.12.8-r1 |
python3BellSoft Hardened Containers:stream |
3.12.3-r0 up to 3.12.8-r1 | 3.12.8-r1 |
libpythonBitnami |
3.12.0 up to 3.12.9, 3.13.0 up to 3.13.2 | 3.12.93.13.2 |
pythonBitnami |
3.12.0 up to 3.12.9, 3.13.0 up to 3.13.2 | 3.12.93.13.2 |
python-minBitnami |
3.12.0 up to 3.12.9, 3.13.0 up to 3.13.2 | 3.12.93.13.2 |
python3.13Debian:13 |
before 3.13.1-2 | 3.13.1-2 |
python-unversioned-commandRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3-develRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3-tkinterRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3.12-debuginfoRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3.12-debugsourceRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3Red Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3-libsRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3.12Red Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3-debugRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3-idleRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3-testRed Hat:enterprise_linux:10.0 From an advisory covering 4 CVEs |
before 0:3.12.9-1.el10 | 0:3.12.9-1.el10 |
python3.12Red Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-debuginfoRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-debugsourceRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-develRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-libsRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-tkinterRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12Red Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-debugRed Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-debuginfoRed Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-debugsourceRed Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-idleRed Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-testRed Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12-tkinterRed Hat:enterprise_linux:9::crb From an advisory covering 2 CVEs |
before 0:3.12.5-2.el9_5.2 | 0:3.12.5-2.el9_5.2 |
python3.12Red Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-debuginfoRed Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-debugsourceRed Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-develRed Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-libsRed Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-rpm-macrosRed Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-tkinterRed Hat:enterprise_linux:8::appstream From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12Red Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-debugRed Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-debuginfoRed Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-debugsourceRed Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-idleRed Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-testRed Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12-tkinterRed Hat:enterprise_linux:8::crb From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python3.12Red Hat:rhel_eus:9.4::appstream From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-debuginfoRed Hat:rhel_eus:9.4::appstream From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-debugsourceRed Hat:rhel_eus:9.4::appstream From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-develRed Hat:rhel_eus:9.4::appstream From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-libsRed Hat:rhel_eus:9.4::appstream From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-tkinterRed Hat:rhel_eus:9.4::appstream From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12Red Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-debugRed Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-debuginfoRed Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-debugsourceRed Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-idleRed Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-testRed Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12-tkinterRed Hat:rhel_eus:9.4::crb From an advisory covering 2 CVEs |
before 0:3.12.1-4.el9_4.5 | 0:3.12.1-4.el9_4.5 |
python3.12Rocky Linux:8 From an advisory covering 2 CVEs |
before 0:3.12.8-1.el8_10 | 0:3.12.8-1.el8_10 |
python312SUSE:Linux Enterprise Module for Python 3 15 SP6 |
before 3.12.8-150600.3.12.1 | 3.12.8-150600.3.12.1 |
python312-coreSUSE:Linux Enterprise Module for Python 3 15 SP6 |
before 3.12.8-150600.3.12.1 | 3.12.8-150600.3.12.1 |
python312openSUSE:Leap 15.6 |
before 3.12.8-150600.3.12.1 | 3.12.8-150600.3.12.1 |
python312-coreopenSUSE:Leap 15.6 |
before 3.12.8-150600.3.12.1 | 3.12.8-150600.3.12.1 |
python312-documentationopenSUSE:Leap 15.6 |
before 3.12.8-150600.3.12.1 | 3.12.8-150600.3.12.1 |
python313SUSE:Linux Enterprise Module for Python 3 15 SP7 From an advisory covering 9 CVEs |
before 3.13.5-150700.4.11.1 | 3.13.5-150700.4.11.1 |
python313-coreSUSE:Linux Enterprise Module for Python 3 15 SP7 From an advisory covering 9 CVEs |
before 3.13.5-150700.4.11.1 | 3.13.5-150700.4.11.1 |
python312SUSE:Linux Enterprise Module for Python 3 15 SP6 From an advisory covering 2 CVEs |
before 3.12.9-150600.3.18.1 | 3.12.9-150600.3.18.1 |
python312-coreSUSE:Linux Enterprise Module for Python 3 15 SP6 From an advisory covering 2 CVEs |
before 3.12.9-150600.3.18.1 | 3.12.9-150600.3.18.1 |
python312openSUSE:Leap 15.6 From an advisory covering 2 CVEs |
before 3.12.9-150600.3.18.1 | 3.12.9-150600.3.18.1 |
python312-coreopenSUSE:Leap 15.6 From an advisory covering 2 CVEs |
before 3.12.9-150600.3.18.1 | 3.12.9-150600.3.18.1 |
python312-documentationopenSUSE:Leap 15.6 From an advisory covering 2 CVEs |
before 3.12.9-150600.3.18.1 | 3.12.9-150600.3.18.1 |
python3.12Ubuntu:24.04:LTS |
before 3.12.3-1ubuntu0.4, plus listed versions 3.12.0-13.12.0-53.12.0-63.12.0-73.12.1-2 Show 8 moreShow less3.12.2-13.12.2-4build33.12.2-4build43.12.2-5ubuntu33.12.3-13.12.3-1ubuntu0.13.12.3-1ubuntu0.23.12.3-1ubuntu0.3 |
3.12.3-1ubuntu0.4 |
python312openSUSE:Tumbleweed |
before 3.12.8-1.1 | 3.12.8-1.1 |
python313openSUSE:Tumbleweed |
before 3.13.1-1.1 | 3.13.1-1.1 |
python-aiohttpopenSUSE:Tumbleweed |
before 3.11.16-1.1 | 3.11.16-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2024-12254 is a high vulnerability (CVSS 8.7) in Python Software Foundation Cpython, published December 6, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.87%, the 79th percentile. Fixed in python3 3.12.8-r1.
References
github.com/python/cpython/issues/127655
github.com/python/cpython/pull/127656
mail.python.org/archives/list/[email protected]/thread/H4O3UBAOAQQXGT4RE3E4XQYR5XLROORB
github.com/python/cpython/commit/71e8429ac8e2adc10084ab5ec29a62f4b6671a82
github.com/python/cpython/commit/9aa0deb2eef2655a1029ba228527b152353135b5
github.com/python/cpython/commit/e991ac8f2037d78140e417cc9a9486223eb3e786
Show 76 moreShow less
openwall.com/lists/oss-security/2024/12/06/1
security.netapp.com/advisory/ntap-20250404-0010
nvd.nist.gov/vuln/detail/CVE-2024-12254
github.com/advisories/GHSA-ph84-rcj2-fxxm
security.alpinelinux.org/vuln/CVE-2024-12254
access.redhat.com/errata/RHSA-2024:10978
access.redhat.com/security/cve/CVE-2024-12254
access.redhat.com/security/cve/CVE-2024-9287
bugzilla.redhat.com/2321440
bugzilla.redhat.com/2330804
errata.almalinux.org/9/ALSA-2024-10978.html
access.redhat.com/errata/RHSA-2024:10980
errata.almalinux.org/8/ALSA-2024-10980.html
docs.bell-sw.com/security/cves/CVE-2024-12254
docs.bell-sw.com/security/advisories/BELL-SA-2024-62
github.com/CVEProject/cvelistV5/tree/main/cves/2024/12xxx/CVE-2024-12254.json
github.com/python/cpython
security-tracker.debian.org/tracker/CVE-2024-12254
access.redhat.com/errata/RHBA-2025:6294
docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/10.0_release_notes/index
security.access.redhat.com/data/csaf/v2/advisories/2025/rhba-2025_6294.json
access.redhat.com/security/cve/CVE-2024-6232
bugzilla.redhat.com/show_bug.cgi?id=2309426
cve.org/CVERecord?id=CVE-2024-6232
nvd.nist.gov/vuln/detail/CVE-2024-6232
github.com/python/cpython/issues/121285
github.com/python/cpython/pull/121286
mail.python.org/archives/list/[email protected]/thread/JRYFTPRHZRTLMZLWQEUHZSJXNHM4ACTY
bugzilla.redhat.com/show_bug.cgi?id=2321440
cve.org/CVERecord?id=CVE-2024-9287
nvd.nist.gov/vuln/detail/CVE-2024-9287
github.com/python/cpython/issues/124651
github.com/python/cpython/pull/124712
mail.python.org/archives/list/[email protected]/thread/RSPJ2B5JL22FG3TKUJ7D7DQ4N5JRRBZL
bugzilla.redhat.com/show_bug.cgi?id=2330804
cve.org/CVERecord?id=CVE-2024-12254
access.redhat.com/security/cve/CVE-2025-0938
bugzilla.redhat.com/show_bug.cgi?id=2343237
cve.org/CVERecord?id=CVE-2025-0938
nvd.nist.gov/vuln/detail/CVE-2025-0938
github.com/python/cpython/issues/105704
github.com/python/cpython/pull/129418
access.redhat.com/security/updates/classification
security.access.redhat.com/data/csaf/v2/advisories/2024/rhsa-2024_10978.json
security.access.redhat.com/data/csaf/v2/advisories/2024/rhsa-2024_10980.json
access.redhat.com/errata/RHSA-2024:11035
security.access.redhat.com/data/csaf/v2/advisories/2024/rhsa-2024_11035.json
errata.rockylinux.org/RLSA-2024:10980
suse.com/support/update/announcement/2024/suse-su-20244291-1
bugzilla.suse.com/1231795
bugzilla.suse.com/1234290
suse.com/security/cve/CVE-2024-12254
suse.com/support/update/announcement/2025/suse-su-202502074-1
bugzilla.suse.com/1228165
bugzilla.suse.com/1232241
bugzilla.suse.com/1236705
bugzilla.suse.com/1238450
bugzilla.suse.com/1239210
bugzilla.suse.com/1243273
bugzilla.suse.com/1244032
bugzilla.suse.com/1244056
bugzilla.suse.com/1244059
bugzilla.suse.com/1244060
suse.com/security/cve/CVE-2024-12718
suse.com/security/cve/CVE-2024-9287
suse.com/security/cve/CVE-2025-0938
suse.com/security/cve/CVE-2025-1795
suse.com/security/cve/CVE-2025-4138
suse.com/security/cve/CVE-2025-4330
suse.com/security/cve/CVE-2025-4516
suse.com/security/cve/CVE-2025-4517
suse.com/support/update/announcement/2025/suse-su-20250521-1
ubuntu.com/security/CVE-2024-12254
ubuntu.com/security/notices/USN-7219-1
lists.opensuse.org/archives/list/[email protected]/thread/ISOWT6LAVQJGGZIVXB2VE32LIUJZ5SHC
lists.opensuse.org/archives/list/[email protected]/thread/2PXX7J56STECCADEPVF5ZNR6YWJNV4HZ
Left out here: the rest of 1 source description. The JSON record has them.