O desatualização do certificado raiz AddTrust levou a falhas em sistemas com OpenSSL e GnuTLS

Em 30 de maio, expirou o prazo de 20 anos do certificado raiz AddTrust, que era utilizado para a criação de assinatura cruzada (cross-signed) nos certificados de um dos maiores centros de certificação, a Sectigo (Comodo). A assinatura cruzada permitia garantir a compatibilidade com dispositivos antigos, cujo repositório de certificados raiz não tinha o novo certificado raiz USERTrust adicionado.

O desatualização do certificado raiz AddTrust levou a falhas em sistemas com OpenSSL e GnuTLS

Teoricamente, a expiração do certificado raiz AddTrust deveria levar apenas a uma perda de compatibilidade com sistemas antigos (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, etc.), já que o segundo certificado raiz usado na assinatura cruzada permanece vigente e os navegadores modernos o consideram na verificação da cadeia de confiança. Na prática foram detectados problemas na verificação da assinatura cruzada em clientes TLS que não usam navegadores, incluindo aqueles baseados em OpenSSL 1.0.x e GnuTLS. A conexão segura deixou de ser estabelecida, resultando em um erro de expiração de certificado, se o servidor usa um certificado Sectigo vinculado à cadeia de confiança do certificado raiz AddTrust.

Embora os usuários de navegadores modernos não tenham notado a expiração do certificado raiz AddTrust ao processar certificados assinados cruzadamente da Sectigo, começaram a surgir problemas em vários aplicativos de terceiros e manipuladores de servidor, levando a a uma falha falhas de muitas infraestruturas que usam canais criptografados para interação entre componentes.

Por exemplo, houve problemas acesso obstruído a alguns repositórios de pacotes no Debian e Ubuntu (o apt começou a gerar erro de verificação de certificado), houve falhas em chamadas de scripts usando as ferramentas ‘curl’ e ‘wget’, e erros foram observados ao usar o Git, causando problemas na plataforma de streaming Roku, os manipuladores deixaram de ser chamados Stripe e DataDog, começaram a ocorrer falhas em aplicações Heroku, os clientes OpenLDAP deixaram de conectar, problemas foram identificados no envio de e-mails para servidores SMTPS e SMTP com STARTTLS. Além disso, problemas foram observados em vários scripts em Ruby, PHP e Python que utilizam um módulo de cliente HTTP. Nos navegadores, o problema afeta Epiphany, em que as listas de bloqueio de anúncios deixaram de carregar.

Programas escritos em Go não são afetados pelo problema, pois no Go é oferecido implementação própria TLS.

Era esperado, que o problema afeta versões antigas de distribuições (incluindo Debian 9, Ubuntu 16.04, RHEL 6/7) em que são utilizadas ramificações problemáticas do OpenSSL, mas o problema apareceu também ao trabalhar com o gerenciador de pacotes APT nas versões atuais do Debian 10 e Ubuntu 18.04/20.04, pois o APT utiliza a biblioteca GnuTLS. A essência do problema é que muitas bibliotecas TLS/SSL interpretam o certificado como uma cadeia linear, enquanto, de acordo com a RFC 4158, o certificado pode representar um gráfico cíclico orientado distribuído com vários âncoras de confiança que precisam ser consideradas. Essa falha no OpenSSL e GnuTLS era revelado já existe há muitos anos. No OpenSSL, o problema foi corrigido na ramificação 1.1.1, mas em GnuTLS permanece não corrigido.

Como uma solução alternativa para eliminar a falha, é sugerido remover do repositório do sistema o certificado "AddTrust External CA Root" (por exemplo, removendo de /etc/ca-certificates.conf e /etc/ssl/certs, e então executando "update-ca-certificates -f -v"), após o que o OpenSSL começará a lidar normalmente com certificados com assinatura cruzada que o envolvem. Ao usar o gerenciador de pacotes APT, é por conta e risco do usuário desativar a verificação de certificados para solicitações individuais (por exemplo, "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false").

Para bloquear o problema em Fedora e RHEL é sugerido adicionar o certificado AddTrust à lista negra:

dump de confiança —filter «pkcs11:id=;type=cert» \
> /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
update-ca-trust extract

Mas essa abordagem não funciona para GnuTLS (por exemplo, ainda continua a emitir um erro de verificação do certificado ao executar a ferramenta wget).

Do lado do servidor, pode-se alterar a ordem dos certificados na cadeia de confiança enviados pelo servidor ao cliente (se o certificado relacionado ao "AddTrust External CA Root" for removido da lista, a verificação pelo cliente será bem-sucedida). Para verificar e gerar uma nova cadeia de confiança, pode-se usar o serviço whatsmychaincert.com. A empresa Sectigo também forneceu um certificado intermediário alternativo com assinatura cruzada "AAA Certificate Services", que será válido até 2028 e permitirá manter a compatibilidade com versões antigas do sistema operacional.

Nota: O problema também se manifesta afeta o LibreSSL.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster