Address poisoning: dlaczego oszuści ciągle wysyłają mi $0,00
Po jednym przelewie boty zaczęły zaśmiecać historię mojego portfela mikropłatnościami z podobnych adresów. Jak działa address poisoning i jak się przed nim chronić.

31 lipca o 17:01 wykonałem jeden zwykły przelew USDC w sieci Ethereum. Pierwsza wpłata, o którą nie prosiłem — 0,000124 USDC — pojawiła się dokładnie minutę później. Kolejne mikrowpłaty przychodziły przez cały wieczór i noc. Następnego ranka te same dwie kwoty nadal pojawiały się naprzemiennie: 0,000124 USDC o 4:11, 0,000012 USDC o 4:24, a potem ponownie o 5:36, 6:26, 6:29 i 6:57 — każda warta po zaokrągleniu dokładnie $0,00.
Technicznie rzecz biorąc, darmowe pieniądze. A zarazem przygotowanie do jednego z bardziej pomysłowych oszustw działających dziś na publicznych blockchainach. Nazywa się address poisoning, czyli zatruwanie adresu, a najciekawszy nie jest sam pył — tylko adresy, z których przychodzi.
Przyjrzyjmy się nadawcom
Ponieważ był to przelew USDC w sieci Ethereum, każde konto jest wyświetlane jako 42-znakowy adres Ethereum w formacie 0x.... Mój prawdziwy przelew trafił na adres zaczynający się od 0x6e45 i kończący na 51d5. Niedługo później mikrowpłaty zaczęły przychodzić naprzemiennie z dwóch adresów:
0x6e45B0…458951d5
0x6e45EA…19B951D5
(Celowo ukryłem środkowe znaki — pełne adresy pozwoliłyby prześledzić ich mikropłatności on-chain i znaleźć portfele wszystkich ofiar, w tym mój. Jest w tym pewna ironia: ukrywam adres oszusta w imię prywatności, ale publiczne blockchainy działają w obie strony.)
Adresy różnią się od prawdziwego i od siebie nawzajem, ale zachowują te same widoczne punkty orientacyjne: 0x6e45 na początku i 51d5 na końcu. Nie jest to przypadek. Oszuści wygenerowali świeże adresy specjalnie dopasowane na obu końcach do adresu mojego prawdziwego przelewu.
Dlaczego na obu? Bo wiele interfejsów portfeli pokazuje właśnie te fragmenty. Nikt nie czyta całego ciągu szesnastkowego; portfele, eksploratory i giełdy często skracają adres Ethereum do postaci 0x6e45...51d5. W takim widoku adres oszusta i prawdziwy adres mogą wyglądać identycznie co do piksela. Różnią się 32 znaki szesnastkowe pośrodku — dokładnie ta część, którą interfejs ukrywa.
Pułapka, którą zastawiają
W tym oszustwie nie ma etapu, w którym sprawcy sami odbierają ci środki. Otrzymanie mikrowpłaty jest nieszkodliwe: nie daje im dostępu do portfela i nie wymaga żadnej reakcji. Atak jest wymierzony w przyszłą pomyłkę:
- Wykonujesz prawdziwy przelew na prawdziwy adres.
- Bot natychmiast wysyła mikrowpłatę, aby jego podobny adres pojawił się tuż obok prawdziwego w historii transakcji.
- Kilka tygodni później chcesz ponownie wysłać środki na ten adres. Robisz to, co niemal wszyscy: otwierasz historię, znajdujesz ostatnią transakcję i kopiujesz adres.
- Zamiast właściwego kopiujesz zatruty wpis. Wygląda poprawnie: ten sam początek, ten sam koniec, a oczy nie sprawdzają niczego więcej. Środki trafiają do oszusta, a na blockchainie nie ma przycisku cofania.
To cała sztuczka. Jest to phishing wymierzony w nawyk kopiowania i wklejania, zasiany z wyprzedzeniem i cierpliwie czekający. Naprzemienne kwoty w mojej historii pochodzą od dwóch konkurujących botów — każdy liczy, że kiedyś skopiuję właśnie jego wpis.
Dlaczego prawie nic ich to nie kosztuje
Adres z wybranym początkiem i końcem generuje się metodą brute force: utwórz parę kluczy, sprawdź adres i powtórz. Dopasowanie czterech początkowych i czterech końcowych znaków szesnastkowych oznacza osiem ustalonych znaków, czyli jedno trafienie na 16⁸ ≈ 4,3 miliarda prób. Brzmi jak dużo, ale zależnie od sprzętu karta graficzna z generatorem vanity address może przeszukać tę przestrzeń w sekundy lub minuty. Same mikrowpłaty kosztują ułamki centa opłaty transakcyjnej. Za mniej niż cenę kawy bot może zatruć historie tysięcy portfeli i czekać — a ponieważ cele ujawniają się same, wykonując przelewy, wybór ofiar jest automatyczny.
Proces wyszukiwania możesz zobaczyć na żywo w Vanity-ETH. Aby szybko uzyskać wynik, zacznij od 6e jako prefiksu i d5 jako sufiksu, a następnie wypróbuj pełny wzorzec z tego ataku — 6e45 i 51d5 — i zobacz, jak rośnie trudność. Narzędzie uruchamia tę samą podstawową pętlę bezpośrednio w przeglądarce: generuje losowe pary kluczy Ethereum, dopóki adres nie będzie pasował, a przy tym pokazuje bieżącą szybkość i prawdopodobieństwo. Traktuj je jako demonstrację, nie generator prawdziwego portfela: znaleziony klucz prywatny kontroluje adres, więc nigdy nie wysyłaj realnych środków na klucz utworzony przez stronę, jeśli nie sprawdziłeś kodu i nie uruchomiłeś go offline.
Istnieją też gorsze warianty. Sztuczka z przelewem zerowej wartości wykorzystuje fakt, że tokeny ERC-20 pozwalają wykonać transferFrom o wartości 0 z dowolnego adresu bez zgody właściciela. Oszust może więc sprawić, że historia pokaże przelew od ciebie na jego podobny adres, co wygląda jeszcze bardziej wiarygodnie niż przychodząca mikrowpłata. Inni wysyłają fałszywe tokeny o prawdziwie brzmiących nazwach, przez co historia przypomina autentyczny przelew USDT na fałszywy adres.
Schemat działa na tyle często, że stał się całym przemysłem. Najgłośniejszy przypadek wydarzył się w maju 2024 roku: ktoś wysłał 1155 opakowanych BTC — wówczas około 68 milionów dolarów — na zatruty adres skopiowany z własnej historii transakcji. Co niezwykłe, po nagłośnieniu sprawy atakujący zwrócił środki. Większość ofiar nie ma tyle szczęścia.
Jak nie stać się kolejną historią
Zabezpieczenia są nudne — i to dobra wiadomość:
- Nigdy nie kopiuj adresu z historii transakcji. To cała powierzchnia ataku. Skopiuj go ze źródła: strony wpłaty na giełdzie, wiadomości od odbiorcy albo własnych zapisów.
- Korzystaj z książki adresowej portfela. Zapisz raz zweryfikowany adres pod nazwą i wysyłaj środki do tego kontaktu. Zatruty wpis nie podszyje się pod zapisany adres.
- Sprawdzaj środek, nie tylko końce. Jeśli musisz porównać adres wzrokowo, sprawdź fragment ze środka — tę część trudno tanio podrobić. Dopasowanie obu końców oraz nawet krótkiego fragmentu pośrodku drastycznie zwiększa koszt brute force.
- Najpierw wyślij kwotę testową, jeśli przelew jest znaczący. Adres dla właściwej transakcji ponownie pobierz z pierwotnego źródła, a nie z historii przelewu testowego.
- Ignoruj mikrowpłaty. Nie odsyłaj ich i nie wchodź w interakcję z nieznanymi tokenami. Dopóki tylko leżą w portfelu, nie mogą ci zaszkodzić.
Niektóre portfele i eksploratory zaczęły oznaczać albo ukrywać podejrzane transakcje, co pomaga. Ten wzorzec wykracza jednak poza krypto: każdy system skracający identyfikatory w interfejsie tworzy lukę między tym, co użytkownik sprawdza, a tym, co zatwierdza. Prędzej czy później ktoś zbuduje bota, który zamieszka w tej luce.
Tymczasem moje dwa boty wciąż działają, raz za razem sumiennie wpłacając po $0,00. To chyba najbardziej cierpliwe oszustwo, jakie kiedykolwiek obserwowałem. Dopóki nie kopiuję adresów z historii, jedyne, co osiągają, to kupowanie mi cyfrowego pyłu.