Zašto vaš novčanik prikazuje prijenos koji nikada niste poslali: transakcije nulte vrijednosti i trovanje adresa
Nepoznata odlazna transakcija ne znači automatski da je vaš novčanik hakiran. Saznajte što zapisi nulte vrijednosti, slične adrese i stvarna kretanja imovine doista dokazuju.
Što ovaj zapis dokazuje o mojem novčaniku?
Ako se u vašoj povijesti iznenada pojavi da ste poslali 0 USDT na nepoznatu adresu, sam taj zapis ne dokazuje da je netko pristupio vašem privatnom ključu. Treća osoba može stvoriti određene zapise o prijenosu nulte količine tokena koji navode vašu adresu, bez vašeg potpisa ili dopuštenja za trošenje iznosa većeg od nule. Zapis može postojati na blockchainu iako ga nikada niste pokrenuli.
Korisnija su preciznija pitanja: O kojoj je imovini riječ? Koliko je stvarno preneseno? Tko je podnio transakciju? Što je odobrilo bilo kakvo stvarno trošenje?
- Događaj tokena s nultim iznosom ne dokazuje da ste išta potpisali ili potrošili. Kod stvarnog tokena točno nulti iznos znači da tim prijenosom nije prenesen nijedan token.
- Prijenos pod poznatim nazivom tokena ne utvrđuje identitet imovine. Nepovezani ugovor može upotrebljavati isto ime i simbol.
- Sitna dolazna uplata može biti stvarna, a pritom u povijest podmetnuti zavaravajuću adresu pošiljatelja.
- Potvrđeni, neobjašnjeni odlazak stvarne imovine zahtijeva istragu. Nemojte ga zanemariti zato što neko drugo polje prikazuje nulu.
Ovaj vodič obuhvaća Ethereum, BNB Smart Chain (BSC) i slične mreže koje koriste ugovore za tokene po uzoru na Ethereum. Primjeri su namjerno pojednostavljeni, izmišljeni zapisi, a ne snimke zaslona ili nalazi o određenom novčaniku.
Najprije utvrdite koje polje prikazuje nulu
Izraz transakcija nulte vrijednosti koristi se za nekoliko različitih stvari. Samo jedan od ovih prikaza govori da je količina tokena nula:
- Količina tokena: 0 USDC. Za pravi ugovor USDC-a točno nulti iznos znači da taj prijenos nije premjestio nijedan USDC.
- Vrijednost transakcije: 0 ETH. Glavnoj transakciji nije pridružen ETH. Tokeni se ipak mogu prenositi, a radnje ugovora izvršavati.
- Procijenjena vrijednost: $0.00. Sučelje prikazuje vrijednost u fiat valuti. Time se ne utvrđuje količina tokena.
Na BSC-u se u polju izvorne kriptovalute obično koristi BNB umjesto ETH-a. Interakcija s ugovorom čija je izvorna vrijednost nula može prenijeti tokene, promijeniti dopuštenja za trošenje ili pokrenuti druge radnje. Izvorna vrijednost odvojena je od ulaznih podataka transakcije.
Mali pozitivan iznos može se zaokružiti na $0.00. Imovina bez pouzdane cijene također može imati beskoristan prikaz fiat vrijednosti. Proširite količinu tokena na punu preciznost; čak i prikazana količina od 0.00 može skrivati manji pozitivan iznos. Promjena vrijednosti portfelja nije pouzdan zapis o jedinicama koje ulaze na račun ili ga napuštaju.
Nula je dopuštena količina tokena pa sama po sebi ne dokazuje napad. Slične adrese i kopirani podaci za plaćanje tragovi su koje treba istražiti.
Zašto se dva polja From mogu razlikovati
Povijest novčanika može objedinjavati podatke iz različitih slojeva:
- Transakcija: potpisana uputa poslana mreži. Kod uobičajene Ethereum transakcije glavno polje From označava račun koji ju je potpisao.
- Događaj tokena: zapis koji ugovor emitira tijekom izvršavanja. Događaj Transfer ima vlastita polja From, To i iznos.
- Redak povijesti: način na koji novčanik ili preglednik blockchaina prikazuje te podatke. Događaj može označiti kao OUT jer se u njemu vaša adresa navodi kao pošiljatelj.
Ta dva polja From nisu zamjenjiva. Pojavljivanje vaše adrese unutar događaja nije potpis vašeg novčanika. Zlonamjerni ugovor može upisati vašu adresu u podatke događaja, ali to ne znači da njegov zapis potječe od pravog ugovora tokena. Ugovor koji emitira događaj stoga je ključan dio dokaza.
Jednako tako, hash transakcije identificira transakciju, ali ne dokazuje vaš pristanak. Transakcija uključena u lanac s oznakom Success pokazuje da njezino vanjsko izvršavanje nije poništeno. To nije potvrda ispravnosti tokena, primatelja ili svrhe.
Pet primjera povijesti transakcija s objašnjenjima
Primjer 1: Odlazni prijenos nula tokena koji nikada niste potpisali
Zapis u povijesti: OUT · 0 USDC · S vaše adrese na nepoznatu adresu sličnog izgleda.
- From transakcije: transakciju je poslao nepovezani račun.
- From događaja tokena: u događaju je navedena vaša adresa.
- Ugovor tokena koji je emitirao događaj: pravi ugovor USDC-a na toj mreži.
- Točna količina tokena: nula.
Što ovo dokazuje: pravi ugovor tokena zabilježio je prijenos nula tokena u kojem je navedena vaša adresa. Tim prijenosom nije prenesen USDC. To ne dokazuje da je vaš novčanik potpisao transakciju, da pozivatelj ima dopuštenje za trošenje pozitivnog iznosa ili da je vaš ključ ukraden.
Kako do toga dolazi: ERC-20, uobičajeni standard tokena, zahtijeva da prijenosi nultog iznosa emitiraju događaje Transfer. U čestim implementacijama funkcija delegiranog prijenosa transferFrom provjerava prelazi li zatraženi iznos dopuštenje pozivatelja. Nula ne prelazi dopuštenje od nule. Uz ostala pravila ugovora, poziv može uspjeti i bez prethodnog odobrenja.
To nije univerzalno jamstvo za svaki token. Pojedini ugovori mogu postaviti dodatna ograničenja.
Što sljedeće provjeriti: pregledajte ostatak transakcije. Redak s nulom opisuje samo taj redak; druga radnja mogla je imati drukčiji učinak. Ako je riječ o izoliranom zapisu trovanja bez sumnjivog trošenja ili promjene dopuštenja, primjereno je izbjegavati podmetnutu adresu, a ne pretpostaviti da morate zamijeniti novčanik.
Primjer 2: Lažna transakcija koja prikazuje veliku količinu tokena
Zapis u povijesti: OUT · 2,500 USDC · S vaše adrese na nepoznatu adresu.
- Prikazani simbol tokena: USDC.
- Ugovor koji emitira događaj: nepovezani ugovor, a ne pravi USDC.
- Prijavljeni iznos događaja: 2,500.
- Kretanje pravog USDC-a u ovoj transakciji: nema ga.
Što ovo dokazuje: drugi ugovor emitirao je zapis prikazan pod oznakom USDC. To ne dokazuje da je s vašeg računa otišlo 2,500 pravih USDC-a.
Lažna transakcija u novčaniku može biti stvaran podatak na blockchainu koji se zavaravajuće tumači. Napadači mogu kopirati naziv i simbol tokena te emitirati događaje slične vašim ranijim uplatama, uključujući iznose. Nestandardni ugovori mogu emitirati i zapise o prijenosu koji ne odgovaraju promjenama njihovih vlastitih salda.
Što sljedeće provjeriti: utvrdite mrežu i točnu adresu ugovora koji je emitirao događaj. Usporedite adresu s informacijama o ugovoru za tu mrežu, neovisno pribavljenima od izdavatelja. Poznati simbol, logotip ili oznaka potvrđenog izvornog koda nisu dovoljni za utvrđivanje identiteta izdavatelja.
Primjer 3: Sitna stvarna uplata sa slične adrese
Zapis u povijesti: IN · 0.000001 USDC · S nepoznate adrese na vašu adresu.
Pretpostavimo da pravi ugovor tokena potvrdi prijenos i da se vaš saldo tokena poveća za taj maleni iznos. U tom su slučaju stigli pravi tokeni. Za njihov primitak niste morali odobriti pošiljatelja i time mu ne dajete ovlast za trošenje.
Zamka je adresa. Razmotrite ove izmišljene primjere, podijeljene razmacima kako bi svaki znak bio vidljiv. Stvarne adrese nemaju razmake; podebljane srednje skupine razlikuju se:
Provjereni primatelj: 0x7a2f 1111 2222 3333 4444 5555 6666 7777 8888 9c4d
Podmetnuta adresa: 0x7a2f aaaa bbbb cccc dddd eeee ffff 0000 1111 9c4d
Sučelje koje prikazuje samo početak i kraj moglo bi obje adrese prikazati kao 0x7a2f...9c4d.
Što ovo dokazuje: netko vam je poslao mali iznos s te adrese. Ne dokazuje da je pošiljatelj vaš uobičajeni primatelj ili račun koji nadzirete. Podudaranje vidljivih znakova ne dokazuje vlasništvo.
Što sljedeće provjeriti: pribavite namjeravanu odredišnu adresu od zasebno provjerenog kontakta ili s pouzdane stranice računa primatelja. Usporedite cijelu adresu. Trovanje adresa nastoji pretvoriti podmetnuti zapis iz povijesti u adresu koju odaberete za kasniju uplatu. Gubitak može nastati kasnije, kada odobrite potpuno valjan prijenos na pogrešno odredište.
Primjer 4: Nula ETH-a, ali odlazi 2,500 pravih tokena
Zaglavlje transakcije: Value · 0 ETH.
- Izvorna vrijednost pridružena pozivu: 0 ETH.
- Prijenos pravih tokena: 2,500 USDC s vaše adrese.
- Promjena salda USDC-a uzrokovana transakcijom: smanjenje za 2,500 USDC.
- Status izvršavanja: Success.
Što ovo dokazuje: u ovom su primjeru pravi USDC-i otišli. Nula se odnosi na ETH pridružen pozivu. Ne opisuje prijenos USDC-a niti isključuje troškove gasa.
Što ostaje nepoznato: zašto je uplata nastala i jeste li je namjeravali. Mogla je odgovarati zamjeni, uplati depozita, zakazanoj radnji, uplati na pogrešnu adresu ili neovlaštenom trošenju. Prije klasifikacije usporedite je s radnjom koju ste poduzeli i namjeravanim odredištem.
Primjer 5: Pravi tokeni odlaze, ali transakciju šalje drugi račun
Zapis u povijesti: OUT · 500 pravih USDC · Nepoznato odredište.
Pretpostavimo da je uspješna transakcija smanjila vaš stvarni saldo USDC-a za 500, ali da je u glavnom polju From naveden netko drugi.
Što ovo dokazuje: tokeni su preneseni. Činjenica da je pošiljatelj transakcije drugi račun ne čini prijenos lažnim.
Prethodno odobreni potrošač može iskoristiti dopuštenje za tokene bez traženja da za svako povlačenje potpisujete novu transakciju. Neki tokeni podržavaju i potpise permit, kojima se dopuštenje odobrava putem potpisane poruke koju može poslati druga strana. Pametni računi i delegirani novčanici nude dodatne načine da netko drugi podnese ovlaštenu radnju.
Što sljedeće provjeriti: provjerite potrošača, relevantno dopuštenje ili potpisanu ovlast i radnju novčanika. Ako terećenje ostane neobjašnjeno, tretirajte ga kao sigurnosni incident. Dokazi mogu upućivati na štetno odobrenje, obmanjujući potpis ili kompromitiranu kontrolu računa; sam redak ne razlikuje te mogućnosti.
Za običnu izravno potpisanu transakciju vaša adresa u glavnom polju From dokaz je valjanog potpisa za taj račun. Ipak ne dokazuje da ste razumjeli radnju, namjeravali platiti tom primatelju ili je osobno pokrenuli. Polje From u događaju tokena pruža mnogo slabiji dokaz.
Što je istraživanje 270 milijuna pokušaja trovanja zapravo mjerilo
Dvogodišnja analiza aktivnosti na Ethereumu i BSC-u, od 1. srpnja 2022. do 30. lipnja 2024., utvrdila je približno 270 milijuna zapisa o prijenosu za trovanje, usmjerenih na 17 milijuna adresa.
Zapisi su podijeljeni u tri kategorije:
- 147.7 milijuna prijenosa nulte vrijednosti.
- 118.4 milijuna prijenosa krivotvorenih tokena.
- 4.0 milijuna sitnih prijenosa.
To su bili zapisi o prijenosima unutar približno 18.2 milijuna transakcija jer napadači mogu grupirati više zapisa zajedno. Broj ciljanih adresa nije isto što i broj osoba, kompromitiranih novčanika ili žrtava koje su izgubile novac.
Analiza je utvrdila 6,633 uspješna prijenosa plijena u ukupnoj vrijednosti od najmanje $83.8 milijuna. Neke su žrtve platile više puta. Otkrivanje se usredotočilo na odabrane stabilne kriptovalute pa je procjena gubitaka donja granica unutar tog opsega, a ne ukupan iznos za sve tokene ili lance.
Praktična je posljedica da provjeravanje samo nultih iznosa propušta znatan dio napada. Krivotvoreni zapisi mogu oponašati značajnu uplatu, a sitni dolazni prijenos može prenijeti stvarne tokene i istodobno uvesti opasnu adresu.
Kako provjeriti konkretan nepoznati zapis
- Otvorite transakciju na pravoj mreži. Upotrijebite opciju preglednika u novčaniku ili poznati preglednik poput Etherscana ili BscScana. Provjerite status transakcije. Čitanje javnih detalja ne zahtijeva povezivanje novčanika, odobravanje tokena, potpisivanje poruke ni upisivanje fraze za oporavak.
- Utvrdite stvarnu imovinu. Razlikujte izvorni ETH ili BNB od tokena koji koristi isto ime. Za tokene provjerite točnu mrežu i ugovor koji je emitirao događaj prema pouzdanim referencijama izdavatelja.
- Pročitajte iznos s punom preciznošću. Razdvojite količinu tokena od izvorne vrijednosti transakcije i procjene u fiat valuti.
- Razlikujte pošiljatelja transakcije od pošiljatelja događaja. Za pametni račun provjerite i radnju novčanika te dopuštenja. To što netko drugi plaća gas nije dokaz da se vaša imovina nije mogla pomaknuti.
- Pregledajte cijelu transakciju. Pogledajte sva kretanja tokena, prijenose izvorne kriptovalute i relevantne promjene dopuštenja. Ako preglednik prikazuje promjene stanja na razini transakcije, upotrijebite ih za usklađivanje rezultata. Današnji nepromijenjeni saldo slabiji je dokaz: kasniji depoziti ili prijenosi koji se međusobno poništavaju mogu prikriti ranije kretanje.
- Neovisno provjerite odredište. Upotrijebite pouzdane podatke primatelja za plaćanje ili ranije provjeren unos u adresaru. Nedavni redak povijesti dokaz je koji treba pregledati, a ne potvrda ispravnog odredišta.
Ako preglednik ne daje jasan rezultat, službenoj podršci pružatelja novčanika dajte mrežu i javni hash transakcije. Opišite radnju koju ste očekivali, ako je postojala. Ti podaci pomažu razlikovati nepoznatu, ali namjeravanu radnju od neobjašnjenog trošenja, bez otkrivanja tajni koje omogućuju kontrolu novčanika.
Što poduzeti nakon provjere
Ako ste pronašli samo izolirani zapis trovanja
Sakrijte ili prijavite neželjeni zapis ako novčanik to podržava i izbjegavajte njegove adrese. Skrivanje retka mijenja sučelje; ne briše povijest blockchaina niti opoziva dopuštenja.
Prijenos nulte količine moguć je uz nulto dopuštenje pa sam zapis nije razlog za opoziv svih odobrenja ili premještanje svih sredstava. Možda uz taj zapis nema dopuštenja za trošenje koje treba ukloniti. Nikada ne koristite reklamiranu web-stranicu tokena ili nepoznatu poveznicu za oporavak kako biste „očistili” novčanik.
Ako ste pronašli sumnjivo dopuštenje za trošenje
Upotrijebite pouzdanu funkciju upravljanja odobrenjima svojeg novčanika kako biste pregledali i opozvali relevantno dopuštenje. Prekid veze s web-stranicom ne opoziva postojeća odobrenja tokena na blockchainu. Opoziv uklanja to dopuštenje; ne može riješiti krađu privatnog ključa.
Ako se stvarna imovina pomaknula bez vaše namjere
Sačuvajte hash transakcije, mrežu, zahvaćenu imovinu i relevantne adrese. Provjerite nedavne potpise, odobrenja i radnje novčanika službenim kanalima podrške.
Ako postoje dokazi da je vaša fraza za oporavak ili privatni ključ otkriven, na pouzdanom uređaju napravite novi novčanik s novom frazom i pažljivo isplanirajte prijenos preostale imovine. Drugi račun izveden iz kompromitirane fraze ne rješava problem. Ako sredstva automatski nestaju, nemojte nastaviti dodavati novac za gas: automatizirani kradljivac može ga uzeti.
Ako ste svjesno potpisali uplatu, ali kopirali zatrovano odredište, zabilježite tu razliku. Uplata je mogla biti pravilno potpisana i izvršena, ali poslana pogrešnom primatelju. Takav ishod sam po sebi ne dokazuje krađu privatnog ključa.
Česta pitanja o nepoznatim transakcijama
Je li me napadač natjerao da platim gas?
U uobičajenom scenariju trovanja napadač šalje transakciju i plaća mrežnu naknadu. Samo navođenje vaše adrese u događaju tokena ne naplaćuje ništa vašem računu. Međutim, sponzorirane transakcije i pametni računi znače da sam platitelj naknade ne može dokazati je li radnja bezopasna. Provjerite stvarne učinke.
Što ako transakcija nije uspjela?
Poništeni prijenos tokena nije dovršio taj prijenos, iako gas i dalje može biti naplaćen. Ako novčanik koristi delegiranje računa, provjerite ga zasebno: Ethereum može zadržati delegiranje čak i kada kasnije izvršavanje ne uspije. Nepoznato delegiranje zahtijeva pregled.
Bi li hardverski novčanik spriječio trovanje adresa?
Pruža dodatno mjesto za provjeru odredišta prije potpisivanja. Ne može ispraviti odredište pod kontrolom napadača ako ga vi odobrite. Usporedite cijelu adresu na pouzdanom zaslonu za potpisivanje s neovisno provjerenim podacima primatelja.
Mogu li spriječiti nepoznate osobe da dodaju takve zapise?
U pravilu ne možete spriječiti treće osobe da šalju imovinu ili stvaraju odgovarajuće zapise povezane s javnom adresom. Filtri novčanika i preglednika mogu smanjiti broj zapisa koje vidite. Spremite provjerene primatelje i provjerite cijelu odredišnu adresu prije uplate; skrivanje samo zapisa nulte vrijednosti ne otkriva sve varijante krivotvorenih tokena ili sitnih prijenosa.
