Eles identificaram uma vulnerabilidade na biblioteca de algoritmos SHA-3

vulnerabilidade

Se exploradas, essas falhas podem permitir que invasores obtenham acesso não autorizado a informações confidenciais ou geralmente causem problemas

Foi identificada uma vulnerabilidade (já listado em CVE-2022-37454) en a implementação da função hash criptográfica SHA-3 (Keccak), oferecido no pacote XKCP (eXtended Keccak Code Package).

A vulnerabilidade identificada pode causar um estouro de buffer durante o processamento de dados formados. O problema é devido a um bug no código de uma implementação específica do SHA-3, não a uma vulnerabilidade no próprio algoritmo.

O pacote XKCP é apresentado como a implementação oficial do SHA-3, desenvolvido com a ajuda da equipe de desenvolvimento Keccak, e usado como base para funções para trabalhar com SHA-3 em várias linguagens de programação (por exemplo, o código XKCP é usado no módulo Python hashlib, no pacote Ruby digest-sha3 e nas funções PHP hash_*).

Segundo o pesquisador que identificou o problema, poderia usar a vulnerabilidade para violar as propriedades criptográficas da função hash e encontrar a primeira e segunda pré-imagens, bem como determinar colisões.

O motivo da falha de segmentação é que os scripts tentarão gravar mais dados em um buffer do que ele pode conter. Essa vulnerabilidade é conhecida como estouro de buffer, que o OWASP descreve como "provavelmente a forma mais conhecida de vulnerabilidade de segurança de software".

Uma pequena variante do código causará um loop infinito: basta substituir 4294967295 por 4294967296. Observe a semelhança com CVE-2019-8741, outra vulnerabilidade que encontrei que afetou o firmware de mais de 1.400 bilhão de dispositivos Apple, o que também causou um loop infinito.

Também, a criação de um protótipo de exploração é anunciada, que permite obter a execução do código ao calcular o hash a partir de um arquivo especialmente projetado. A vulnerabilidade também pode ser usada para atacar algoritmos de verificação de assinatura digital usando SHA-3 (por exemplo, Ed448). Espera-se que os detalhes dos métodos de ataque sejam divulgados posteriormente, após a remoção geral da vulnerabilidade.

Esse tipo de comportamento não deve acontecer em linguagens "seguras" como Python e PHP, pois elas verificam se todas as operações de leitura e escrita estão dentro dos limites do buffer. No entanto, o problema é que a vulnerabilidade está presente na linguagem C "insegura" subjacente...

Ainda não está claro como a vulnerabilidade afeta os aplicativos existentes na prática, pois para que o problema se manifeste no código, a computação de hash cíclico em blocos deve ser usada e um dos blocos processados ​​deve ter cerca de 4 GB de tamanho (pelo menos 2^32 – 200 bytes) .

Ao processar os dados de entrada de uma só vez (sem cálculo sequencial do hash por partes), o problema não aparece. Como um método de proteção mais simples, propõe-se limitar o tamanho máximo dos dados envolvidos em uma iteração do cálculo de hash.

O código vulnerável foi publicado em janeiro de 2011, portanto, levou mais de uma década para encontrar essa vulnerabilidade. Parece ser difícil encontrar vulnerabilidades em implementações criptográficas, mesmo que elas desempenhem um papel crítico na segurança geral de um sistema. (Talvez as pessoas nem estejam procurando por tais vulnerabilidades, já que nem essa vulnerabilidade no XKCP nem a vulnerabilidade da Apple mencionada acima são elegíveis para qualquer programa de recompensas de bugs!)

Vulnerabilidade é devido a um erro no processamento do bloco dos dados de entrada. Devido a uma comparação incorreta dos valores com o tipo "int", é determinado um tamanho incorreto dos dados pendentes, o que faz com que a fila seja gravada fora do buffer alocado.

Em particular, menciona-se que ao comparar, a expressão «parcialBlock + instância->byteIOIndex«, que, com grandes valores das partes componentes, levou a um estouro de inteiros. Além disso, houve um typecast incorreto "(unsigned int)(dataByteLen - i)" no código, causando um estouro em sistemas com um tipo size_t de 64 bits.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.