CVE-2026-19553 Omisión de verificación de hostname en SSLContext.wrap_bio() de Python
ssl.SSLContext.wrap_bio() no exigía que server_hostname no fuera None cuando SSLContext.check_hostname estaba activado; por una validación faltante en SSLObject, si no se suministra server_hostname la verificación de hostname se omite silenciosamente. Los programas que pasan un server_hostname válido no vacío y distinto de None no se ven afectados; la mitigación consiste en pasar ese valor a SSLContext.wrap_bio().
CVSS 4.0
- Probabilidad de explotación · EPSS del 09/110,5 % · percentil 46
- Explotada activamenteNo confirmada
- Exploit públicoSí, 1
Afectados
Python Software Foundation CPython
hasta antes de 3.10.22desde 3.11.0 hasta antes de 3.11.17desde 3.12.0 hasta antes de 3.12.15desde 3.13.0 hasta antes de 3.13.16desde 3.14.0 hasta antes de 3.14.8desde 3.15.0a1 hasta antes de 3.15.0rc3
Qué hacer
- Verificá si usás CPython y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
- Priorizá la corrección: hay código de explotación público.
Exploits públicos
Código publicado por terceros. Puede ser malicioso: revisalo solo en un entorno aislado.
Calculadora CVSS
CVSS 4.0 · 7.6 ALTA
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
- Vector de ataqueRed
- Complejidad del ataqueBaja
- Requisitos del ataquePresentes
- Privilegios requeridosNinguno
- Interacción del usuarioPasiva
- Confidencialidad (sistema vulnerable)Alta
- Integridad (sistema vulnerable)Alta
- Disponibilidad (sistema vulnerable)Ninguna
- Confidencialidad (sistemas posteriores)Ninguna
- Integridad (sistemas posteriores)Ninguna
- Disponibilidad (sistemas posteriores)Ninguna
Descripción original
ssl.SSLContext.wrap_bio() didn't require the server_hostname argument
to not be None if ssl.SSLContext.check_hostname was set. Due to a
missing parameter check in SSLObject, if the server_hostname argument
isn't supplied then hostname verification would be silently skipped.
This defect could lead to programs where certificate hostname verification
*appeared* to be succeeding with SSLContext.check_hostname = True and no
ValueError being raised due to misconfiguration.
If the program passes a server_hostname value that isn't an empty string
or None to any of these APIs then certificate hostname verification
proceeds as expected and the program is not affected by this vulnerability.
Mitigating this vulnerability doesn't require updating Python or applying
the patch. To mitigate, pass a valid non-None and non-empty
server_hostname value to SSLContext.wrap_bio(),
asyncio.create_connection(), or asyncio.loop.start_tls() and
certificate hostname verification will proceed as expected. Upgrading to
the latest version of Python or applying the patch only changes the
behavior from silently skipping hostname verification to raising a
ValueError, similar to SSLContext.wrap_socket(), when server_hostname
isn't supplied.
Referencias (11)
- github.com/python/cpython/pull/158503
- github.com/python/cpython/issues/156793
- mail.python.org/archives/list/[email protected]/thread/QNZRG3YOAMTHDCMVCICXGY6…
- github.com/python/cpython/commit/1697ea386c707142555d98a1263176bbbc014a96
- github.com/python/cpython/commit/641390146a16a38e6701923f4ee4f1940ae77082
- github.com/python/cpython/commit/966bf426d0b6c31c1b0a255ff14a17143a466ced
- github.com/python/cpython/commit/f4e43ba525187282f2011da0e6ffc0d2b08d8062
- github.com/python/cpython/commit/869069d52ce0efab2f8c38197e92cdaaa312f1ed
- github.com/python/cpython/commit/5867d4e4ae6d1062352baf6b497a4026e8578ccf
- github.com/python/cpython/commit/bdebbf9b366ec91e9cd9daa0b3510c9e84b60b80
- www.openwall.com/lists/oss-security/2026/09/30/16
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.