Llvm · Llvm · CVE-2024-45056
**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.