[CLSA-2026:1791530293] Fix CVE(s): CVE-2026-19445, CVE-2026-19553
Type:
security
Severity:
Critical
Release date:
2026-10-09 07:18:35 UTC
Description:
* SECURITY UPDATE: use-after-free of a server-side SSLContext when an sni_callback switches the connection to another context. _servername_callback() in Modules/_ssl.c reached the Python SSLContext through the borrowed pointer stored with SSL_CTX_set_tlsext_servername_arg() and held no reference to it. When the callback assigned a different context to SSLSocket.context and nothing else kept the original alive, the C code then used freed memory: in PyErr_WriteUnraisable() after a raising callback, and when OpenSSL re-entered the callback through the connection's session_ctx on a second ClientHello (e.g. after a TLS 1.3 HelloRetryRequest). Remote, unauthenticated, before the handshake completes. - debian/patches/CVE-2026-19445.patch: backport of cpython 46133cd57d309652139ada74014aca7665ac552b (gh-156293), which takes the context from the socket and holds strong references to it and to its sni_callback while the callback runs, no longer registers the borrowed servername arg, and clears the servername callback in context_dealloc(). Py_NewRef()/Py_XNewRef() are spelled as Py_INCREF()/Py_XINCREF() and the get_state_ctx() type assert as PySSLSocket_Check(), since 3.9 has neither. Includes upstream's regression tests in Lib/test/test_ssl.py. - CVE-2026-19445 * SECURITY UPDATE: SSLContext.wrap_bio() did not require server_hostname when check_hostname was True (CWE-295). SSLObject._create() in Lib/ssl.py skipped the parameter checks wrap_socket() performs, so a memory-BIO SSLObject - and asyncio loop.start_tls() / create_connection(sock=...) through asyncio/sslproto.py - created with no server_hostname verified the certificate chain but silently skipped hostname verification. - debian/patches/CVE-2026-19553.patch: backport of cpython 966bf426d0b6c31c1b0a255ff14a17143a466ced (gh-156793), which adds _check_sslobject_params() and calls it from both SSLObject._create() and SSLSocket._create(), so wrap_bio() now raises ValueError like wrap_socket(). Includes upstream's tests in Lib/test/test_ssl.py; the asyncio tests are adapted to 3.9's _SSLPipe-based sslproto. - CVE-2026-19553
Updated packages:
  • alt-python39_3.9.23-33_amd64.deb
    sha:857af3c547c9cbb25ba16c8a0f56e493ef2fe7fd
  • alt-python39-debug_3.9.23-33_amd64.deb
    sha:6f8efa5822c7cb56d5cd17d04069226dd9357382
  • alt-python39-devel_3.9.23-33_amd64.deb
    sha:c3ab86b16576b06e7d97e8f9a1a107837b7f9685
  • alt-python39-idle_3.9.23-33_amd64.deb
    sha:a109dca245d91f61d252ddd73c91b9a729abc46c
  • alt-python39-libs_3.9.23-33_amd64.deb
    sha:d3101129001bebfeea4e1c2e56864b2e72a83866
  • alt-python39-test_3.9.23-33_amd64.deb
    sha:633cca6725157387c5add2fe555931688bd51ddc
  • alt-python39-tkinter_3.9.23-33_amd64.deb
    sha:83a15b92fc16ece362e10270d4deaaef6af92e9e
  • alt-python39_3.9.23-33_arm64.deb
    sha:c43a722e18c2b751941a4350e31d096be0128f66
  • alt-python39-debug_3.9.23-33_arm64.deb
    sha:96b08d73c87ad978a9cd3280ba07bed5813f8c2e
  • alt-python39-devel_3.9.23-33_arm64.deb
    sha:d8daa47a77d880952208ec5cbcd968241dc58f5e
  • alt-python39-idle_3.9.23-33_arm64.deb
    sha:dfcd528f5c6fb45dc8e7777546a96385810e9b3d
  • alt-python39-libs_3.9.23-33_arm64.deb
    sha:c67eecdc49f4876a3592f503f5b63eecde1e5408
  • alt-python39-test_3.9.23-33_arm64.deb
    sha:6bde42ee353c5f9540dd75f61832f909250d54ca
  • alt-python39-tkinter_3.9.23-33_arm64.deb
    sha:8438fb1572c7494ecb3a88b918f0beead043428a
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.