PT-2024-31407 · Llvm+1 · Llvm+1
Hedgar2017
·
Publicado
2024-08-29
·
Atualizado
2024-09-03
·
CVE-2024-45056
CVSS v3.1
5.9
Média
| Vetor | AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N |
Nome do software vulnerável e versões afetadas
Versões do zksolc anteriores à 1.5.3
Descrição
O problema decorre do processo de compilação do zksolc, um compilador Solidity para o ZKsync, no qual todas as versões do LLVM desde 2015 otimizam incorretamente a expressão
(xor (shl 1, x), -1) para (rotl ~1, x) quando executadas com otimizações ativadas. Aqui, ~1 é gerado como um número de 64 bits sem sinal (2^64-1), que é então estendido com zeros para 256 bits no alvo EraVM, em vez de ser estendido com sinal. Isso faz com que o compilador produza rotl 2^64 - 1, x em vez do esperado roti 2^256 - 1, x. A análise mostrou que nenhum contrato foi afetado até a data de publicação deste aviso.Recomendações
Para versões anteriores à 1.5.3, atualize para a versão 1.5.3 ou posterior e reimplante todos os contratos para resolver o problema. Como solução alternativa temporária, considere desativar as otimizações no compilador até que um patch esteja disponível. No entanto, observa-se que não há soluções alternativas conhecidas para essa vulnerabilidade, tornando a atualização para uma versão corrigida a única solução.
Exploit
Correção
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Llvm
Zksolc