
El sábado 17 de octubre, 20:06 UTC, llega un reporte incómodo a Mozilla: las claves privadas de ocho certificados intermedios de eMudhra, un emisor de certificados cuyas raíces están en la lista de confianza de Firefox, Chrome, Apple y Microsoft, están comprometidas. No es un rumor: el denunciante, que firma como Wayne, adjuntó mensajes firmados con cada una de las ocho llaves y verificables con OpenSSL, con un texto que no requería traducción: We have a problem here – Wayne. Cómo se filtraron las claves todavía no lo explica nadie; lo confirmado es que funcionan.
Para dimensionar el problema: con la clave privada de un intermedio puedes emitir certificados HTTPS válidos para cualquier dominio, incluidos sitios que jamás te pertenecieron. Combinado con una intercepción de tráfico, significa impersonar un banco, un servicio de correo o una API: la jaula que la PKI llevaba décadas armando, con la ventana abierta un sábado por la tarde.
Del lado de los navegadores: tres horas
A las 22:59 UTC del mismo sábado, menos de tres horas después del reporte, la lista de revocación OneCRL de Mozilla ya estaba propagada a todo Firefox con configuración estándar, sin que un solo usuario actualizara o reiniciara el navegador. Chrome bloqueó los intermedios el mismo 17, Apple los retiró el 19 y Microsoft el 20. El propio CA los revocó. Esa mitad de la historia es impecable: el sistema de los navegadores reaccionó como debía. Mozilla sacó además Firefox 158.0.1 y builds de ESR para la minoría con configuración personalizada que no recibe OneCRL.
El problema es todo lo que queda fuera de esa capa. Los navegadores tienen OneCRL, CRLite y CRLSets. Tu servidor tiene un archivo ca-certificates y curl no chequea revocación ni por accidente. Esa brecha es la que me quedó dando vueltas.
La prueba, desde mi servidor
El sitio del incidente dejó doce hosts de prueba, uno por cada combinación de intermedio y ruta: si tu cliente todavía confía, el host responde; si está protegido, el TLS se cae. La corrí desde mi VPS, igual que consultan terceros los scripts de monitoreo de mi infraestructura. Resultado: un empate 6 a 6. Seis hosts devolvieron HTTP 200: curl aceptó certificados firmados con las llaves comprometidas por la ruta de emSign. Los otros seis fallaron con unable to get local issuer certificate, pero no por un parche: el bundle no incluye el intermedio cruzado de la ruta AAA de Sectigo. Protección por golpe de suerte, no por corrección.
Aquí lo relevante: mi Ubuntu 24.04 sigue con ca-certificates 20260601, la versión de junio, y todavía no hay candidato más nuevo en los repos. La actualización del navegador es automática; la del servidor depende del paquete de la distro, y en distros congeladas puede demorar semanas. Un servidor headless es hoy el peor lugar para estar en este incidente: no consume revocación, confía en un archivo plano y ese archivo se actualiza cuando la distro quiere.
Lo que haría hoy
Si administras servidores, tres cosas. Primera: los doce hosts de prueba se revisan en segundos, pruébalos en cada máquina que te importe; y fijate: el resultado hay que leerlo con contexto, porque conexión exitosa no significa vulnerabilidad y falla no siempre viene de parche. Segunda: tu stack con bundles propios sigue al debe, así que sube NSS 3.131.1, python-certifi 2026.10.19, Go 1.27.3 o 1.26.10, webpki-roots 1.0.10; Node y Composer siguen pendientes. Tercera: los contenedores no se arreglan solos, reconstrúyelos.
Mi opinión: este caso retrata la PKI en sus dos caras. Del lado de los navegadores, un despliegue de emergencia de tres horas sin intervención del usuario es de las mejores respuestas a un incidente que he visto. Del lado de los clientes invisibles —scripts, cron jobs, contenedores, bibliotecas de lenguajes— el mismo incendio viaja en cámara lenta. Y la lección: la confianza no estaba tan distribuida como uno pensaba; está concentrada en un archivo de texto plano que se actualiza cuando el repositorio de tu distro decide moverse. Tú puedes emitir el cambio en tres horas, pero tu servidor lo adopta en el calendario de otra persona.
Fuente del incidente: eMudhra Intermediate CA Compromise, y la nota del equipo de seguridad de Mozilla.
Fuente de inspiración: eMudhra Intermediate CA Compromise
