Temas en tendencia
#
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 al Enfoque de vulnerabilidades de Sherlock, donde destacamos una vulnerabilidad impactante descubierta durante una auditoría de Sherlock.
Esta semana, tenemos una Denegación de Servicio en Cadena (CDoS).
Fue descubierto por @0xPapaPitufo durante el @MorphLayer concurso L2.
🧵👇

En Rollup.sol, si se propone un lote malicioso, se supone que el secuenciador que lo propuso perderá el desafío, será cortado y la cadena se reiniciará. Estos incentivos económicos impiden 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 comprobación de que prevStateRoot es el postStateRoot del lote anterior solo se produce en finalizeBatch(). Esta comprobación es suficiente para evitar que se finalicen lotes con prevStateRoots falsos, pero no impide que se confirmen estos lotes.
Esto permite que un secuenciador malintencionado proponga cualquier lote que realice una transacción de estado válida en un prevStateRoot falso.
En la mayoría de los casos, un retador atacará este lote no vá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 que no se realice ningún desafío, el lote confirmado no podrá finalizarse debido a la siguiente comprobación:
Esto congelará la cadena y no permitirá que se finalicen nuevos lotes, ya que los lotes se confirman secuencialmente y deben finalizarse secuencialmente.

La ruta de ataque:
1) El atacante propone un lote que contiene una transición de estado válida de un prevStateRoot falso.
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) Ya sea que suceda o no lo anterior, la cadena ahora se detiene, ya que el lote del atacante no se puede finalizar y no se pueden finalizar otros lotes sin que se finalice primero.
4) El atacante no será cortado, 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, lo que provocará la denegación de servicio de la cadena, y los administradores tendrán que revertirlo manualmente.
La mitigación:
Compruebe en commitBatch() que prevStateRoot sea igual a parentBatchHeader.postStateRoot.
Estamos orgullosos de haber ayudado a asegurar @morphlayer a través de este descubrimiento.
Cuando es absolutamente necesario que sea seguro, Sherlock es la elección correcta.
2.95K
Populares
Ranking
Favoritas