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

VetorAV: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

CVE-2024-45056
GHSA-FPX7-8VC6-FRJJ

Produtos afetados

Llvm
Zksolc