Tópicos populares
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Bem-vindo de volta ao Spotlight de Vulnerabilidades do Sherlock, onde destacamos uma vulnerabilidade impactante descoberta durante uma auditoria do Sherlock.
Esta semana, temos um Denial of Service em Cadeia (CDoS).
Foi descoberto por @0xPapaPitufo durante o concurso L2 da @MorphLayer.
🧵👇

No Rollup.sol, se um lote malicioso for proposto, a suposição é que o sequenciador que o propôs perderá o desafio, será penalizado e a cadeia será reiniciada. Esses incentivos econômicos impedem que a cadeia seja interrompida regularmente.
Isso baseia-se na suposição de que um sequenciador só pode vencer desafios se o lote que propôs for válido.
No entanto, a verificação de que prevStateRoot é o postStateRoot do lote anterior só acontece em finalizeBatch(). Esta verificação é suficiente para impedir que lotes com prevStateRoots falsos sejam finalizados, mas não impede que esses lotes sejam comprometidos.
Isto permite que um sequenciador malicioso proponha qualquer lote que execute uma transação de estado válida em um prevStateRoot falso.
Na maioria dos casos, um desafiador atacará este lote inválido. No entanto, o sequenciador pode fornecer uma prova válida desta transição de estado para roubar o depósito do desafiador honesto e vencer o desafio.
No caso de isso acontecer, ou se nenhum desafio for realizado, o lote comprometido não poderá ser finalizado devido à seguinte verificação:
Isto congelará a cadeia e não permitirá que novos lotes sejam finalizados, uma vez que os lotes são comprometidos sequencialmente e devem ser finalizados sequencialmente.

O Caminho do Ataque:
1) O atacante propõe um lote que contém uma transição de estado válida a partir de um fake prevStateRoot.
2) Se um desafiador honesto desafiar o lote, o atacante fornece uma prova válida da transição de estado para vencer o desafio e roubar o depósito do desafiador.
3) Quer isso aconteça ou não, a cadeia agora está parada, pois o lote do atacante não pode ser finalizado, e nenhum outro lote pode ser finalizado sem que este seja finalizado primeiro.
4) O atacante não será penalizado, porque venceu o desafio.
Qual é o impacto?
Um desafio honesto que perderá o seu depósito quando um sequenciador desonesto o vencer num desafio, e nenhum novo lote poderá ser finalizado, causando uma negação de serviço da cadeia, e terá que ser revertido manualmente pelos administradores.
A Mitigação:
Verifique em commitBatch() se prevStateRoot é igual a parentBatchHeader.postStateRoot.
Estamos orgulhosos de ter ajudado a garantir @morphlayer através desta descoberta.
Quando precisa absolutamente de ser seguro, Sherlock é a escolha certa.
2,96K
Top
Classificação
Favoritos