Mikä on Replay Attack?
Replay Attackissa joku sieppaa kelvollisen kryptotransaktion tai muun toiminnon ja lähettää sen uudelleen, jolloin verkko käsittelee sen uutena. Allekirjoitus on aito, mutta ajoitus viekas. Kuvittele, että joku käyttää uudelleen allekirjoittamaasi sekkiä toisella kassalla, jossa noudatetaan yhä samoja sääntöjä.
Replay Attack tarkoittaa, että yksityinen avaimesi on varastettu. Ei aivan. Hyökkääjä voi käyttää uudelleen jo allekirjoittamaasi viestiä, jos kaksi paikkaa hyväksyy sen samalla tavalla, vaikka hän ei tietäisi avaintasi.
Miten Replay Attack toimii
Käydään asia nopeasti läpi, jotta se jää mieleen.
- Vaihe 1: Lähetät verkkoon allekirjoitetun transaktion.
- Vaihe 2: Hyökkääjä kopioi täsmälleen samat allekirjoitetut tiedot.
- Vaihe 3: Hän lähettää ne uudelleen paikkaan, jossa allekirjoitus kelpaa yhä, esimerkiksi hard forkin jälkeen tai ketjussa, joka hyväksyy samat allekirjoitussäännöt.
- Vaihe 4: Verkko näkee kelvollisen allekirjoituksen ja käsittelee sen uudelleen, jolloin varat siirtyvät kahdesti.
- Vaihe 5: Vain replay-hyökkäyksiä estävät tarkistukset pysäyttävät tämän. Niitä ovat esimerkiksi ketjutunnisteet, nonce-arvot ja sovellustason kertakäyttöluvat.
Siinä koko juju. Ärsyttävä ja hyvin estettävissä.
Miksi Replay Attackilla on väliä
Miksi Replay Attackista pitäisi välittää? Koska se voi monistaa aidon toiminnon, jonka aioit tehdä vain kerran, ja saada sen tapahtumaan kahdesti.
- Hyöty: Riskin tunteminen säästää rahaa ja vähentää stressiä, sillä sen avulla voit suunnitella turvallisempia toimia.
- Näkökulma: Useiden ketjujen käyttö on nykyään tavallista, joten viestien päätyminen kopioituina väärään paikkaan tapahtuu useammin kuin luullaan.
- Merkitys: Tähän termiin törmäät siirtäessäsi varoja lohkoketjuverkossa, ketjujen haarautuessa tai allekirjoittaessasi sovellusten off-chain-viestejä.
Käytä lompakkoa, joka näyttää aktiivisen ketjun selkeästi ja asettaa ketjutunnisteet oikein. Jos olet epävarma, lähetä ensin pieni testisummaa ja vasta sitten loput.
Replay Attackin keskeiset piirteet
Tunnista kaava nopeasti näistä merkeistä:
- Kopio: Hyökkäyksessä käytetään uudelleen täsmälleen samaa allekirjoitettua viestiä tavu tavulta.
- Kelvollisuus: Allekirjoitus on aito, joten solmut hyväksyvät sen, ellei käytössä ole replay-hyökkäyksiä estäviä suojauksia.
- Ajoitus: Yleisin ketjujen haarautuessa, siltojen yhteydessä tai kun sovellukset jättävät nonce-tarkistukset tekemättä.
Muunnelmat
Sama taktiikka, eri ympäristöt:
- Fork: Viesti toistetaan kahdessa haarautuneessa ketjussa, jotka hyväksyvät yhä samat allekirjoitukset.
- Ketjujen välinen: Viesti toistetaan ketjujen välillä, kun niillä on yhteiset parametrit tai ne hyväksyvät samanmuotoiset viestit.
- Sopimus: Allekirjoitetut luvat tai meta-transaktiot toistetaan sovelluksissa, joissa on unohdettu kertakäyttöinen nonce.
Tarkista suurten päivitysten tai haarautumisten jälkeen transaktiohistoriasi molemmissa ketjuissa. Jos jokin näyttää tapahtuneen kahdesti, älä lähetä lisää ennen kuin olet selvittänyt asian.
Esimerkki
DAO-haarautumisen jälkeen joitakin Ethereumissa allekirjoitettuja nostoja hyväksyttiin uudelleen Ethereum Classicissa, kunnes käyttöön otettiin vahvempi suojaus replay-hyökkäyksiä vastaan.
Hauska fakta
Ethereum otti ketjutunnisteet käyttöön vuonna 2016 EIP155:n kautta nimenomaan Replay Attack -kikkojen estämiseksi. Tämä suunnitteluratkaisu vaikutti siihen, että nykyiset lompakot pyytävät valitsemaan ketjun etukäteen.
Yhteenveto
Replay Attack yhdellä lauseella: aito allekirjoitus käytetään uudelleen paikassa tai ajankohtana, jossa sitä ei pitäisi käyttää. Ajattele sitä kaksoisveloituksena, niin tunnistat sen nopeammin.