Tendencias del momento
#
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.
Bienvenido de nuevo a la Spotlight de Vulnerabilidades de Sherlock, donde destacamos una vulnerabilidad impactante descubierta durante una auditoría de Sherlock.
Esta semana, tenemos un Denegación de Servicio en Cadena (CDoS).
Fue descubierta por @0xPapaPitufo durante el concurso L2 de @MorphLayer.
🧵👇

En Rollup.sol, si se propone un lote malicioso, se asume que el secuenciador que lo propuso perderá el desafío, será penalizado y la cadena se reiniciará. Estos incentivos económicos evitan que la cadena se detenga regularmente.
Esto se basa en la suposición de que un secuenciador solo puede ganar desafíos si el lote que propuso es válido.
Sin embargo, la verificación de que prevStateRoot es el postStateRoot del lote anterior solo ocurre en finalizeBatch(). Esta verificación es suficiente para evitar que los lotes con prevStateRoots falsos sean finalizados, pero no impide que estos lotes sean comprometidos.
Esto permite que un secuenciador malicioso proponga cualquier lote que realice una transacción de estado válida sobre un prevStateRoot falso.
En la mayoría de los casos, un retador atacará este lote inválido. Sin embargo, el secuenciador puede proporcionar una prueba válida de esta transición de estado para robar el depósito del retador honesto y ganar el desafío.
En el caso de que esto suceda, o de que no se realice ningún desafío, el lote comprometido no podrá ser finalizado debido a la siguiente verificación:
Esto congelará la cadena y no permitirá que se finalicen nuevos lotes, ya que los lotes se comprometen secuencialmente y deben ser finalizados secuencialmente.

El camino del ataque:
1) El atacante propone un lote que contiene una transición de estado válida de un fake prevStateRoot.
2) Si un retador honesto desafía el lote, el atacante proporciona una prueba válida de la transición de estado para ganar el desafío y robar el depósito del retador.
3) Independientemente de si lo anterior sucede o no, la cadena ahora está detenida, ya que el lote del atacante no puede ser finalizado, y no se pueden finalizar otros lotes sin que este sea finalizado primero.
4) El atacante no será penalizado, porque ganó el desafío.
¿Cuál es el impacto?
Un desafío honesto que perderá su depósito cuando un secuenciador deshonesto lo supere en un desafío, y no se podrán finalizar nuevos lotes, causando una Denegación de Servicio de la Cadena, y tendrá que ser revertido manualmente por los administradores.
La Mitigación:
Verifica en commitBatch() que prevStateRoot sea igual a parentBatchHeader.postStateRoot.
Estamos orgullosos de haber ayudado a asegurar @morphlayer a través de este descubrimiento.
Cuando realmente necesita estar seguro, Sherlock es la elección correcta.
3,19K
Parte superior
Clasificación
Favoritos