La obsolescencia del certificado raíz de AddTrust provoca fallos en los sistemas OpenSSL y GnuTLS

El 30 de mayo expiró el período de validez de 20 años del certificado raíz Agregar confianzaQue aplicado para generar certificados con firma cruzada de una de las mayores autoridades de certificación, Sectigo (Comodo). La firma cruzada permitió la compatibilidad con dispositivos heredados que no tenían el nuevo certificado raíz USERTRust agregado a su almacén de certificados raíz.

La obsolescencia del certificado raíz de AddTrust provoca fallos en los sistemas OpenSSL y GnuTLS

En teoría, la cancelación del certificado raíz de AddTrust sólo debería provocar una violación de la compatibilidad con sistemas heredados (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, etc.), ya que el segundo certificado raíz utilizado en la firma cruzada permanece Los navegadores válidos y modernos lo tienen en cuenta a la hora de comprobar la cadena de confianza. En la practica apareció Problemas con la verificación de firmas cruzadas en clientes TLS que no son de navegador, incluidos aquellos basados ​​en OpenSSL 1.0.x y GnuTLS. Ya no se establece una conexión segura con un error que indica que el certificado está desactualizado si el servidor utiliza un certificado Sectigo vinculado por una cadena de confianza al certificado raíz de AddTrust.

Si los usuarios de los navegadores modernos no notaron la obsolescencia del certificado raíz AddTrust al procesar certificados Sectigo con firma cruzada, entonces comenzaron a surgir problemas en varias aplicaciones de terceros y controladores del lado del servidor, lo que llevó a rotura trabajar Muchas infraestructuras utilizan canales de comunicación cifrados para la interacción entre componentes.

Por ejemplo, hubo problemas con acceso a algunos repositorios de paquetes en Debian y Ubuntu (apt comenzó a generar un error de verificación de certificado), las solicitudes de scripts que usaban las utilidades “curl” y “wget” comenzaron a fallar, se observaron errores al usar Git, violado La plataforma de transmisión Roku está funcionando, ya no se llama a los controladores Stripe и DataDog, comenzó ocurren choques en aplicaciones Heroku, detenido Los clientes OpenLDAP se conectan, se detectan problemas con el envío de correo a servidores SMTPS y SMTP con STARTTLS. Además, se observan problemas en varios scripts Ruby, PHP y Python que utilizan un módulo con un cliente http. problema del navegador afecta Epiphany, que dejó de cargar listas de bloqueo de anuncios.

Los programas Go no se ven afectados por este problema porque Go ofrece propia implementación TLS.

Se suponíaque el problema afecta a versiones de distribución más antiguas (incluidas Debian 9, Ubuntu 16.04, RHEL 6/7) que utilizan ramas OpenSSL problemáticas, pero el problema se manifestó también cuando el administrador de paquetes APT se ejecuta en las versiones actuales de Debian 10 y Ubuntu 18.04/20.04, ya que APT usa la biblioteca GnuTLS. El quid del problema es que muchas bibliotecas TLS/SSL analizan un certificado como una cadena lineal, mientras que según RFC 4158, un certificado puede representar un gráfico circular distribuido dirigido con múltiples anclajes de confianza que deben tenerse en cuenta. Acerca de este fallo en OpenSSL y GnuTLS era es conocido durante muchos años. En OpenSSL el problema se solucionó en la rama 1.1.1, y en GnuTLS permanece sin corregir.

Como solución alternativa, se sugiere eliminar el certificado “AddTrust External CA Root” del almacén del sistema (por ejemplo, eliminarlo de /etc/ca-certificates.conf y /etc/ssl/certs, y luego ejecutar “update-ca -certificates -f -v"), después de lo cual OpenSSL comienza a procesar normalmente certificados con firma cruzada con su participación. Al utilizar el administrador de paquetes APT, puede deshabilitar la verificación de certificados para solicitudes individuales bajo su propio riesgo (por ejemplo, “apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false”) .

Para bloquear el problema en Fedora и RHEL Se propone agregar el certificado AddTrust a la lista negra:

trust dump —filter «pkcs11:id=%AD%BD%98%7A%34%B4%26%F7%FA%C4%26%54%EF%03%BD%E0%24%CB%54%1A;type=cert» \
> /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
extracto de actualización-ca-trust

Pero este método no funciona para GnuTLS (por ejemplo, sigue apareciendo un error de verificación de certificado al ejecutar la utilidad wget).

En el lado del servidor puedes cambiar порядок enumerar los certificados en la cadena de confianza enviada por el servidor al cliente (si el certificado asociado con "AddTrust External CA Root" se elimina de la lista, la verificación del cliente será exitosa). Para comprobar y generar una nueva cadena de confianza, puedes utilizar el servicio whatsmychaincert.com. Sectigo también предоставила certificado intermedio alternativo con firma cruzada "Servicios de certificado AAA“, que será válido hasta 2028 y mantendrá la compatibilidad con versiones anteriores del sistema operativo.

Adición: Problema también проявляется en LibreSSL.

Fuente: opennet.ru

Añadir un comentario