OpenSSL 3.0.8 lançado com várias correções de bugs

E foi lançado oficialmente o OpenSSL 3.0.8 com várias correções de bugs. Confira as novidades dessa prévia e veja onde baixar o software.

OpenSSL é uma implementação de código aberto dos protocolos SSL e TLS. Essa biblioteca implementa as funções básicas de criptografia e disponibiliza várias funções utilitárias. Também estão disponíveis wrappers que permitem o uso desta biblioteca em várias outras linguagens.

Em resumo, o OpenSSL é um kit de ferramentas de criptografia que implementa os protocolos de rede SSL (Secure Sockets Layer) e TLS (Transport Layer Security) e os padrões de criptografia relacionados exigidos por eles.

A ferramenta de linha de comando OpenSSL é comumente usada para gerar chaves privadas, criar CSR (Solicitação de Assinatura de Certificado), instalar seu certificado SSL/TLS e identificar informações de certificado.

A reputação do OpenSSL sofreu um sério abalo há 7 anos com o bug Heartbleed. Resumindo, em 2012 o programador alemão Dr. Robin Seggelmann adicionou um novo recurso e se esqueceu de validar uma variável contendo um comprimento.

E então, por cerca de 2 anos, o código defeituoso foi usado, em um momento ou outro, por quase todos os usuários da Internet no mundo. Uma versão corrigida foi lançada em abril de 2014, no mesmo dia em que o Heartbleed foi divulgado publicamente.

Agora, foi anunciado o lançamento das novas versões corretivas do OpenSSL (3.0.8 , 1.1.1t ).

Novidades do OpenSSL 3.0.8

OpenSSL 3.0.8 lançado com várias correções de bugs
OpenSSL 3.0.8 lançado com várias correções de bugs

Foi descoberta uma vulnerabilidade perigosa (CVE-2023-0286) que permite obter o conteúdo de áreas arbitrárias da memória do computador corrigido ao processar um processo controlado por uma lista de certificados revogados (CRL) de um invasor ou um token com registro de data e hora.

A vulnerabilidade é causada por confusão de tipos ao processar um endereço X.400 na extensão X.509 GeneralName.

Em particular, um endereço X.400 foi analisado com o tipo ASN1_STRING, enquanto o campo x400Address na estrutura GENERAL_NAME foi analisado com o tipo ASN1_TYPE, resultando na comparação (GENERAL_NAME_cmp) contra ASN1_TYPE em vez de ASN1_STRING.

Quando a verificação da lista de certificados revogados está habilitada (definindo o sinalizador X509_V_FLAG_CRL_CHECK no aplicativo), a vulnerabilidade permite que um invasor passe ponteiros arbitrários para a função memcmp, que pode ser usada para ler o conteúdo da memória ou iniciar uma finalização anormal do processo .

Na maioria das situações, um invasor deve ter controle sobre a lista de certificados revogados (CRL) usada e a cadeia de confiança do certificado para realizar um ataque bem-sucedido.

Um ataque em caso de controle de um dos elementos especificados também pode ser executado, mas, neste caso, o endereço X.400 deve aparecer como o ponto de distribuição da CRL, o que é bastante raro.

Nesse sentido, supõe-se que a vulnerabilidade afeta principalmente aplicativos que usam sua própria implementação da funcionalidade de download de CRL pela rede.

Além do problema discutido, o OpenSSL 3.0.8 também corrige várias vulnerabilidades menos perigosas:

  • CVE-2022-4304 – é um ataque de canal lateral que permite determinar os dados de origem medindo atrasos de rede ao executar operações RSA usando modos de propagação incremental PKCS#1 v1.5, RSA-OEAP e RSASVE. O ataque é uma variação do método Bleichenbacher, cuja essência é que o invasor, com base em uma reação diferente do servidor, pode separar os blocos Oracle de preenchimento corretos e incorretos usados ​​​​para alinhar os dados criptografados ao longo do limite do bloco. Um ataque bem-sucedido requer o envio de um grande número de mensagens de sondagem para descriptografia.
    Do lado prático, um ataque, por exemplo, pode ser usado para determinar o segredo mestre de uma conexão TLS, que o cliente transmite ao servidor de forma criptografada. Um invasor com a capacidade de interceptar a conexão entre o cliente e o servidor pode recuperar o valor do segredo mestre enviando um grande número de mensagens de teste ao servidor e analisando seu tempo de processamento. Depois que o segredo mestre é determinado, o invasor pode descriptografar os dados enviados pela conexão TLS em questão.
  • CVE-2022-4203: Buffer lido fora dos limites ao verificar certificados X.509 com campo de nome personalizado. O ataque pode travar o aplicativo ou vazar o conteúdo da memória de um processo no lado do cliente se ele se conectar a um servidor controlado pelo invasor ou no lado do servidor se o servidor solicitar autenticação de um cliente controlado pelo invasor.
  • CVE-2023-0216: Falta de referência incorreta do ponteiro nas funções d2i_PKCS7(), d2i_PKCS7_bio() e d2i_PKCS7_fp() ao lidar com dados PKCS7 especialmente formatados. A vulnerabilidade pode causar a falha do processo.
  • CVE-2023-0217: Cancelamento de referência do ponteiro NULL ao verificar a chave pública DSA na função EVP_PKEY_public_check().
  • CVE-2023-0215: acesso use-after-free a uma área de memória na função BIO_new_NDEF usada para transmitir dados ASN.1 pela interface BIO.
  • CVE-2022-4450: Liberação dupla de memória após chamar a função PEM_read_bio_ex.
  • CVE-2023-0401: cancelamento de referência de ponteiro NULL ao validar dados PKCS7.

Para saber mais sobre essa versão do OpenSSL 3.0.8, acesse a nota de lançamento.

Como instalar

Normalmente, OpenSSL está disponível nos repositórios das principais distribuições Linux, então, basta manter seu sistema atualizado.

Mas você também pode baixar o código-fonte do OpenSSL 3.0.8. Se você quiser fazer isso, faça o download do OpenSSL OpenSSL 3.0.8 aqui e informe sobre quaisquer problemas que você encontrar abrindo um problema na página do github.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.