Subiecte populare
#
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.
Bine ați revenit la Sherlock's Vulnerability Spotlight, unde evidențiem o vulnerabilitate de impact descoperită în timpul unui audit Sherlock.
Săptămâna aceasta, avem un Chain Denial of Service (CDoS).
A fost descoperit de @0xPapaPitufo în timpul concursului @MorphLayer L2.
🧵👇

În Rollup.sol, dacă se propune un lot rău intenționat, presupunerea este că secvențiatorul care l-a propus va pierde provocarea, va fi tăiat și lanțul va fi resetat. Aceste stimulente economice împiedică oprirea regulată a lanțului.
Acest lucru se bazează pe presupunerea că un secvențiator poate câștiga provocări numai dacă lotul pe care l-a propus este valid.
Cu toate acestea, verificarea faptului că prevStateRoot este postStateRoot al lotului anterior are loc numai în finalizeBatch(). Această verificare este suficientă pentru a preveni finalizarea loturilor cu prevStateRoots fals, dar nu oprește comiterea acestor loturi.
Acest lucru permite unui secvențiator rău intenționat să propună orice lot care efectuează o tranzacție de stare validă pe un prevStateRoot fals.
În cele mai multe cazuri, un challenger va ataca acest lot invalid. Cu toate acestea, secvențiatorul poate oferi o dovadă validă a acestei tranziții de stare pentru a fura depozitul challengerului cinstit și a câștiga provocarea.
În cazul în care se întâmplă acest lucru sau nu se efectuează nicio contestare, lotul angajat nu va putea fi finalizat din cauza următoarei verificări:
Acest lucru va îngheța lanțul și nu va permite finalizarea unor loturi noi, deoarece loturile sunt angajate secvențial și trebuie finalizate secvențial.

Calea de atac:
1) Atacatorul propune un lot care conține o tranziție de stare validă de la un fals prevStateRoot.
2) Dacă un challenger onest contestă lotul, atacatorul oferă o dovadă validă a tranziției de stat pentru a câștiga provocarea și a fura depozitul challengerului.
3) Indiferent dacă se întâmplă sau nu cele de mai sus, lanțul este acum oprit, deoarece lotul atacatorului nu poate fi finalizat și niciun alt lot nu poate fi finalizat fără ca acesta să fie finalizat mai întâi.
4) Atacatorul nu va fi tăiat, pentru că a câștigat provocarea.
Care este impactul?
O provocare onestă care își va pierde depozitul atunci când un secvențiator necinstit o învinge într-o provocare și niciun lot nou nu va putea fi finalizat, provocând Denial of Service of the Chain și va trebui să fie anulat manual de către administratori.
Atenuarea:
Verificați commitBatch() dacă prevStateRoot este egal cu parentBatchHeader.postStateRoot.
Suntem mândri că am ajutat la asigurarea @morphlayer prin această descoperire.
Când trebuie neapărat să fie sigur, Sherlock este alegerea potrivită.
2,78K
Limită superioară
Clasament
Favorite