Oszuści atakują użytkowników kryptowalut za pomocą nowej sztuczki „TransferFrom o zerowej wartości”.

Dane z Etherscan pokazują, że niektórzy oszuści kryptograficzni atakują użytkowników nową sztuczką, która pozwala im potwierdzić transakcję z portfela ofiary, ale bez klucza prywatnego ofiary. Atak można przeprowadzić tylko dla transakcji o wartości 0. Może to jednak spowodować, że niektórzy użytkownicy przypadkowo wyślą tokeny do atakującego w wyniku wycinania i wklejania przechwyconej historii transakcji.

Firma zajmująca się bezpieczeństwem Blockchain SlowMist odkryty nową technikę w grudniu i ujawniłem ją w poście na blogu. Od tego czasu zarówno SafePal, jak i Etherscan przyjęły techniki łagodzenia skutków, aby ograniczyć jego wpływ na użytkowników, ale niektórzy użytkownicy mogą nadal nie być świadomi jego istnienia.

Zgodnie z postem od SlowMist, oszustwo polega na wysłaniu transakcji zerowych tokenów z portfela ofiary na adres, który wygląda podobnie do tego, na który ofiara wcześniej wysłała tokeny.

Na przykład, jeśli ofiara wysłała 100 monet na adres wymiany, atakujący może wysłać zero monet z portfela ofiary na adres, który wygląda podobnie, ale w rzeczywistości jest pod kontrolą atakującego. Ofiara może zobaczyć tę transakcję w swojej historii transakcji i dojść do wniosku, że podany adres jest prawidłowym adresem wpłaty. W rezultacie mogą wysłać swoje monety bezpośrednio do atakującego.

Wysyłanie transakcji bez zgody właściciela 

W normalnych okolicznościach osoba atakująca potrzebuje klucza prywatnego ofiary, aby wysłać transakcję z portfela ofiary. Ale funkcja „zakładki umowy” Etherscan ujawnia, że ​​w niektórych umowach tokenów istnieje luka, która może pozwolić atakującemu na wysłanie transakcji z dowolnego portfela.

Na przykład kod USD Coin (USDC) na Etherscan przedstawia że funkcja „TransferFrom” umożliwia dowolnej osobie przenoszenie monet z portfela innej osoby, o ile wysyłana przez nią liczba monet jest mniejsza lub równa kwocie dozwolonej przez właściciela adresu.

Zwykle oznacza to, że osoba atakująca nie może dokonać transakcji z adresu innej osoby, chyba że właściciel zatwierdzi dla niej dodatek.

W tym ograniczeniu jest jednak luka. Dozwolona kwota jest zdefiniowana jako liczba (nazywana „typem uint256”), co oznacza, że ​​jest interpretowana jako zero, chyba że jest ustawiona na inną liczbę. Widać to w funkcji „dodatku”.

W rezultacie, dopóki wartość transakcji atakującego jest mniejsza lub równa zeru, może on wysłać transakcję z dowolnego portfela bez potrzeby posiadania klucza prywatnego lub uprzedniej zgody właściciela.

USDC nie jest jedynym tokenem, który na to pozwala. Podobny kod można znaleźć w większości kontraktów tokenowych. Może być nawet znaleziono w przykładowych kontraktach, do których linki znajdują się na oficjalnej stronie Fundacji Ethereum.

Przykłady oszustwa związanego z transferem wartości zerowej

Etherscan pokazuje, że niektóre adresy portfeli wysyłają dziennie tysiące transakcji o zerowej wartości z portfeli różnych ofiar bez ich zgody.

Na przykład konto oznaczone jako Fake_Phishing7974 korzystało z niezweryfikowanej inteligentnej umowy wykonać ponad 80 pakietów transakcji w dniu 12 stycznia, z każdym pakietem zawierające 50 transakcji o zerowej wartości, czyli łącznie 4,000 nieautoryzowanych transakcji jednego dnia.

Wprowadzające w błąd adresy

Bliższe przyjrzenie się każdej transakcji ujawnia motyw tego spamu: osoba atakująca wysyła transakcje o zerowej wartości na adresy, które wyglądają bardzo podobnie do adresów, na które ofiary wcześniej wysyłały środki.

Na przykład Etherscan pokazuje, że jeden z adresów użytkowników, na który atakuje atakujący, to:

0x20d7f90d9c40901488a935870e1e80127de11d74.

W dniu 29 stycznia to konto autoryzowało wysłanie 5,000 Tether (USDT) na ten adres odbiorczy:

0xa541efe60f274f813a834afd31e896348810bb09.

Zaraz potem Fake_Phishing7974 wysłał z portfela ofiary transakcję o zerowej wartości na następujący adres:

0xA545c8659B0CD5B426A027509E55220FDa10bB09.

Pierwsze pięć znaków i ostatnie sześć znaków tych dwóch adresów odbiorczych jest dokładnie takich samych, ale znaki w środku są zupełnie inne. Atakujący mógł chcieć, aby użytkownik wysłał USDT na ten drugi (fałszywy) adres zamiast prawdziwego, przekazując swoje monety atakującemu.

