For the English version of this alert, click here.
Allele Security Alert
ASA-2019-00158
Identificador(es)
ASA-2019-00158, CVE-2019-3829, GNUTLS-SA-2019-03-27
Título
Use-after-free/double-free em verificação de certificado
Fabricante(s)
The GnuTLS Project
Produto(s)
GnuTLS
Versão(ões) afetada(s)
GnuTLS 3.5.8 ou posterior
Versão(ões) corrigida(s)
GnuTLS 3.6.7
Prova de conceito
Sim
Descrição
Uma falha foi encontrada em GnuTLS 3.5.8 ou posterior. Um use-after-free em clientes multi-threaded e uma vulnerabilidade double-free em clientes single-threaded porque _gnutls_x509_get_signature não limpa dados signature->data no caminho de limpeza.
Detalhes técnicos
Esta é uma vulnerabilidade crítica de corrupção de memória em qualquer API suportada por verify_crt(), incluindo gnutls_x509_trust_list_verify_crt() e rotinas relacionadas. Suspeito que qualquer cliente ou servidor que verifique os certificados X.509 com o GnuTLS provavelmente seja afetado e possa ser comprometido por um servidor mal-intencionado ou um atacante de rede ativo.
Em clientes multi-threaded, esta é uma vulnerabilidade de use-after-free, e uma vulnerabilidade de double-free em clientes single-threaded.
O bug principal é que _gnutls_x509_get_signature não limpa dados signature->data no caminho de limpeza:
lib/x509/common.c cleanup: gnutls_free(signature->data); // <- pointer in datum parameter freed, but not cleared return result; }
Os chamadores, como check_if_ca, assumem que, se _gnutls_x509_get_signature sempre definir esse parâmetro, ele poderá ser liberado com segurança, mas isso não é verdade:
lib/x509/verify.c ret = _gnutls_x509_get_signature(cert->cert, "signature", &cert_signature); if (ret < 0) { gnutls_assert(); goto fail; } // ... fail: result = 0; cleanup: _gnutls_free_datum(&cert_signed_data); _gnutls_free_datum(&issuer_signed_data); _gnutls_free_datum(&cert_signature); // <--- freed again _gnutls_free_datum(&issuer_signature); return result; }
Créditos
Tavis Ormandy (Google Project Zero)
Referência(s)
GnuTLS
https://www.gnutls.org/security-new.html#GNUTLS-SA-2019-03-27
SECURITY: CVE-2019-3829: critical use after free vulnerability in verify_crt()
https://gitlab.com/gnutls/gnutls/issues/694
https://access.redhat.com/security/cve/CVE-2019-3829
CVE-2019-3829
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-3829
CVE-2019-3829
https://nvd.nist.gov/vuln/detail/CVE-2019-3829
Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.
Última modificação: 27 março 2019