Si usas Python para una API, un bot o tareas de despliegue, revisa pip, certifi y las herramientas que descargan paquetes. El incidente de eMudhra/emSign permite suplantar conexiones HTTPS en clientes que todavía confían en las cadenas afectadas. Actualizar el navegador o el certificado de tu propia web no corrige por sí solo esos clientes.
Revisado el 22 de octubre de 2026. El problema está en la confianza en certificados y las copias de certificados raíz incluidas en el software, no en un nuevo fallo de memoria del intérprete. Hay avisos de seguridad para certifi y uv, además de actualizaciones de otras herramientas del ecosistema.
Qué está afectado y qué podría hacer un atacante
Un atacante con una de las claves comprometidas y capacidad de interceptar la conexión podría presentar un certificado fraudulento que ciertos clientes aceptaran. Eso permite leer o modificar tráfico, incluidas descargas. No significa que PyPI haya sido hackeado, que todos los paquetes contengan malware ni que cualquier servidor Python pueda ser atacado sin esas condiciones.
El aviso GHSA-6q48-6c7w-9gw2 de certifi está clasificado como crítico; GHSA-hq85-5cpj-mr62 de uv, como alto. Al revisar sus fichas, ninguno mostraba un CVE asignado; puedes seguir las actualizaciones mediante esos identificadores GHSA.
El aviso inicial de certifi señala versiones desde 2019.03.09 y la corrección 2026.10.18. La versión recomendada para desplegar es 2026.10.19 o posterior, por compatibilidad con raíces no afectadas. En uv, las versiones anteriores a 0.13.4 están afectadas cuando usan su almacén incluido, que es el predeterminado; los almacenes del sistema o personalizados requieren una revisión propia.
Versiones recomendadas tras el incidente
| Componente | Versión de referencia | Qué debes revisar |
|---|---|---|
| certifi | 2026.10.19 o posterior | Cada entorno que lo utiliza; retirar G3 sin eliminar raíces ajenas al fallo. |
| pip | 26.2.2 o posterior | Su propia copia de certifi, no solo la instalada por la aplicación. |
| uv | 0.13.4 o posterior | El ejecutable y el almacén de CA que realmente usa. |
| sigstore-python | 4.5.1 o posterior | Instalaciones locales y herramientas de CI que lo empaquetan. |
| conda | 26.9.4 o posterior | Entorno base, otros entornos y paquetes de CA de su canal. |
| Pixi | 0.82.1 o posterior | La herramienta; actualizarla no actualiza todos los entornos. |
Estos mínimos corresponden al incidente, no garantizan ausencia de cualquier otra vulnerabilidad. Usa una versión mantenida compatible con tu proyecto. La recomendación de seguridad de Python también pide revisar entornos virtuales existentes y reconstruir contenedores sin reutilizar capas antiguas.
Python 3.15.1, 3.14.9 y 3.13.17: qué resuelven
El 21 de octubre se publicaron Python 3.15.1, 3.14.9 y 3.13.17 con pip 26.2.2 y su copia de certifi 2026.10.19. La rama 3.13 recibió una versión especial con instaladores pese a estar en mantenimiento de seguridad.
No necesitas saltar a Python 3.15 solo por este incidente. Actualiza dentro de tu rama compatible y revisa por separado las herramientas. Un entorno virtual creado antes puede conservar un pip antiguo aunque ya instalaste el nuevo Python. En paquetes administrados por una distribución, comprueba el aviso y los parches de su proveedor; no fuerces cambios sobre el Python del sistema.
Cómo comprobar qué instalación estás usando
Activa el entorno virtual de la aplicación y ejecuta estos comandos. Si tu intérprete se llama python3, sustituye python; en Windows también puedes usar la ruta del ejecutable de tu entorno:
python --version
python -m pip --version
python -m pip show certifi
python -c "import sys, ssl; print(sys.executable); print(ssl.OPENSSL_VERSION)"
Tu API Python, en un VPS con mantenimiento claro
Compara los VPS de TERAMONT y define quién actualiza Python, dependencias y certificados en cada entorno.


