Šta je Replay Attack?
Replay Attack se dešava kada neko presretne važeću kripto-radnju i ponovo je pošalje, pa je mreža tretira kao novu. Potpis je autentičan, a trenutak slanja lukavo odabran. Zamislite to kao da neko ponovo upotrebi vaš potpisani ček na drugom šalteru koji i dalje primenjuje ista pravila.
Replay Attack znači da vam je ukraden privatni ključ. Nije baš tako. Napadač može ponovo da upotrebi vašu već potpisanu poruku ako je dva mesta prihvataju na isti način, čak i ako ne zna vaš ključ.
Kako Replay Attack funkcioniše
Ukratko ćemo proći kroz postupak da biste ga zapamtili.
- Korak 1: Emitujete potpisanu transakciju.
- Korak 2: Napadač kopira te potpuno iste potpisane podatke.
- Korak 3: Ponovo ih šalje tamo gde i dalje prolaze proveru, na primer posle hard forka ili na lancu koji prihvata ista pravila za potpise.
- Korak 4: Mreža vidi važeći potpis i ponovo ga obrađuje, pa se vrednost prenosi dva puta.
- Korak 5: Sprečavaju ga samo zaštite od ponovnog emitovanja, kao što su ID-jevi lanca, nonce vrednosti ili dozvole u aplikaciji koje važe samo jednom.
To je cela fora. Naporno, ali vrlo lako sprečivo.
Zašto je Replay Attack važan
Zašto bi trebalo da vas zanima Replay Attack? Zato što može da duplira stvarnu radnju koju ste nameravali da obavite samo jednom, pa da se ona desi dvaput.
- Prednost: Poznavanje rizika štedi novac i živce jer vam pomaže da bezbednije planirate poteze.
- Kontekst: Korišćenje više lanaca danas je uobičajeno, pa se kopirane poruke češće nego što ljudi misle nađu na pogrešnom mestu.
- Važnost: Na ovaj termin ćete naići pri prebacivanju sredstava preko blockchain mreže, tokom podela lanca ili pri potpisivanju poruka van lanca za aplikacije.
Koristite novčanik koji jasno prikazuje aktivni lanac i ispravno postavlja ID-jeve lanca. Ako niste sigurni, prvo pošaljite malu probnu transakciju, pa tek onda ostatak.
Ključne karakteristike Replay Attack-a
Brzo prepoznajte obrazac po ovim znacima:
- Kopiranje: Ponovo se upotrebljava potpuno ista potpisana poruka, bajt po bajt.
- Važenje: Potpis je autentičan, pa ga čvorovi prihvataju ako ne postoje zaštite od ponovnog emitovanja.
- Tajming: Najčešće se javlja tokom podela lanca, kod bridge-ova ili kada aplikacije preskoče proveru nonce vrednosti.
Varijante
Isti postupak, različito okruženje:
- Fork: Ponovno emitovanje između dva lanca koja su se razdvojila, ali i dalje prihvataju iste potpise.
- Između lanaca: Ponovno emitovanje između lanaca koji dele parametre ili prihvataju iste formate poruka.
- Ugovor: Ponovno emitovanje potpisanih dozvola ili meta-transakcija u aplikacijama koje su izostavile nonce vrednost za jednokratnu upotrebu.
Nakon velikih nadogradnji ili podela, proverite istoriju transakcija na oba lanca. Ako se nešto pojavljuje dvaput, zastanite pre nego što pošaljete još sredstava.
Primer
Nakon DAO forka, neka povlačenja potpisana na Ethereum-u ponovo su prihvaćena na Ethereum Classic-u, sve dok nije uvedena snažnija zaštita od ponovnog emitovanja.
Zanimljivost
Ethereum je 2016. uveo ID-jeve lanca putem predloga EIP155 upravo da bi zaustavio trikove sa Replay Attack-om, a taj dizajn je uticao na to da moderni novčanici traže da unapred izaberete lanac.
Zaključak
Replay Attack u jednoj rečenici: autentičan potpis ponovo upotrebljen tamo ili onda kada ne bi trebalo. Posmatrajte ga kao dvostruku naplatu i brže ćete ga prepoznati.