Populaire onderwerpen
#
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.
Welkom terug bij Sherlock's Vulnerability Spotlight, waar we een impactvolle kwetsbaarheid belichten die is ontdekt tijdens een Sherlock-audit.
Deze week hebben we een Chain Denial of Service (CDoS).
Het werd ontdekt door @0xPapaPitufo tijdens de @MorphLayer L2-wedstrijd.
🧵👇

In Rollup.sol, als een kwaadaardige batch wordt voorgesteld, is de veronderstelling dat de sequencer die deze heeft voorgesteld de uitdaging zal verliezen, geslashed zal worden en de keten zal worden gereset. Deze economische prikkels voorkomen dat de keten regelmatig wordt gestopt.
Dit is gebaseerd op de veronderstelling dat een sequencer alleen uitdagingen kan winnen als de batch die hij heeft voorgesteld geldig is.
Echter, de controle of prevStateRoot de postStateRoot van de vorige batch is, vindt alleen plaats in finalizeBatch(). Deze controle is voldoende om batches met nep prevStateRoots te voorkomen dat ze worden gefinaliseerd, maar het stopt deze batches niet om te worden gecommit.
Dit stelt een kwaadaardige sequencer in staat om elke batch voor te stellen die een geldige staatstransactie uitvoert op een nep prevStateRoot.
In de meeste gevallen zal een uitdager deze ongeldige batch aanvallen. Echter, de sequencer kan een geldig bewijs van deze staatsoverdracht leveren om de eerlijke storting van de uitdager te stelen en de uitdaging te winnen.
In het geval dat dit gebeurt, of dat er geen uitdaging wordt uitgevoerd, kan de gecommitteerde batch niet worden gefinaliseerd vanwege de volgende controle:
Dit zal de keten bevriezen en geen nieuwe batches toestaan om gefinaliseerd te worden, aangezien batches sequentieel worden gecommitteerd en sequentieel moeten worden gefinaliseerd.

Het Aanvalspad:
1) De aanvaller stelt een batch voor die een geldige staatsovergang bevat van een nep prevStateRoot.
2) Als een eerlijke uitdager de batch uitdaagt, levert de aanvaller een geldig bewijs van de staatsovergang om de uitdaging te winnen en de storting van de uitdager te stelen.
3) Of het bovenstaande nu gebeurt of niet, de keten is nu gestopt, aangezien de batch van de aanvaller niet kan worden afgerond, en geen andere batches kunnen worden afgerond zonder dat deze eerst is afgerond.
4) De aanvaller zal niet worden gestraft, omdat ze de uitdaging hebben gewonnen.
Wat is de impact?
Een eerlijke uitdaging die zijn borg verliest wanneer een oneerlijke sequencer deze in een uitdaging verslaat, en er geen nieuwe batches meer kunnen worden afgerond, wat leidt tot een Denial of Service van de Chain, en handmatig door de beheerders moet worden teruggedraaid.
De mitigatie:
Controleer in commitBatch() of prevStateRoot gelijk is aan parentBatchHeader.postStateRoot.
We zijn trots dat we @morphlayer hebben geholpen om dit te beveiligen.
Wanneer het absoluut veilig moet zijn, is Sherlock de juiste keuze.
2,96K
Boven
Positie
Favorieten