Novas melhorias

LibreSSL 4.0 traz suporte ao EmScripten e amplia compatibilidade no Windows pós-2038

LibreSSL 4.0 adiciona suporte ao EmScripten, corrige compatibilidade com datas pós-2038 no Windows e traz diversas melhorias internas, como otimizações de memória e segurança.

Logotipo do LibreSSL com um mascote em estilo cartoon usando boina preta com coração e texto 'LibreSSL' ao lado.

O LibreSSL 4.0 foi oficialmente lançado e estará disponível em breve no diretório do LibreSSL no espelho OpenBSD local. Esta é a primeira versão estável da linha 4.0.x, também inclusa no OpenBSD 7.6. A nova versão traz uma série de mudanças e melhorias significativas, tanto em termos de compatibilidade quanto em aprimoramentos internos.

Principais mudanças e atualizações

A versão LibreSSL 4.0 inclui diversas alterações em comparação com a versão anterior, 3.9.2, com foco na melhoria da compatibilidade e no refinamento do desempenho. Aqui estão os principais destaques:

  • Suporte ao EmScripten: O suporte inicial ao EmScripten foi adicionado nas compilações feitas com CMake, permitindo o uso do LibreSSL em aplicações WebAssembly.
  • Correções de compatibilidade de tempo: O uso de timegm() foi completamente substituído por OPENSSL_timegm(), resultando na remoção da camada de compatibilidade e simplificação dos testes. Além disso, foi corrigido o suporte ao Windows para datas posteriores ao ano de 2038.
  • Arquiteturas legadas: O suporte ativo à plataforma MIPS de 32 bits foi descontinuado, refletindo a prioridade em arquiteturas mais modernas.

Melhorias internas e otimizações

Diversas otimizações internas foram implementadas para aprimorar o código e a segurança do LibreSSL:

  • Vazamentos de memória foram corrigidos em partes da configuração, e a lógica de algumas funções foi simplificada.
  • A função interna X509_check_trust() foi reorganizada para maior clareza, e funções de Assembly não são mais expostas na API pública.
  • Extensões TLS agora têm suas callbacks processadas em ordem pré-definida, garantindo melhor previsibilidade.
  • As implementações de MD4 e MD5 foram otimizadas, removendo aprimoramentos específicos de arquiteturas mais antigas.
  • Códigos antigos e não utilizados, como métodos DSA e otimizações para processadores obsoletos, foram removidos para melhorar a manutenção e o desempenho.

Novos recursos e compatibilidade

A versão 4.0 também traz novos recursos voltados para compatibilidade e flexibilidade:

  • Um novo parâmetro CRLfile foi adicionado ao comando CMS no openssl, permitindo a especificação de CRLs adicionais durante a verificação de certificados.
  • Houve uma mudança importante no parsing de protocolos dentro do libtls, desconsiderando versões antigas de TLS (1.0 e 1.1) e priorizando o TLSv1.2 e superiores.
  • Além disso, funções arriscadas da família EVP_PKEY*_check foram removidas, e a função SPKAC foi retirada do openssl.

Melhorias de documentação e segurança proativa

Com foco em manter a documentação clara e atualizada, foram removidas referências a APIs descontinuadas, além de ajustes em descrições de parâmetros obsoletos. As práticas de teste também foram aprimoradas, com a atualização dos certificados utilizados nos testes.

Correções de bugs e segurança

O código para conformidade com o padrão RFC 5280 foi aprimorado para garantir que o ASN1_TIME_set_string() funcione corretamente. Além disso, melhorias no manuseio de grupos e compartilhamento de chaves no TLS evitaram duplicações desnecessárias e reforçaram a seleção de chaves com base nas preferências do cliente.

Correções importantes foram implementadas em diversas áreas, como evitar estouro de buffer no SSL_select_next_proto() e assegurar o tratamento constante de chaves no processo de troca RSA.

Considerações finais

O LibreSSL 4.0 reflete o compromisso contínuo do projeto em adotar práticas de programação modernas e seguras. O feedback da comunidade é sempre bem-vindo, e as contribuições de desenvolvedores continuam a fortalecer o projeto. Mais informações e downloads estão disponíveis no site oficial.