Trendande ämnen
#
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.
Välkommen tillbaka till Sherlocks Vulnerability Spotlight, där vi lyfter fram en effektfull sårbarhet som upptäcktes under en Sherlock-granskning.
Den här veckan har vi en Chain Denial of Service (CDoS).
Det upptäcktes av @0xPapaPitufo under @MorphLayer L2-tävlingen.
🧵👇

I Rollup.sol, om en skadlig batch föreslås, är antagandet att sequencern som föreslog den kommer att förlora utmaningen, bli skuren och kedjan kommer att återställas. Dessa ekonomiska incitament förhindrar att kedjan stoppas regelbundet.
Detta bygger på antagandet att en sequencer bara kan vinna utmaningar om batchen de föreslog är giltig.
Kontrollen av att prevStateRoot är postStateRoot för den tidigare batchen sker dock bara i finalizeBatch(). Den här kontrollen är tillräcklig för att förhindra att batchar med falska prevStateRoots slutförs, men det hindrar inte dessa batchar från att checkas in.
Detta gör att en skadlig sekvenserare kan föreslå en batch som utför en giltig tillståndstransaktion på en falsk prevStateRoot.
I de flesta fall kommer en utmanare att attackera den här ogiltiga batchen. Sequencern kan dock tillhandahålla ett giltigt bevis på denna tillståndsövergång för att stjäla den ärliga utmanarens insättning och vinna utmaningen.
Om detta händer, eller om ingen utmaning utförs, kommer den bekräftade batchen inte att kunna slutföras på grund av följande kontroll:
Detta kommer att frysa kedjan och inte tillåta att några nya batchar slutförs, eftersom batchar checkas in sekventiellt och måste slutföras sekventiellt.

Attackens väg:
1) Angriparen föreslår en batch som innehåller en giltig tillståndsövergång från en falsk prevStateRoot.
2) Om en ärlig utmanare utmanar batchen, tillhandahåller angriparen ett giltigt bevis på tillståndsövergången för att vinna utmaningen och stjäla utmanarens insättning.
3) Oavsett om ovanstående händer eller inte, är kedjan nu stoppad, eftersom angriparens batch inte kan slutföras och inga andra batcher kan slutföras utan att den först slutförs.
4) Angriparen kommer inte att bli huggen, eftersom de vann utmaningen.
Vad är effekten?
En ärlig utmaning som kommer att förlora sin insättning när en oärlig sequencer slår den i en utmaning, och inga nya batcher kommer att kunna slutföras, vilket orsakar Denial of Service of the Chain, och måste rullas tillbaka manuellt av administratörerna.
Åtgärden:
Kontrollera i commitBatch() att prevStateRoot är lika med parentBatchHeader.postStateRoot.
Vi är stolta över att ha hjälpt till att säkra @morphlayer genom denna upptäckt.
När det absolut måste vara säkert är Sherlock det rätta valet.
2,79K
Topp
Rankning
Favoriter