A descontinuação do certificado raiz AddTrust causa travamentos em sistemas OpenSSL e GnuTLS

Em 30 de maio, o período de validade de 20 anos do certificado raiz expirou Adicionar confiançaQue aplicado para gerar certificados cruzados de uma das maiores autoridades certificadoras Sectigo (Comodo). A assinatura cruzada permitiu compatibilidade com dispositivos legados que não tinham o novo certificado raiz USERTRust adicionado ao armazenamento de certificados raiz.

A descontinuação do certificado raiz AddTrust causa travamentos em sistemas OpenSSL e GnuTLS

Teoricamente, o encerramento do certificado raiz AddTrust só deveria levar a uma violação de compatibilidade com sistemas legados (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, etc.), uma vez que o segundo certificado raiz usado na assinatura cruzada permanece navegadores válidos e modernos levam isso em consideração ao verificar a cadeia de confiança. Na prática apareceu Problemas com verificação de assinatura cruzada em clientes TLS sem navegador, incluindo aqueles baseados em OpenSSL 1.0.x e GnuTLS. Uma conexão segura não é mais estabelecida com um erro indicando que o certificado está desatualizado se o servidor estiver usando um certificado Sectigo vinculado por uma cadeia de confiança ao certificado raiz AddTrust.

Se os usuários de navegadores modernos não notaram a obsolescência do certificado raiz AddTrust ao processar certificados Sectigo com assinatura cruzada, então começaram a surgir problemas em vários aplicativos de terceiros e manipuladores do lado do servidor, o que levou a violação trabalhar muitas infraestruturas que utilizam canais de comunicação criptografados para interação entre componentes.

Por exemplo, havia problemas com acesso a alguns repositórios de pacotes no Debian e Ubuntu (o apt começou a gerar um erro de verificação de certificado), solicitações de scripts usando os utilitários “curl” e “wget” começaram a falhar, foram observados erros ao usar o Git, violado A plataforma de streaming Roku está funcionando, os manipuladores não são mais chamados Stripe и DataDog, iniciado ocorrem falhas em aplicativos Heroku, parado Os clientes OpenLDAP se conectam, são detectados problemas com o envio de e-mail para servidores SMTPS e SMTP com STARTTLS. Além disso, são observados problemas em vários scripts Ruby, PHP e Python que utilizam um módulo com cliente http. Problema no navegador afeta Epiphany, que parou de carregar listas de bloqueio de anúncios.

Os programas Go não são afetados por este problema porque Go oferece implementação própria TLS.

Foi supostoque o problema afeta versões de distribuição mais antigas (incluindo Debian 9, Ubuntu 16.04, RHEL 6/7) que usam ramificações OpenSSL problemáticas, mas o problema se manifestou também quando o gerenciador de pacotes APT está sendo executado nas versões atuais do Debian 10 e Ubuntu 18.04/20.04, já que o APT usa a biblioteca GnuTLS. O cerne do problema é que muitas bibliotecas TLS/SSL analisam um certificado como uma cadeia linear, enquanto, de acordo com a RFC 4158, um certificado pode representar um gráfico circular distribuído direcionado com múltiplas âncoras de confiança que precisam ser levadas em consideração. Sobre esta falha no OpenSSL e GnuTLS foi é conhecido por muitos anos. No OpenSSL o problema foi corrigido no branch 1.1.1, e no gnuTLS permanece não corrigida.

Como solução alternativa, sugere-se remover o certificado “AddTrust External CA Root” do armazenamento do sistema (por exemplo, remover de /etc/ca-certificates.conf e /etc/ssl/certs e, em seguida, executar “update-ca -certificates -f -v"), após o qual o OpenSSL começa a processar normalmente certificados com assinatura cruzada com sua participação. Ao usar o gerenciador de pacotes APT, você pode desabilitar a verificação de certificado para solicitações individuais por sua própria conta e risco (por exemplo, “apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false”) .

Para bloquear o problema em Fedora и RHEL Propõe-se adicionar o certificado AddTrust à 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
extrato de atualização-ca-trust

Mas este método não está funcionando para GnuTLS (por exemplo, um erro de verificação de certificado continua aparecendo ao executar o utilitário wget).

No lado do servidor você pode mudar ordem listando os certificados na cadeia confiável enviada pelo servidor ao cliente (se o certificado associado a “AddTrust External CA Root” for removido da lista, a verificação do cliente será bem-sucedida). Para verificar e gerar uma nova cadeia de confiança, você pode usar o serviço whatsmychaincert.com. Sectigo também предоставила certificado intermediário com assinatura cruzada alternativo "Serviços de certificado AAA“, que será válido até 2028 e manterá compatibilidade com versões mais antigas do SO.

Adição: Problema também manifesta-se em LibreSSL.

Fonte: opennet.ru

Adicionar um comentário