OpenSSL é uma popular biblioteca de criptografia de código aberto. Aplicativos que protegem a comunicação em redes de computadores usam OpenSSL para implementar SSL (Secure Socket Layer) e TLS (Transport Layer Security). O OpenSSL oferece diferentes funções utilitárias, como gerar chaves públicas e privadas para iniciar comunicações seguras.
O projeto OpenSSL anunciou recentemente o lançamento do OpenSSL 3.0.7
. Esta versão foi disponibilizada em 1º de novembro de 2022 como uma correção de segurança para duas vulnerabilidades de alta gravidade, CVE-2022-3602 e CVE-2022-3786.
1. CVE-2022-3602 ( Excesso de buffer de 4 bytes do endereço de e-mail X.509 ): Esta vulnerabilidade ocorre porque o OpenSSL processa o Punycode incorretamente ao verificar os certificados X.509. Punycode é um sistema de codificação exclusivo para representar caracteres Unicode em vários idiomas usando o subconjunto de caracteres ASCII. Ele é usado para codificar nomes de domínio que contêm caracteres não ASCII. A função vulnerável específica no OpenSSL é o arquivo ossl_punycode_decode
. Essa função vulnerável pode acionar um estouro de buffer quando o OpenSSL processa uma cadeia de certificados ao decodificar strings Punycode. Esta vulnerabilidade foi relatada em 17 de outubro de 2022 por SandboxEscaper. O projeto OpenSSL inicialmente classificou o CVE-2022-3602 como uma vulnerabilidade “crítica”, mas posteriormente foi rebaixado para “alto” porque não inicia de forma confiável a Execução Remota de Código (RCE).
2. CVE-2022-3786 ( Excesso de buffer de comprimento variável de endereço de e-mail X.509 ): esta vulnerabilidade aciona um estouro de buffer na ossl_a2ulable
função vulnerável. Quando a função vulnerável interage com um caractere Punycode acompanhado por um caractere de ponto (.), a ossl_a2ulable
função anexa o caractere de ponto à saída do buffer. Essa ação ocorre mesmo quando a ação excede o tamanho do buffer. Um invasor acionará um estouro de buffer usando qualquer número de caracteres de ponto, levando à corrupção da pilha. Essa vulnerabilidade foi encontrada por Viktor Dukhovni em 18 de outubro de 2022 enquanto pesquisava o CVE-2022-3602.
Ambas as vulnerabilidades são vulnerabilidades de estouro de buffer que o OpenSSL aciona na função de verificação de restrição de nome da verificação de certificado X.509. Uma verificação de assinatura da cadeia de certificados deve ocorrer para que um invasor explore essas vulnerabilidades. Essas vulnerabilidades são exploradas quando:
nameConstraints
campo com uma string Punycode maliciosa contendo pelo menos 512 bytes, excluindo “xn--”. Como alternativa, um invasor pode criar um certificado de folha contendo o otherName
campo de um X.509 Subject Alternative Name (SAN). Este campo especifica uma string SmtpUTF8Mailbox.CVE-2022-3602 e CVE-2022-3786 levam à negação de serviço (DoS). Um invasor travará um aplicativo usando OpenSSL enviando um certificado contendo um e-mail malicioso codificado em Punycode ao aplicativo para análise.
As versões afetadas do OpenSSL são 3.0.0
por meio 3.0.6
de , enquanto as versões anteriores, OpenSSL 0.9.x
, 1.0.x
e 1.1.x
não são afetadas pelas vulnerabilidades mencionadas. Não há explorações de trabalho disponíveis no momento em que escrevo esta postagem no blog.
A correção para CVE-2022-3602 no decodificador punycode foi implementada simplesmente alterando “ >
” para “ >=
” no código-fonte, conforme mostrado abaixo:
n = n + i / (saída_escrita + 1);
i %= (saída_escrita + 1);if (saída_escrita >= saída_max)retorna 0;
memmove(pDecodificado + i + 1, pDecodificado + i
Isso mostra como um erro de um byte pode desencadear uma vulnerabilidade de alta gravidade.
Para garantir uma segurança absoluta, as organizações devem priorizar o inventário e a verificação de todos os sistemas disponíveis em busca de versões de software vulneráveis, neste caso, OpenSSL. Nesta postagem do blog, detectamos as versões vulneráveis do OpenSSL em um endpoint com o módulo Omni Secure Vulnerability Detector e o módulo Security Configuration Assessment (SCA).
O módulo Omni Secure Vulnerability Detector pode detectar versões vulneráveis do pacote OpenSSL. Ele pode descobrir vulnerabilidades que afetam os aplicativos e o sistema operacional dos endpoints monitorados. O módulo Vulnerability Detector primeiro baixa e armazena os dados de todas as vulnerabilidades de vários repositórios CVE disponíveis publicamente. Em seguida, o servidor Omni Secure cria um banco de dados de vulnerabilidade global a partir dos dados coletados. Por fim, o banco de dados de vulnerabilidade global Omni Secure é correlacionado com os dados de inventário de endpoint para detectar vulnerabilidades.
Depois de concluir a varredura de vulnerabilidade o Omni Secure, esperamos alguns minutos e veremos as vulnerabilidades CVE-2022-3786 e CVE-2022-3602 como parte do inventário do endpoint monitorado vulnerável no painel:
O módulo Omni Secure SCA executa verificações que testam a proteção do sistema, detectam software vulnerável e validam políticas de configuração. Nesta seção, utilizamos o SCA para detectar as versões vulneráveis do OpenSSL no Windows.
Podemos ver os resultados da varredura SCA para um endpoint com a versão infectada do OpenSSL:
É recomendado pelo OpenSSL atualizar qualquer instalação vulnerável do OpenSSL para a correção do OpenSSL-3.0.7 lançada pelo projeto OpenSSL.
Os usuários do Red Hat Enterprise podem atualizar para a versão corrigida do Red Hat openssl-3.0.1-43.el9_0 .
Os usuários do Ubuntu 22.04 e 22.10 podem atualizar para a versão canônica corrigida 3.0.2-0ubuntu1.7 e 3.0.5-2ubuntu2 , respectivamente.
Esta postagem de blog demonstra como Omni Secure detecta bibliotecas OpenSSL com as vulnerabilidades CVE-2022-3602 e CVE-2022-3786. O Omni Secure Vulnerability Detector pode ser usado por organizações para detectar vulnerabilidades existentes em diferentes sistemas operacionais em grande escala. O módulo Omni Secure Security Configuration Assessment (SCA) também pode ser usado para verificar versões vulneráveis do OpenSSL em vários terminais.