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 porOPENSSL_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.