Vulnerability · Published Sep 30, 2026 · Assigned by PSF
CVE-2026-19445Use-after-free of a server-side SSLContext when sni_callback switches contexts
Critical 9.2
In plain English
A critical-severity use-after-free in CPython from Python Software Foundation. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.5% (higher than 45% of all known vulnerabilities). Ready-made attack tooling exists: public proof-of-concept code. Fixed versions are available - upgrade the affected package.
Official description
A remote, unauthenticated TLS client can make a server crash or call through a freed pointer if its sni_callback assigns a different context to SSLSocket.context (the documented way to select a certificate per server name) and nothing else keeps the original ssl.SSLContext alive. Typical cases are servers that create an SSLContext per connection or replace it while connections are open; servers that wrap their listening socket with it are not affected. Mitigation: keep a reference to every SSLContext that sets sni_callback for the lifetime of the server. TLS clients are not affected.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| AlmaLinux:8 | platform-python | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:8 | platform-python-debug | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:8 | platform-python-devel | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:10 | python-unversioned-command | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:9 | python-unversioned-command | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3 | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:9 | python3 | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3-debug | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:9 | python3-debug | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3-devel | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:9 | python3-devel | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3-idle | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:8 | python3-idle | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:9 | python3-idle | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3-libs | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:8 | python3-libs | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:9 | python3-libs | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3-test | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:8 | python3-test | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:9 | python3-test | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:10 | python3-tkinter | 3.12.15-1.el10_2 | ALSA-2026:77020 |
| AlmaLinux:8 | python3-tkinter | 3.6.8-79.el8_10.alma.1 | ALSA-2026:85239 |
| AlmaLinux:9 | python3-tkinter | 3.9.25-7.el9_8.6 | ALSA-2026:89742 |
| AlmaLinux:8 | python3.12 | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12 | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:8 | python3.12-debug | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12-debug | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:8 | python3.12-devel | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12-devel | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:8 | python3.12-idle | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12-idle | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:8 | python3.12-libs | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12-libs | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:8 | python3.12-rpm-macros | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:8 | python3.12-test | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12-test | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:8 | python3.12-tkinter | 3.12.15-2.el8_10 | ALSA-2026:77028 |
| AlmaLinux:9 | python3.12-tkinter | 3.12.15-1.el9_8 | ALSA-2026:77017 |
| AlmaLinux:10 | python3.14 | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14 | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-debug | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-debug | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-devel | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-devel | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading-debug | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading-debug | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading-devel | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading-devel | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading-idle | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading-idle | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading-libs | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading-libs | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading-test | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading-test | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-freethreading-tkinter | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-freethreading-tkinter | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-idle | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-idle | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-libs | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-libs | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-test | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-test | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| AlmaLinux:10 | python3.14-tkinter | 3.14.8-1.el10_2 | ALSA-2026:77018 |
| AlmaLinux:9 | python3.14-tkinter | 3.14.8-1.el9_8 | ALSA-2026:77021 |
| Alpine:v3.21 | python3 | 3.12.15-r0 | ALPINE-CVE-2026-19445 |
| Alpine:v3.22 | python3 | 3.12.15-r0 | ALPINE-CVE-2026-19445 |
| Alpine:v3.23 | python3 | 3.12.15-r0 | ALPINE-CVE-2026-19445 |
| Alpine:v3.24 | python3 | 3.14.8-r0 | ALPINE-CVE-2026-19445 |
| Debian:12 | pypy3 | no fix listed | DEBIAN-CVE-2026-19445 |
| Debian:13 | pypy3 | no fix listed | DEBIAN-CVE-2026-19445 |
| Debian:14 | pypy3 | 8.0.1+dfsg-1 | DEBIAN-CVE-2026-19445 |
| Debian:12 | python3.11 | 3.11.2-6+deb12u9 | DEBIAN-CVE-2026-19445 |
| Debian:13 | python3.13 | no fix listed | DEBIAN-CVE-2026-19445 |
| Debian:14 | python3.14 | 3.14.8-1 | DEBIAN-CVE-2026-19445 |
| Debian:14 | python3.15 | 3.15.0~rc3-1 | DEBIAN-CVE-2026-19445 |
| Rocky Linux:8 | python3 | 0:3.6.8-79.el8_10.rocky.0 | RLSA-2026:85239 |
| Rocky Linux:10 | python3.12 | 0:3.12.15-1.el10_2 | RLSA-2026:77020 |
| Rocky Linux:8 | python3.12 | 0:3.12.15-2.el8_10 | RLSA-2026:77028 |
| Rocky Linux:9 | python3.12 | 0:3.12.15-1.el9_8 | RLSA-2026:77017 |
| Rocky Linux:10 | python3.14 | 0:3.14.8-1.el10_2 | RLSA-2026:77018 |
| Rocky Linux:9 | python3.14 | 0:3.14.8-1.el9_8 | RLSA-2026:77021 |
| Rocky Linux:9 | python3.9 | 0:3.9.25-7.el9_8.6 | RLSA-2026:89742 |
| Ubuntu:22.04:LTS | python3.10 | no fix listed | UBUNTU-CVE-2026-19445 |
| Ubuntu:24.04:LTS | python3.12 | no fix listed | UBUNTU-CVE-2026-19445 |
| Ubuntu:26.04:LTS | python3.14 | no fix listed | UBUNTU-CVE-2026-19445 |
| Ubuntu:26.10 | python3.14 | no fix listed | UBUNTU-CVE-2026-19445 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| Python Software Foundation | CPython | 0 – before 3.10.223.11.0 – before 3.11.173.12.0 – before 3.12.153.13.0 – before 3.13.163.14.0 – before 3.14.83.15.0a1 – before 3.15.0rc3 |
Weakness: CWE-416 · Vector: CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
References
- https://github.com/python/cpython/pull/158504 patch
- https://mail.python.org/archives/list/security-announce@python.org/thread/QMQIUQB6WGGC3MI7I3WKQXOYOBDSPPS3/ vendor-advisory
- https://github.com/python/cpython/issues/156293 issue-tracking
- https://github.com/python/cpython/commit/34a53dce8174da2fceb12fe084a4def02a10053d patch
- https://github.com/python/cpython/commit/46133cd57d309652139ada74014aca7665ac552b patch
- https://github.com/python/cpython/commit/63fab143d94cafae71850831acfb52041ba44af7 patch
- https://github.com/python/cpython/commit/cd7e51e7d4563866fbaa1e2521ae69b45daf3698 patch
- https://github.com/python/cpython/commit/d8717ed01717a9641686e6e6f83f0ab8af235e2c patch
- https://github.com/python/cpython/commit/b12968cefe69ca1dcb8606c832ff73ee7dbf4ba8 patch
- https://github.com/python/cpython/commit/ec44b5a3258cbda947d5e07242ee562ed05ef24b patch
- http://www.openwall.com/lists/oss-security/2026/09/30/17