Un navegador actualizado no es un sistema actualizado
¿Cuáles de tus programas siguen confiando en una autoridad de certificación cuyas claves resultaron ser débiles?
Antes de que tu navegador envíe algo privado a un sitio web, el sitio tiene que mostrar un certificado, una especie de nota firmada que dice que el servidor pertenece realmente a ese sitio. La firma procede de una autoridad de certificación, o CA, una empresa en la que los navegadores y los sistemas operativos han acordado confiar. En octubre de 2026, un investigador informó de que las claves privadas de ocho certificados de firma de una CA, eMudhra, podían recuperarse.
Chrome y Firefox bloquearon esas claves el mismo día, y Apple y Microsoft lo hicieron en los días siguientes. Los programas en Go, los servidores Node.js, los entornos de Python y las imágenes de contenedor no reciben esa protección automáticamente. Cada uno necesita su propia actualización, y algunos necesitan reconstruirse.
Qué pasó
El informe llegó a Apple, Google, Microsoft, Mozilla y eMudhra el 17 de octubre. Los certificados eran CA intermedias. Una CA intermedia se sitúa entre una raíz de confianza y los certificados que usan los sitios web. La raíz firma la intermedia, y la intermedia firma el certificado del sitio web. Seis de las ocho servían para certificados de sitios web, los que usa TLS (el protocolo que hay detrás del candado del navegador), y dos para firmar código.
Una clave privada debería ser un número aleatorio muy grande. Todas estas eran menores que 256, así que a un atacante le bastaba con probar todas las posibilidades. BleepingComputer, que comprobó una clave publicada con un certificado revocado, informa de que una era simplemente 4. eMudhra afirma que un error de script durante una ceremonia de generación de claves produjo un segundo juego de claves, más débil, y que por error se eligieron esas para firmar. Databan de abril de 2025. La empresa dice que no encontró ningún uso indebido ni ninguna brecha y que revocó las CA afectadas en un plazo de 14 horas.
Chrome bloqueó las seis CA intermedias TLS en menos de dos horas desde el informe, con una actualización que no requiere reiniciar. Google también retiró del Chrome Root Store la raíz que las firmó, emSign ECC Root CA – G3. Esa retirada estaba prevista para la mañana del 27 de octubre, así que confirma que tu Chrome la tiene. Firefox bloqueó los certificados el 17 de octubre, y Mozilla decidió el 20 de octubre dejar de confiar en esa misma raíz. Apple bloqueó los certificados el 19 de octubre y la raíz el 23 de octubre.
Microsoft publicó el 26 de octubre actualizaciones de Windows fuera de banda que retiran siete certificados relacionados con eMudhra de la lista de confianza de Windows, pensadas para sistemas que no pueden obtener por sí solos las actualizaciones de confianza. Microsoft dice que sigue revisando las demás raíces de eMudhra.
Google añade que ningún certificado de sitio web emitido por las seis intermedias apareció antes del bloqueo en los registros de Certificate Transparency, los registros públicos de certificados emitidos. Chrome, y las apps de Android que exigen esos registros, habrían rechazado un certificado falsificado, lo que limita el riesgo para ellos. No se sabe si alguien aprovechó la debilidad contra otros tipos de software. eMudhra ha dicho que abandonará el negocio global de certificados TLS.
Qué podría hacer un atacante con ello
Quien tenga la clave privada de una CA puede firmar un certificado para cualquier sitio web, y todo programa que confíe en esa CA lo aceptará. Para aprovecharlo, el atacante aún tiene que situarse entre tú y el servidor, por ejemplo en una red hostil. Cloudflare no informa de ninguna explotación en sus servicios, y StepSecurity no encontró ningún informe de uso indebido en pipelines de compilación.
Por qué una sola corrección no llega a todos los programas
Un almacén de confianza (trust store) es la lista de CA en las que un programa está dispuesto a confiar. Piensa en la lista de invitados de la recepción de un edificio. Tu sistema operativo mantiene una lista y tu navegador puede mantener otra, y cada recepción solo consulta la suya. Muchos programas traen su propia copia privada de la lista, para comportarse igual en cualquier máquina.
Supón que tu computadora portátil tiene todos los parches. Ejecutas un script de Node.js que se integró en una imagen de contenedor en septiembre. Ese script lleva su propio almacén de confianza, así que sigue confiando en la CA, y el parche de la portátil nunca lo toca.
Selecciona un programa para ver de dónde obtiene su lista de confianza y qué hacer. Todos los programas aparecen también más abajo.
La cadena que se comprueba: un certificado de sitio web, firmado por una CA intermedia cuya clave es recuperable, firmada a su vez por la raíz emSign ECC Root CA – G3. Cada programa de la lista comprueba esa cadena con su propia lista de confianza.
Chrome automático
- De dónde obtiene su lista
- Chrome Root Store, más una lista de bloqueo (CRLSet) que Chrome actualiza sin reiniciar.
- Qué lo corrigió
- Bloqueó las seis CA intermedias TLS en menos de dos horas desde el informe. La retirada de la raíz emSign ECC Root CA – G3 estaba prevista para la mañana del 27 de octubre.
- Qué haces tú
- Confirma que Chrome está al día. En Android, la actualización equivalente llega a través de Google Play Services y se activa al reiniciar.
- Cómo comprobarlo
- Comprueba la versión del navegador y el estado de actualización en la página «Información» de Chrome.
Firefox automático
- De dónde obtiene su lista
- La lista de confianza propia de Mozilla, más la lista de bloqueo OneCRL.
- Qué lo corrigió
- Bloqueados el 17 de octubre mediante OneCRL. Mozilla decidió el 20 de octubre dejar de confiar en esa misma raíz y publicó Firefox 158.0.1 y actualizaciones ESR para las configuraciones que habían bloqueado las actualizaciones de revocación anteriores.
- Qué haces tú
- Actualiza Firefox. Si bloqueas las actualizaciones de revocación, aplica la versión del 20 de octubre.
- Cómo comprobarlo
- Comprueba la versión de Firefox en su página «Acerca de».
Apps de Apple automático
- De dónde obtiene su lista
- El almacén de confianza del sistema, con los datos de configuración de Apple enviados automáticamente a los dispositivos.
- Qué lo corrigió
- Certificados bloqueados el 19 de octubre; la raíz, el 23 de octubre. Cubre Safari, Mail y las apps que usan los frameworks de seguridad de Apple.
- Qué haces tú
- Nada para Safari y Mail. Para las apps que traen su propia lista, pregunta al desarrollador.
- Cómo comprobarlo
- Abre las notas de actualización de la app o pregunta a su desarrollador cómo comprueba los certificados.
Herramientas CLI de Mac aún sin cubrir
- De dónde obtiene su lista
- Un archivo de certificados en disco, /etc/ssl/cert.pem, que leen curl, git, python3, ruby, perl y openssl.
- Qué lo corrigió
- Apple dice que estas herramientas se saltan su bloqueo y sus comprobaciones de revocación hasta una futura actualización de software. No se indica ninguna versión corregida.
- Qué haces tú
- Los administradores pueden seguir los pasos provisionales de Apple y eliminar emSign ECC Root CA – G3 y, opcionalmente, AAA Certificate Services. Haz pruebas después y repite los pasos si una actualización de macOS reemplaza el archivo.
- Cómo comprobarlo
- Averigua qué archivo lee cada herramienta. Vuelve a consultar el aviso de Apple para ver si llega la actualización.
Windows actualiza
- De dónde obtiene su lista
- La lista de confianza de Windows.
- Qué lo corrigió
- Microsoft publicó el 26 de octubre actualizaciones fuera de banda que retiran siete certificados relacionados con eMudhra, pensadas para equipos sin conexión, que no pueden acceder al servicio de actualización de confianza de Microsoft o que tienen desactivadas las actualizaciones automáticas. Microsoft dice que esos mismos certificados salen de la lista de Edge el 27 de octubre y que sigue revisando las demás raíces de eMudhra. Esto procede del informe de BleepingComputer.
- Qué haces tú
- Instala la actualización en los sistemas desconectados. Localiza en tu propia infraestructura los certificados que dependen de las raíces retiradas. La cobertura de Windows Server no está confirmada.
- Cómo comprobarlo
- Lee la publicación de Microsoft para conocer los números exactos de actualización de tu versión de Windows.
Node.js, Deno, pip actualiza + reconstruye
- De dónde obtiene su lista
- Una lista de confianza integrada en el programa: Node.js y Deno incluyen la suya, y pip lleva su propia copia de certifi.
- Qué lo corrigió
- Node.js incluye el cambio relativo a eMudhra en sus versiones de seguridad del 21 de octubre. Después llegaron actualizaciones de Python y pip, con certifi 2026.10.19. Una actualización del sistema no cambia una lista integrada.
- Qué haces tú
- Actualiza el programa y después reconstruye cualquier imagen de contenedor que contenga una copia anterior. En Python, actualiza pip en cada entorno virtual.
- Cómo comprobarlo
- Ejecuta los comandos de versión de los pasos 3 y 4 de la comprobación de una hora y compara con la tabla.
Programas en Go reconstruye
- De dónde obtiene su lista
- La biblioteca estándar compilada dentro de cada programa en Go.
- Qué lo corrigió
- Go 1.27.3 y 1.26.10 se publicaron el 19 de octubre. El propio aviso de Go solo dice «security fixes to crypto/x509». Otras fuentes las vinculan a este incidente, así que este detalle no está confirmado.
- Qué haces tú
- Recompila cada programa con la cadena de herramientas corregida. Actualizar Go en la máquina de compilación no cambia los programas ya compilados.
- Cómo comprobarlo
- Ejecuta go version -m sobre un programa compilado para ver con qué versión de Go se compiló.
El aviso de Apple muestra la misma división. El bloqueo funciona automáticamente en Safari, Mail y las apps que usan los frameworks de seguridad de Apple. Las herramientas de línea de comandos que leen un archivo de certificados en disco, como curl, git, python3, ruby, perl y openssl, pueden seguir aceptando los certificados hasta una futura actualización de macOS. Las apps con sus propias listas no están cubiertas, y Apple aconseja preguntar al desarrollador.
Actualizar y reconstruir son tareas distintas. Algunos programas leen su almacén de confianza al arrancar, así que basta con un archivo más reciente o un reinicio. En otros, la corrección forma parte del propio programa. Un programa en Go contiene la biblioteca estándar de Go dentro del archivo final, así que corregir la cadena de herramientas no sirve de nada para un programa compilado el mes pasado. Hay que volver a compilarlo.
Qué necesita cada herramienta
Estas correcciones aparecieron a partir del 19 de octubre. Consulta la página de cada proyecto antes de actuar, porque las versiones siguen cambiando.
| Herramienta | Qué debes tener | Por qué puede que aún no esté corregida |
|---|---|---|
| Go | 1.27.3 o 1.26.10 (19 de octubre) | El aviso de Go solo dice «security fixes to crypto/x509». Otras fuentes vinculan estas versiones a este incidente, así que confírmalo en las notas de la versión de Go. Los programas ya compilados conservan el código antiguo, así que recompílalos con la cadena de herramientas corregida. |
| Node.js | 22.23.4, 24.22.1 o 26.12.1 (21 de octubre) | Node.js incluye «ca-cert (eMudhra Intermediate CA Compromise)» en estas versiones y trae su propio almacén de confianza. Una actualización del sistema no lo cambia, y las imágenes con un Node.js anterior necesitan reconstruirse. |
| Python | 3.15.2, 3.14.10, 3.13.18, 3.12.16 o 3.11.18 o posterior, con pip 26.2.2, certifi 2026.10.19 y uv 0.13.5 o posterior | pip lleva su propia copia de certifi, así que cada entorno virtual necesita su propia actualización. 3.11 y 3.12 son versiones solo de código fuente. Python 3.10 y anteriores han llegado al final de su vida útil y no recibieron corrección. |
| Rust | rustls-webpki 0.103.16 y webpki-roots 1.0.10 | Son bibliotecas. Todo lo que se haya compilado con ellas debe recompilarse y volver a desplegarse. |
| Deno | 2.9.8 | Deno trae su propio almacén de confianza. |
| curl | Un paquete de CA (CA bundle) con fecha 2026-10-20 o posterior | La corrección está en el archivo de paquete de CA que lee curl, así que comprueba qué archivo usa el tuyo. |
| Distribuciones de Linux | Un paquete ca-certificates más reciente | Las versiones varían según la distribución. Lee el aviso de tu distribución. |
| Windows | La actualización fuera de banda de Microsoft del 26 de octubre | Según lo publicado, pensada para equipos sin conexión, que no pueden acceder al servicio de actualización de confianza de Microsoft o que tienen desactivadas las actualizaciones automáticas. La cobertura de Windows Server no está confirmada. |
| Cloudflare Tunnel | cloudflared 2026.10.2 | Quien lo use en contenedores debe volver a desplegar la imagen corregida. |
| Docker Desktop, macOS curl | Docker Desktop 4.96.3 o posterior. No hay ninguna versión corregida de curl para macOS confirmada | Las notas de la versión de Docker incluyen la corrección en 4.96.1, 4.96.2 y 4.96.3 (21 y 22 de octubre) y dicen que se está desplegando componente a componente, así que sigue actualizando. Apple no ha indicado ninguna versión corregida de curl para macOS, así que no des por hecha la cobertura. |
Python es el caso más delicado. Python 3.15.1, 3.14.9 y 3.13.17 se publicaron el 21 de octubre con pip 26.2.2 incluido, y después llegaron otras versiones. Un intérprete nuevo no cambia el pip de un entorno virtual antiguo, así que actualiza pip y uv en cada entorno existente. Los intérpretes con el parche también bloquean las claves comprometidas en el módulo ssl cuando la verificación está activada. Es una última línea de defensa, así que actualiza igualmente el almacén de confianza.
Hasta qué punto aprender esto
Conocer: todo desarrollador y profesional de TI debería saber qué es una CA y que algunos programas mantienen su propio almacén de confianza. Basta con eso para seguir el próximo incidente con una CA.
Aplicar: los ingenieros que compilan u operan software deberían saber localizar qué programas e imágenes llevan su propio almacén de confianza, actualizar los que leen un archivo y reconstruir los que llevan la corrección compilada dentro.
Dominar: los responsables de plataforma y de seguridad se encargan del inventario de qué se ejecuta y dónde, reconstruyen las imágenes de forma periódica para que las correcciones no esperen a una nueva versión, y deciden qué herramientas pueden depender del almacén del sistema.
Qué puedes ignorar por ahora
Sáltate los avisos de herramientas que no usas y los recuentos de certificados. La cifra de Chrome y la de un índice público de registros difieren en un factor de tres, y miden cosas distintas.
Una comprobación de una hora
- Tus propios certificados. Si alguno de tus sitios usa un certificado que encadena con la raíz emSign, sustitúyelo por uno de otra CA. Google aconseja hacerlo ya. Este comando muestra el emisor inmediato:
Busca «emSign» o «eMudhra» y, si tienes dudas, revisa la cadena completa en tu herramienta de certificados.openssl s_client -connect yoursite.example:443 -servername yoursite.example </dev/null 2>/dev/null | openssl x509 -noout -issuer - Go. Ejecuta esto en las máquinas de compilación:
Para un programa ya compilado, esto muestra la versión de Go con la que se compiló:go version
Recompila todo lo anterior a 1.27.3 o 1.26.10.go version -m ./yourprogram - Node.js. Ejecuta esto en los servidores y dentro de las imágenes:
Actualiza y reconstruye todo lo anterior a las versiones de la tabla.node -v - Python. En cada entorno que importe, ejecuta estos comandos:
Busca también configuraciones que apunten a un paquete de CA antiguo, comopython -m pip --version python -m pip show certifiPIP_CERT,REQUESTS_CA_BUNDLEySSL_CERT_FILE. Un paquete antiguo sigue en uso después de actualizar los paquetes. - Contenedores. Descarga imágenes base nuevas y reconstruye sin la caché de capas, por ejemplo con
--pull --no-cache, para que las capas antiguas no arrastren el almacén de confianza antiguo. Después, vuelve a desplegar. - Terminales de Mac. Puede que curl, git y python3 en un Mac aún no tengan el bloqueo de Apple. Los pasos provisionales de Apple para administradores consisten en eliminar emSign ECC Root CA – G3 y, opcionalmente, AAA Certificate Services de
/etc/ssl/cert.pem. Sigue el aviso de Apple al pie de la letra, haz pruebas después y cuenta con repetir los pasos si una actualización de macOS reemplaza el archivo. - Errores de certificado. Si aparece alguno después de una actualización, corrige el certificado. No desactives la verificación.
Qué hacer a continuación
Elige un servicio y síguele la pista. Anota qué programa establece la conexión segura, de dónde obtiene su almacén de confianza y quién lo reconstruye. Si nadie es responsable de la reconstrucción, no se hará.
Una corrección en el sistema operativo no llega a los programas que llevan su propio almacén de confianza.
Lo que sabemos y lo que no
| Afirmación | Tipo | Fuente |
|---|---|---|
| Ocho claves de CA intermedias de eMudhra eran recuperables: seis para TLS y dos para firma de código | Informe de un investigador, aceptado por los navegadores | Avisos de Google, Mozilla y Apple, y The Hacker News |
| Las ocho claves eran menores que 256 | Según lo publicado | The Hacker News |
| Una clave era 4 | Según lo publicado. BleepingComputer dice que comprobó una clave publicada con un certificado revocado | BleepingComputer |
| Microsoft retiró de Windows siete certificados relacionados con eMudhra el 26 de octubre | Según lo publicado. No se ha leído la publicación de la propia Microsoft | BleepingComputer |
| Un error de script en una ceremonia de claves causó las claves débiles | Declaración de eMudhra. Su publicación en Mozilla describe un fallo de código que creó claves más débiles, que después se usaron por error | Digit y bug 2083449 de Mozilla, comentario 11 |
| Ningún uso indebido, ninguna brecha, las claves nunca se usaron para emitir certificados a sitios web ni a usuarios, revocadas en un plazo de 14 horas | Declaraciones de eMudhra, sin verificación independiente | Digit, bug 2083449 de Mozilla, comentario 10 y comentario 43 |
| Ningún certificado TLS afectado se registró antes del bloqueo de Chrome | Declaración de Google | Google Security Blog |
| Si los atacantes aprovecharon la debilidad contra software que no es un navegador | Desconocido | StepSecurity |
| Unos 30 800 certificados no caducados bajo la raíz, el 99.9 % a través de InCommon | Recuento de Chrome, según lo publicado | The Hacker News |
| Más de 100 000 certificados bajo las intermedias | Índice público de registros. Mostraba 107 181 el 29 de octubre e incluye entradas de sondeo y de prueba | ctlogs.dev |
| Versiones corregidas de Node.js y Python | Indicadas por los proyectos o por un artículo sobre herramientas de Python | Notas de la versión de Node.js y pydevtools |
| Las versiones corregidas de Go están vinculadas a este incidente | El aviso de Go solo menciona correcciones en crypto/x509. El vínculo procede de otras fuentes | Historial de versiones de Go |
| Correcciones de Rust, Deno, curl y las distribuciones de Linux | Un único resumen, no contrastado con cada proyecto | smartscope.blog |
| Versiones corregidas de Docker Desktop y de curl para macOS | Docker Desktop: documentado por Docker de 4.96.1 a 4.96.3, con despliegue por lotes. curl para macOS: desconocido, no se indica ninguna versión corregida | Notas de la versión de Docker Desktop y Apple Support |
| La retirada de la raíz en Chrome llegó a todos los dispositivos el 27 de octubre | Prevista, no confirmada | Google Security Blog |
Para profundizar
- Google: Protecting Chrome and Android users from compromised eMudhra intermediate CA certificates, para la parte de los navegadores y los consejos a los operadores de sitios.
- Apple Support: About the compromised eMudhra intermediate CAs, incluida la limitación de las herramientas de línea de comandos.
- Cloudflare: eMudhra certificate compromise, para
cloudflaredy los certificados de origen. - The Hacker News: eMudhra to exit global SSL/TLS business, para las fechas, las declaraciones de eMudhra y el recuento de Chrome.
- BleepingComputer: Mozilla, Google and Apple block compromised eMudhra CA certificates, para el bloqueo de Firefox y el valor de clave 4, y BleepingComputer: las actualizaciones de Windows de Microsoft.
- Digit: eMudhra apologises after weak keys expose 8 intermediate CAs, para la versión de eMudhra sobre la causa.
- Bug 2083449 de Mozilla, donde eMudhra y los programas de los navegadores debaten el incidente.
- ctlogs.dev: eMudhra CA compromise, para los recuentos de certificados de los registros públicos.
- Historial de versiones de Go, para 1.27.3 y 1.26.10.
- smartscope.blog: qué actualizar, un resumen que cubre Rust, Deno, curl y las distribuciones de Linux.
- Notas de la versión de Docker Desktop, que recogen la retirada de la confianza en la CA intermedia de eMudhra en Docker Desktop 4.96.1 a 4.96.3.
- Node.js October 2026 security releases.
- Anuncio de Python 3.15.1, 3.14.9 y 3.13.17 y pydevtools: actualizaciones de Python.
- StepSecurity: efecto en pip y CI/CD, para las herramientas que integran su propio almacén de confianza.
- Relacionado en este sitio: la vulnerabilidad de Brotli en Node.js (en inglés), vulnerabilidades críticas de PHP (en inglés) y cambios en Node.js, Docker y Go que rompen pipelines (en inglés).
Los datos de este artículo se comprobaron el 29 de octubre de 2026. Los números de versión y las medidas de los navegadores cambian rápido, así que consulta las fuentes anteriores antes de actuar.