El resultado identifica versiones y el intérprete consultado. Que pip show certifi no encuentre el paquete no significa que pip esté protegido: pip incluye dependencias propias. Si usas uv, comprueba además uv --version. Repite el inventario para workers, tareas programadas, CI y contenedores; la terminal puede usar otro entorno.
Cómo actualizar pip y certifi sin desactivar HTTPS
Para un entorno virtual que administras, con Python 3.10 o posterior, el equipo de Python publica esta instalación directa de pip 26.2.2 con SHA-256 fijado. Comprueba el enlace y la huella en el aviso oficial desde un cliente actualizado antes de copiarlo. La huella debe proceder de un canal confiable; no sirve sustituirla por la que entregue una descarga sospechosa.
python -m pip install "pip @ https://files.pythonhosted.org/packages/3f/06/3e4420302363fbb71be3c7f35ce042f54bfca330e3e66b3a2e3c4cca579f/pip-26.2.2-py3-none-any.whl#sha256=fd7f4dfa8190e014013b9f08f3e973f4e4c26ffd179a204895533a7254813a70"
python -m pip install --upgrade "certifi>=2026.10.19"
python -m pip --version
python -m pip show certifi
python -m pip check
Si ya tienes un pip posterior corregido, no lo rebajes: omite la primera línea. Respeta los archivos de dependencias y actualiza sus versiones fijadas mediante el flujo habitual del proyecto. pip check detecta incompatibilidades declaradas, no ataques ni la seguridad de todos los certificados. En un entorno administrado por el sistema, usa su gestor de paquetes; no recurras a sudo pip ni a forzar la protección de entornos administrados para seguir este ejemplo.
Actualizar únicamente el sistema operativo puede ser insuficiente. La documentación de pip explica que utiliza certificados del sistema además de certifi. Actualizar el certifi de tu aplicación tampoco reemplaza automáticamente el que viene dentro de pip.
Si usas uv, Conda o un instalador de macOS
- uv: actualiza mediante el canal que lo instaló. Si usaste su instalador independiente y el almacén del sistema ya está corregido, el mantenedor propone
UV_SYSTEM_CERTS=true uv self updateen un shell compatible. No presupongas que el almacén está actualizado. Si se instaló mediante pip o un gestor del sistema, actualiza desde ese gestor. - Conda: el procedimiento oficial incluye
conda self update --allcuando está disponible conda-self, oconda install --name base conda=26.9.4. Actualizar base no actualiza todos los entornos. Sigue los mínimos de CA de tu canal; no mezcles gestores a ciegas. - macOS, Python de python.org: revisa también su certifi. Usa la ruta exacta del intérprete que instalaste, como
/Library/Frameworks/Python.framework/Versions/3.15/bin/python3.15, en lugar de asumir que el comando de tu terminal apunta allí.
Comprobación propia: qué raíces cambió certifi
El 22 de octubre inspeccionamos localmente tres wheels oficiales de PyPI. Verificamos cada SHA-256 con los metadatos de PyPI servidos por HTTPS y leímos los certificados X.509 del archivo certifi/cacert.pem, sin instalar los paquetes ni abrir conexiones de prueba a servidores vulnerables.
| certifi | Certificados del archivo | Raíces emSign | ECC Root CA - G3 |
|---|---|---|---|
| 2026.7.22 | 121 | 4 | Presente |
| 2026.10.18 | 117 | 0 | Ausente |
| 2026.10.19 | 120 | 3 | Ausente |
En 2026.10.19 reaparecen G1, C1 y C3; G3 continúa fuera. Esto explica por qué la recomendación actual no es borrar indiscriminadamente toda raíz emSign. El recuento verifica el contenido de esos archivos, no todas las rutas de confianza de una aplicación ni la ausencia de una intrusión. Fuentes reproducibles: paquetes de 2026.7.22, 2026.10.18 y 2026.10.19.
Antes de dar por cerrado el incidente en tu VPS
- Revisa todas las copias: intérpretes, pip, uv, entornos virtuales, aplicaciones empaquetadas y almacenes personalizados.
- Reconstruye y despliega: actualiza imágenes base y dependencias, sin reutilizar capas que conserven las CA antiguas; reemplaza o reinicia los procesos que cargaron esos archivos.
- Prueba desde la aplicación real: descargas, API, webhooks y tareas importantes. No uses
verify=False,--trusted-hostni HTTP sin cifrar para ocultar errores. - Guarda evidencia: versiones, imagen desplegada, fecha y resultado funcional. Si sospechas interceptación, preserva registros y activa respuesta a incidentes; actualizar no revierte una filtración anterior.
Para entender el origen y la salida anunciada del negocio SSL/TLS, consulta nuestra guía del incidente de eMudhra. Si tu infraestructura también ejecuta JavaScript, revisa las actualizaciones de seguridad de Node.js: el mantenimiento de un lenguaje no actualiza el otro.
Si buscas infraestructura para tu API o bot, compara los VPS Hosting de TERAMONT y define quién mantiene cada capa. La medida de protección aquí es desplegar y comprobar las actualizaciones, no simplemente cambiar de proveedor.







