[CLSA-2026:1791487509] Fix CVE(s): CVE-2026-19445, CVE-2026-19553
Type:
security
Severity:
Critical
Release date:
2026-10-09 06:48:40 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:1bd323bc3fad43c0483c0e59a9fe43d45474c928
  • alt-python39-debug_3.9.23-33_amd64.deb
    sha:6f8efa5822c7cb56d5cd17d04069226dd9357382
  • alt-python39-devel_3.9.23-33_amd64.deb
    sha:aeabb943f66ba4cabd5760f77a044ec8749feec2
  • alt-python39-idle_3.9.23-33_amd64.deb
    sha:e363dc512438ecc94a7bae8c29b5d1e1201cbf82
  • alt-python39-libs_3.9.23-33_amd64.deb
    sha:09ebe6c3ce7342c950187e7e7f3a967a9e414ffe
  • alt-python39-test_3.9.23-33_amd64.deb
    sha:c0b04ad8ef207e793d2d95e25d4f14aaec4471cc
  • alt-python39-tkinter_3.9.23-33_amd64.deb
    sha:00442db1e39b19542f8ac7e9ebcb869793d393c4
  • alt-python39_3.9.23-33_arm64.deb
    sha:1c5dbc0a1e45d890a467243fe91a58201389ee4a
  • alt-python39-debug_3.9.23-33_arm64.deb
    sha:96b08d73c87ad978a9cd3280ba07bed5813f8c2e
  • alt-python39-devel_3.9.23-33_arm64.deb
    sha:02fbe5ef9dc017a4986c54873804be40232e3b6f
  • alt-python39-idle_3.9.23-33_arm64.deb
    sha:414bb59483e07257a4e5554275c0d8ae9b1f0d3c
  • alt-python39-libs_3.9.23-33_arm64.deb
    sha:7c0b6fb65c6508baf776a7e68abe74b0301639de
  • alt-python39-test_3.9.23-33_arm64.deb
    sha:18782a8504f65ddea4b2a217fa4ef882bc8b155e
  • alt-python39-tkinter_3.9.23-33_arm64.deb
    sha:3657c9b10e824394b016519408921e6a6298a2c1
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.