Las versiones Go 1.27.3 y Go 1.26.10, publicadas el 20 de octubre, hacen que el verificador de certificados de Go rechace toda cadena que atraviese una de ocho claves intermedias de autoridad de certificación. Los programas compilados con estas versiones se negarán a conectar con sitios y servicios cuyos certificados hayan sido emitidos bajo esas claves. El equipo de Go atribuye las claves a una autoridad de certificación que no ha identificado y justifica el bloqueo por «preocupaciones de seguridad específicas en torno a su operación».
El arreglo se gestionó por la vía URGENT, reservada a los problemas más graves, y se recomienda actualizar de inmediato. Dos días antes, el 17 de octubre, Mozilla había añadido seis certificados intermedios emitidos por emSign Root TLS CA – G3 de eMudhra a OneCRL, la lista que Firefox emplea para bloquear certificados. El fallo de Mozilla que originó esas entradas está cerrado al público, y ni Mozilla ni Go han explicado qué motivó su actuación. No está confirmado si Chrome, Apple o Microsoft han adoptado medidas similares.
El cambio de Go solo incluye los hashes SHA-256 de las ocho claves. Un comentarista del incidente en Go logró emparejar las ocho con intermediarios de eMudhra consultando los hashes en registros de certificados. Según ese cotejo, seis son intermediarios TLS emitidos bajo la misma emSign Root TLS CA – G3 que nombran las entradas de Mozilla, y dos son intermediarios de firma de código bajo emSign Root CS CA – G3:
- TLS con validación de dominio: EM DV TLS CA – G3B (eMudhra BV, Países Bajos) y EM DV TLS CA – G3C (eMudhra Inc, EE. UU.)
- TLS con validación de organización: EM OV TLS CA – G3B y EM OV TLS CA – G3C
- TLS con validación extendida: EM EV TLS CA – G3B y EM EV TLS CA – G3C
- Firma de código: EM OV CS CA – G3B y EM OV CS CA – G3C
The Hacker News no ha verificado de forma independiente los hashes contra los certificados. Las seis entradas de Mozilla comparten la misma raíz emisora, pero sus registros no identifican los seis certificados.
El filtro se ejecuta cada vez que un programa Go verifica una cadena de certificados. Aplica el hash a la clave pública de cada certificado, no al certificado en sí, por lo que también detecta una copia con firma cruzada de una de las ocho claves, es decir, la misma clave firmada por otra raíz. Se aplica tanto en el verificador propio de Go como en las rutas de macOS y Windows que delegan la verificación al sistema operativo. Una cadena rechazada devuelve el error x509: no valid chains built.
El cambio no incluye ninguna opción para desactivar el filtro. Dada la estructura del código, también se aplica cuando un programa aporta su propio conjunto de raíces de confianza, de modo que una implantación privada que confíe intencionadamente en una de las ocho claves también fallará. El equipo de Go no ha aclarado si eso es intencionado.
El verificador de Go «no realiza ninguna comprobación de revocación», como advierte su documentación, y tampoco lee las listas de bloqueo que usan los navegadores, como los CRLSets que Chrome empleó este mes contra certificados fraudulentos de Google. Por ello, bloquear una clave implica incluirla en una versión, y los programas mantienen el comportamiento anterior hasta que se recompilan. Proyectos como indigo, de Bluesky, se recompilaron con las nuevas versiones el 20 de octubre.
Lo ocurrido en la autoridad de certificación no es público. El anuncio de Go dedica una sola frase a las preocupaciones de seguridad y la publicación llegó sin el aviso previo que Go envió antes de sus versiones de seguridad del 8 de octubre. La política de seguridad de Go define los incidentes de la vía URGENT como «una amenaza a la integridad del ecosistema Go» o fallos explotados activamente con daños graves, y señala que no hay ejemplos recientes. Go no ha precisado cuál de los supuestos se aplica.
En el incidente, un usuario pidió que el parche confirmado explicara «a quién y a qué corresponden» las claves. El equipo de Go no había respondido a 20 de octubre.
eMudhra es una autoridad de certificación india que vende certificados bajo la marca emSign. Sus raíces emSign Root CA – G1 y emSign ECC Root CA – G3 están en los almacenes de raíces de Chrome, Apple y Mozilla. La empresa comunicó a Mozilla a principios de este año que su nueva raíz TLS tiene firma cruzada con emSign Root CA – G1, que es como los certificados bajo la raíz más reciente enlazan con una raíz de confianza.
En septiembre concluyó sin objeciones un debate público de seis semanas sobre la solicitud de eMudhra de añadir diez nuevas raíces a los programas de raíces de fabricantes de navegadores y sistemas operativos, incluida emSign Root TLS CA – G3. Según los registros de transparencia de certificados consultados por The Hacker News el 20 de octubre, los certificados registrados para dominios de la propia eMudhra, como emsign.com y emudhra.com, encadenan a través de otros intermediarios de eMudhra. Ese día el repositorio de la empresa no contenía ningún aviso sobre los intermediarios, y The Hacker News no encontró ninguna declaración pública de eMudhra.
Go 1.25 y las versiones anteriores están fuera de soporte y no reciben correcciones, por lo que la única vía es una versión soportada desde la página de descargas. No existe ninguna solución temporal en ninguna fuente y el filtro no se puede desactivar. Los sitios y servicios cuyos certificados encadenen a través de las ocho claves necesitarán certificados de otro intermediario antes de que los clientes Go recompilados puedan conectarse a ellos.



















Deja una respuesta