Vulnerabilidades em bibliotecas criptográficas encontradas por fuzzing moderno

Views: 230
0 0
Read Time:4 Minute, 13 Second

Vulnerabilidades corrigidas recentemente em MatrixSSL e wolfSSL , duas implementações/bibliotecas TLS/SSL de código aberto para ambientes incorporados, enfatizaram o grande potencial do uso de fuzzing para descobrir falhas de segurança em implementações de protocolos criptográficos.

CVE-2022-43974 e CVE-2022-42905

CVE-2022-43974 é uma vulnerabilidade de estouro de buffer encontrada nas versões 4.5.1-4.0.0 do MatrixSSL que pode permitir a divulgação de informações e a execução remota de código.

Foi descoberto e relatado por Robert Hörr e Alissar Ibrahim, avaliadores de segurança do IT Security Evaluation Facility da Deutsche Telekom, e foi corrigido na versão 4.6.0, lançada em dezembro de 2022.

CVE-2022-42905 é uma vulnerabilidade de leitura excessiva do buffer encontrada nas versões 5.5.1 e anteriores do wolfSSL e pode resultar em falhas exploráveis ​​(mas somente se as funções de retorno de chamada estiverem ativadas).

Foi descoberto e relatado por Lucca Hirschi e Steve Kremer do LORIA, Inria (Instituto Francês de Pesquisa em Ciência e Tecnologia Digital) e Max Ammann, um engenheiro de segurança estagiário da Trail of Bits. Ele foi corrigido no wolfSSL versão 5.5.2, lançado em outubro de 2022.

Fuzzing de bibliotecas criptográficas para sinalizar falhas de segurança

Em ambos os casos, os pesquisadores usaram fuzzing para encontrar as falhas.

“O software de computador está se tornando mais complexo. Portanto, é quase impossível realizar uma revisão completa do código-fonte com cobertura razoável. Por esse motivo, métodos modernos de fuzzing são usados ​​para descobrir vulnerabilidades”, avaliadores de segurança da Deutsche Telekomexplicou.

Eles confundiram a biblioteca MatrixSSL com fuzzers guiados por cobertura de código AFL e libFuzzer , e a vulnerabilidade foi encontrada com AddressSanitizer, uma ferramenta para detectar erros de memória. (Usando essas mesmas ferramentas, há vários anos, Hörr desenterrou outro estouro de buffer no wolfSSL. Ele também desenvolveu a estrutura Fast Automated Software Testing para bibliotecas TLS, combinando os pontos fortes de várias ferramentas fuzzing.)

“Fuzzing baseado em cobertura de código combinado com o AddressSanitizer é um método poderoso para descobrir, por exemplo, estouros de buffer. Com códigos-fonte cada vez mais complexos, é uma alternativa eficiente em termos de recursos às revisões de código-fonte, porque essa abordagem de fuzzing pode ser feita principalmente de forma automática. Como existem muitas abordagens para fuzzing, é a arte de fuzzing encontrar a melhor abordagem”, observaram Hörr e Ibrahim.

Ammann e seus colegas pesquisadores usaram um novo fuzzer de protocolo chamado tlspuffin para descobrir automaticamente o CVE-2022-42905 e três outras vulnerabilidades.

“Tlspuffin é um fuzzer inspirado na verificação de protocolo formal. Inicialmente desenvolvido como parte do meu estágio na LORIA, INRIA, França, é especialmente direcionado contra protocolos criptográficos como TLS ou SSH”, explicou.

Eles usaram o fuzzer não apenas para descobrir novas vulnerabilidades no wolfSSL, mas também para redescobrir vulnerabilidades lógicas sinalizadas anteriormente (por exemplo, FREAK ) como uma forma de provar que o tlspuffin funciona.

Em um excelente artigo , Ammann aprofundou algumas das vulnerabilidades descobertas e como o fuzzer encontrou “estados estranhos” e permitiu que eles encontrassem sua fonte.

“É um desafio fazer fuzz nas implementações de protocolos criptográficos. Ao contrário do fuzzing tradicional de formatos de arquivo, os protocolos criptográficos exigem um fluxo específico de mensagens criptográficas e mutuamente dependentes para alcançar estados de protocolo profundos”, explicou ele.

“Além disso, detectar bugs lógicos é um desafio por si só. O AddressSanitizer permite que os pesquisadores de segurança encontrem problemas relacionados à memória de forma confiável. Para bugs lógicos, como desvios de autenticação ou perda de confidencialidade, não existem detectores automatizados.”

É por isso que eles criaram tlspuffin. Empregando o modelo Dolev–Yao de décadas , que pode ser usado para testar protocolos criptográficos, ele inclui modificações específicas para que eles possam fuzzar com sucesso implementações concretas de protocolos criptográficos. A estrutura de Tlspuffin também é baseada no fuzzer LibAFL .

“Antes do meu estágio na Trail of Bits, o tlspuffin já suportava o fuzzing de várias versões do OpenSSL (incluindo a versão 1.0.1, que é vulnerável ao Heartbleed) e LibreSSL”, observou Ammann. Desde então, eles têm:

  • Projetou uma interface que adicionou a capacidade de fuzzar bibliotecas de protocolos arbitrários e adicionou suporte para fuzzing wolfSSL
  • Adicionado suporte para fuzzing do protocolo SSH, bem como libssh
  • Adicionado um oráculo de violações de segurança que permite a detecção de problemas de segurança que não levam a falhas do programa (por exemplo, desvios de autenticação ou downgrades de protocolo)
  • Fez alterações que lhes permitiram validar as descobertas com mais facilidade

O Tlspuffin agora pode ser usado para testar os protocolos TLS e SSH, e a integração de um novo protocolo no tlspuffin é possível, mas “exige um esforço significativo e requer uma compreensão profunda do protocolo”. Também pode ser usado por desenvolvedores para escrever suítes de teste.

FONTE: HELPNET SECURITY

POSTS RELACIONADOS