W tym konkretnym przypadku wygląda na to, że oszustwo nie zadziałało, ponieważ Etherscan nie pokazuje żadnych transakcji z tego adresu na jeden z fałszywych adresów stworzonych przez oszusta. Ale biorąc pod uwagę liczbę transakcji o zerowej wartości wykonanych przez to konto, plan mógł zadziałać w innych przypadkach.

Portfele i eksploratory bloków mogą się znacznie różnić pod względem sposobu i tego, czy pokazują wprowadzające w błąd transakcje.

Portfele

Niektóre portfele mogą w ogóle nie pokazywać transakcji spamowych. Na przykład MetaMask nie pokazuje historii transakcji, jeśli zostanie ponownie zainstalowana, nawet jeśli samo konto ma setki transakcji w łańcuchu bloków. Oznacza to, że przechowuje własną historię transakcji, zamiast pobierać dane z łańcucha bloków. Powinno to zapobiec wyświetlaniu transakcji spamowych w historii transakcji portfela.

Z drugiej strony, jeśli portfel pobiera dane bezpośrednio z łańcucha bloków, transakcje spamowe mogą pojawić się na wyświetlaczu portfela. W ogłoszeniu z 13 grudnia na Twitterze, dyrektor generalny SafePal, Veronica Wong ostrzeżony Użytkownikom SafePal, że jego portfel może wyświetlać transakcje. Aby złagodzić to ryzyko, powiedziała, że ​​SafePal zmienia sposób wyświetlania adresów w nowszych wersjach swojego portfela, aby ułatwić użytkownikom sprawdzanie adresów.

W grudniu jeden użytkownik zgłosił również, że jego portfel Trezor był wyświetlanie wprowadzające w błąd transakcje.

Cointelegraph skontaktował się e-mailem z programistą Trezor, SatoshiLabs, w celu uzyskania komentarza. W odpowiedzi przedstawiciel stwierdził, że portfel pobiera historię transakcji bezpośrednio z łańcucha blokowego „za każdym razem, gdy użytkownicy podłączają swój portfel Trezor”.

Jednak zespół podejmuje kroki w celu ochrony użytkowników przed oszustwem. W nadchodzącej aktualizacji Trezor Suite oprogramowanie „oznaczy podejrzane transakcje o zerowej wartości, aby użytkownicy byli ostrzegani, że takie transakcje są potencjalnie oszukańcze”. Firma stwierdziła również, że portfel zawsze wyświetla pełny adres każdej transakcji i że „zdecydowanie zaleca, aby użytkownicy zawsze sprawdzali pełny adres, a nie tylko pierwszy i ostatni znak”.

Blokuj odkrywców

Oprócz portfeli eksploratory bloków to kolejny rodzaj oprogramowania, którego można używać do przeglądania historii transakcji. Niektórzy eksploratorzy mogą wyświetlać te transakcje w taki sposób, aby nieumyślnie wprowadzać użytkowników w błąd, tak jak robią to niektóre portfele.

Aby złagodzić to zagrożenie, Etherscan zaczął wyszarzać transakcje tokenów o zerowej wartości, które nie są inicjowane przez użytkownika. Oznacza również te transakcje za pomocą alertu, który mówi: „To jest transfer tokena o zerowej wartości zainicjowany przez inny adres”, jak pokazano na poniższym obrazku.

Inni eksploratorzy bloków mogli podjąć te same kroki, co Etherscan, aby ostrzec użytkowników o tych transakcjach, ale niektórzy mogli jeszcze nie wdrożyć tych kroków.

Wskazówki, jak uniknąć sztuczki „Przelew z zerowej wartości”.

Cointelegraph zwrócił się do SlowMist o poradę, jak nie paść ofiarą sztuczki „TransferFrom o zerowej wartości”.

Przedstawiciel firmy przekazał Cointelegraph listę wskazówek, jak uniknąć stania się ofiarą ataku:

  1. „Zachowaj ostrożność i zweryfikuj adres przed wykonaniem jakichkolwiek transakcji”.
  2. „Wykorzystaj funkcję białej listy w swoim portfelu, aby zapobiec wysyłaniu środków na niewłaściwe adresy”.
  3. „Bądź czujny i poinformowany. Jeśli napotkasz podejrzane przelewy, poświęć trochę czasu na spokojne zbadanie sprawy, aby nie paść ofiarą oszustów”.
  4. „Zachowuj zdrowy poziom sceptycyzmu, zawsze zachowuj ostrożność i czujność”.

Sądząc po tej radzie, najważniejszą rzeczą, o której użytkownicy kryptowalut muszą pamiętać, jest zawsze sprawdzanie adresu przed wysłaniem do niego kryptowaluty. Nawet jeśli zapis transakcji wydaje się sugerować, że już wcześniej wysyłałeś kryptowaluty na ten adres, ten pozór może być mylący.