Populární témata
#
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ítejte zpět u Sherlockova článku o zranitelnosti, kde upozorňujeme na závažnou zranitelnost odhalenou během Sherlockova auditu.
Tento týden máme řetězové odmítnutí služby (CDoS).
Ten byl objeven @0xPapaPitufo během soutěže L2 v roce @MorphLayer.
🧵👇

Pokud je v Rollup.sol navržena škodlivá dávka, předpokládá se, že sekvencer, který ji navrhl, prohraje výzvu, bude přerušen a řetězec bude resetován. Tyto ekonomické pobídky zabraňují pravidelnému zastavování řetězce.
To je založeno na předpokladu, že sekvencer může vyhrát výzvy pouze v případě, že dávka, kterou navrhl, je platná.
Kontrola, zda je prevStateRoot příponou postStateRoot předchozí dávky, však probíhá pouze v finalizeBatch(). Tato kontrola je dostatečná k tomu, aby se zabránilo dokončení dávek s falešnými prevStateRoots, ale nezabrání tomu, aby byly tyto dávky potvrzeny.
To umožňuje škodlivému sekvenceru navrhnout jakoukoli dávku, která provádí transakci platného stavu na falešném prevStateRoot.
Ve většině případů vyzyvatel zaútočí na tuto neplatnou dávku. Sekvencer však může poskytnout platný důkaz o tomto přechodu do stavu, aby ukradl vklad poctivého vyzyvatele a vyhrál výzvu.
V případě, že k tomu dojde nebo že nebude provedena žádná výzva, nebude možné potvrzenou dávku dokončit z důvodu následující kontroly:
Tím se řetězec zamrzne a neumožní se dokončit žádné nové dávky, protože dávky jsou potvrzovány postupně a musí být dokončeny postupně.

Cesta útoku:
1) Útočník navrhne dávku, která obsahuje platný přechod stavu z falešného prevStateRoot.
2) Pokud poctivý vyzyvatel vyzve skupinu, útočník poskytne platný důkaz o přechodu do státu, aby výzvu vyhrál a ukradl vyzyvateli vklad.
3) Ať už se výše uvedené stane nebo ne, řetězec je nyní zastaven, protože útočníkova dávka nemůže být dokončena a žádné další dávky nemohou být dokončeny, aniž by byla dokončena jako první.
4) Útočník nebude seknut, protože vyhrál výzvu.
Jaký to bude mít dopad?
Poctivá výzva, která přijde o svůj vklad, když ji ve výzvě porazí nepoctivý sekvencer, a žádné nové dávky nebude možné dokončit, což způsobí odmítnutí služby Chain a budou muset být ručně vráceny zpět administrátory.
Zmírnění rizik:
Zkontrolujte v commitBatch(), že prevStateRoot se rovná parentBatchHeader.postStateRoot.
Jsme hrdí na to, že jsme tímto objevem pomohli zajistit @morphlayer.
Když je to nezbytně nutné zabezpečit, je Sherlock tou správnou volbou.
3,12K
Top
Hodnocení
Oblíbené