Perspectiva Coinbase asupra recentelor incidente de cheltuieli duble Ethereum Classic (ETC)

34 Views

Concluzii

Coinbase nu a fost vizat de niciuna dintre tranzacțiile de atac și nu a pierdut fonduri
La 10:57 PM PST 31.07.2020, Ethereum Classic (ETC) a fost atacat cu 51%, rezultând ~ 800.000 ETC (~ 5,8 milioane dolari) de tranzacții duble de cheltuieli.
La 8:15 PM PST 8/5/2020, Ethereum Classic a fost atacat din nou cu 51%, rezultând ~ 460.000 ETC (~ 3,2 milioane USD) de tranzacții duble de cheltuieli.
În timpul primului atac, nodurile Parity (OpenEthereum) care rulează în modul tăiat au ignorat blocurile atacante, în timp ce restul rețelei a acceptat blocurile atacante ca fiind valide, rezultând o rețea partiționată de noduri Parity tăiate față de restul rețelei.
* Dacă un atacator controlează puterea minieră majoritară, acesta poate ataca 51% rețeaua blockchain. Atacatorul reorganizează („reorg”) istoricul blockchain-ului pentru a fura fonduri prin tranzacții de cheltuieli duble. Consultați această postare pe blogul Coinbase pentru a afla mai multe despre cheltuielile duble

Vizualizarea Coinbase
La ora 23:10 PST 31.07.2020, Coinbase Blockchain Security a fost alertat că nodurile ETC ale Coinbase nu vedeau blocuri noi la intervalul așteptat. Investigația noastră a constatat că nodurile noastre s-au bifurcat în ceea ce privește starea lor blockchain. Nodurile interne de paritate tăiate ale Coinbase vedeau blocuri diferite față de nodurile noastre neparate Paritate și Geth. Acesta a fost primul indicator că ceva nu era în regulă. Am ajuns la concluzia că un reorg masiv la 22:57 PST 7/31 a cauzat căreia rețelei se datorează implementărilor de noduri diferite (pentru mai multe informații despre furcă, consultați secțiunea partiției de rețea de mai jos).
Un reorg extrem de mare este un indicator semnificativ al potențialelor cheltuieli duble. În acest moment, Coinbase a ales să crească semnificativ cerința noastră de număr de confirmări. Acest lucru a asigurat că nu s-au creditat tranzacții cu cheltuieli duble pe platforma Coinbase.
Au urmat două întrebări deschise: În primul rând, reorgul conținea de fapt cheltuieli duble? În al doilea rând, având în vedere partiția de rețea, cum se asigură Coinbase că suntem pe lanțul potrivit?
Pentru a răspunde la prima întrebare, am comparat lanțul orfan și noul lanț care a provocat reorgul. Am găsit aproximativ 5,8 milioane de dolari cheltuiți dublu pe 53 de tranzacții orfane. Coinbase nu a fost vizat de aceste atacuri.
Următorul nostru obiectiv a fost înțelegerea partiției de rețea ETC. Am descoperit că nodurile Parity tăiate ar ignora blocurile care depășesc o anumită înălțime. Deoarece reorgul masiv a încercat să blocheze orfan dincolo de acest prag, nodurile Parity tăiate au considerat reorgul nevalid. Rețineți că restul rețelei a ales să urmeze reorg, ceea ce a determinat partiția rețelei. După observarea fiecărei părți a partiției de rețea, Coinbase a început să urmeze lanțul principal canonic (adică lanțul Parity ne-tăiat, care include atacul dublu cheltuială).
În noaptea de 5 august, Blockchain Security a primit o altă alertă că a avut loc o reorganizare masivă. Deoarece nodurile de paritate tăiate nu mai erau operate, nu a existat nicio partiție de rețea asemănătoare primului reorg. Prin urmare, întrebarea singulară a fost dacă Coinbase a fost victima acestui atac. Făcând o analiză similară cu cea de mai sus, am confirmat că ETC a fost atacat din nou, de data aceasta pentru aproximativ 3,2 milioane de dolari în nouă tranzacții orfane. Din nou, am constatat că Coinbase nu a fost victima pentru niciuna dintre tranzacțiile orfane.
Ca o măsură de precauție suplimentară, am crescut numărul de confirmări în continuare pentru a asigura securitatea fondurilor clienților noștri. Rețineți că nu este prima oară când ETC a fost cheltuit dublu cu succes. Consultați postarea noastră anterioară pe blog pentru detalii despre atacul anterior.
În timp ce ETC pare să se fi stabilizat în ultimele zile, continuăm să monitorizăm eventualele turbulențe ETC.

Analiza tehnica
Cheltuieli duble non-based
În acest atac ETC, am descoperit un model interesant folosit pentru a executa cheltuielile duble. Discutăm mai jos un exemplu al strategiei de dublă cheltuială a atacatorului:

Exemplu de atacator care folosește o tranzacție de atac pentru a cheltui dublu mai multe tranzacții orfane
Exemplu de atacator care folosește o tranzacție de atac pentru a cheltui dublu mai multe tranzacții orfane

Model de atac:
Atacatorul trimite o cantitate mare de ETC prin intermediul mai multor tranzacții către victimă
Folosind serviciul pentru victime, atacatorul convertește ETC într-o altă monedă, apoi mută fondurile de pe platformă
Atacantul renunță la blockchain „ștergând” tranzacțiile de la pasul 1
Acum atacatorul are acces la ETC.-ul original. Mută ​​suma fondurilor lor la o altă adresă pe care o controlează folosind o tranzacție mare. Acest lucru este necesar pentru a invalida orice reluare a tranzacțiilor orfane
Stare finală: atacatorul controlează acum o parte dintr-un activ non-ETC pe care l-au exfiltrat de la victimă, menținând în același timp controlul asupra ETC.-ului original.
Interesant este faptul că, folosind această tehnică incrementală bazată pe nonce, fiecare tranzacție orfană a mutat mai puțin de 30.000 ETC (~ 200.000 USD). Credem că atacatorul a folosit aceste tranzacții orfane incrementale datorită limitării ratei bazate pe valoare a victimei. De exemplu, un schimb de victime poate avea o caracteristică care împiedică un utilizator să primească mai mult de x cantitate de ETC într-un singur depozit.
Următoarele sunt datele reale ETC pentru această cheltuială dublă: