Мошенники атакуют пользователей криптовалют новым трюком с «нулевой стоимостью TransferFrom»

Data from Etherscan shows that some crypto scammers are targeting users with a new trick that allows them to confirm a transaction from the victim’s wallet, but without having the victim’s private key. The attack can only be performed for transactions of 0 value. However, it may cause some users to accidentally send tokens to the attacker as a result of cutting and pasting from a hijacked transaction history.

Blockchain security firm SlowMist discovered the new technique in December and revealed it in a blog post. Since then, both SafePal and Etherscan have adopted mitigation techniques to limit its effect on users, but some users may still be unaware of its existence.

Quote.

Recently we have received reports from the community of a new type of scam: Zero Transfer Scam. Be careful if you see suspicious 0 transfer in your wallet record:

1/10

— Veronica (@V_SafePal) December 14, 2022

End of Quote.

According to the post from SlowMist, the scam works by sending a transaction of zero tokens from the victim’s wallet to an address that looks similar to one that the victim had previously sent tokens to.

For example, if the victim sent 100 coins to an exchange deposit address, the attacker may send zero coins from the victim’s wallet to an address that looks similar but that is, in fact, under the control of the attacker. The victim may see this transaction in their transaction history and conclude that the address shown is the correct deposit address. As a result, they may send their coins directly to the attacker.

Отправка транзакции без разрешения владельца 

При обычных обстоятельствах злоумышленнику нужен закрытый ключ жертвы, чтобы отправить транзакцию из ее кошелька. Однако функция Etherscan «вкладка контракта» показывает, что в некоторых контрактах на токены существует лазейка, которая может позволить злоумышленнику отправить транзакцию из любого кошелька.

Например, код USD Coin (USDC) на Etherscan показывает, что функция «TransferFrom» позволяет любому человеку переводить монеты из кошелька другого человека, если количество отправляемых им монет меньше или равно количеству, разрешенному владельцем адреса.

Это обычно означает, что злоумышленник не может совершить транзакцию с чужого адреса, пока владелец не одобрит для него допустимую сумму.

Однако в этом ограничении есть лазейка. Допустимая сумма определяется как число (так называемый «тип uint256»), что означает, что она интерпретируется как ноль, если только она специально не установлена на какое-то другое число. Это можно увидеть в функции «allowance».

В результате, пока стоимость транзакции злоумышленника меньше или равна нулю, он может отправить транзакцию с абсолютно любого кошелька, с которого захочет, не нуждаясь в приватном ключе или предварительном одобрении владельца.

USDC — не единственный токен, который позволяет это сделать. Подобный код можно найти в большинстве контрактов на токены. Его можно найти даже в примерах контрактов, ссылки на которые приведены на официальном сайте Ethereum Foundation.

.

Примеры мошенничества с передачей нулевой стоимости

Etherscan показывает, что некоторые адреса кошельков отправляют тысячи транзакций с нулевой стоимостью в день с кошельков различных жертв без их согласия.

Например, аккаунт под ником Fake_Phishing7974 использовал непроверенный смарт-контракт для выполнения более 80 пакетов транзакций 12 января. 12 января, причем каждый пакет содержал 50 транзакций с нулевой стоимостью, что в общей сложности составило 4000 несанкционированных транзакций за один день.

Вводящие в заблуждение адреса

При более внимательном рассмотрении каждой транзакции можно обнаружить мотив этого спама: Например, Etherscan показывает, что один из адресов пользователя, на который направлена атака, выглядит следующим образом:

0x20d7f90d9c40901488a935870e1e80127de11d74.

29 января этот счет разрешил отправить 5 000 Tether (USDT) на этот адрес получателя:

0xa541efe60f274f813a834afd31e896348810bb09.

Сразу после этого Fake_Phishing7974 отправил транзакцию с нулевой стоимостью из кошелька жертвы на этот адрес:

0xA545c8659B0CD5B426A027509E55220FDa10bB09.

Первые пять символов и последние шесть символов этих двух адресов получения абсолютно одинаковы, но символы в середине совершенно разные. Возможно, злоумышленник хотел, чтобы пользователь отправил USDT на этот второй (поддельный) адрес вместо настоящего, отдав свои монеты злоумышленнику.

В данном конкретном случае, похоже, что афера не сработала, поскольку Etherscan не показывает никаких транзакций с этого адреса на один из поддельных адресов, созданных мошенником. Но, учитывая объем транзакций с нулевой стоимостью, проведенных этим счетом, план мог сработать и в других случаях.

Кошельки и блокчейн-исследователи могут существенно различаться в том, как они показывают вводящие в заблуждение транзакции.

Кошельки

Некоторые кошельки могут вообще не показывать спам-транзакции. Например, MetaMask не показывает историю транзакций, если его переустановить, даже если сам счет имеет сотни транзакций в блокчейне. Это означает, что он хранит свою собственную историю транзакций, а не берет данные из блокчейна. Это должно предотвратить появление спам-транзакций в истории транзакций кошелька.

С другой стороны, если кошелек берет данные непосредственно из блокчейна, спам-транзакции могут отображаться на экране кошелька. В своем сообщении в Twitter 13 декабря генеральный директор SafePal Вероника Вонг предупредила пользователей SafePal о том, что ее кошелек может отображать транзакции. Чтобы снизить этот риск, она сказала, что SafePal изменяет способ отображения адресов в новых версиях своего кошелька, чтобы пользователям было легче проверять адреса.

(6/10) В связи с этим мы предприняли следующие действия:

1) В последнем обновлении V3.7.3 мы изменили длину адреса кошелька, отображаемого в истории транзакций. По умолчанию будут отображаться первые и последние 10 цифр адреса кошелька, для удобства проверки адреса.

— Вероника (@V_SafePal) 14 декабря 2022 г.

* «Соблюдайте осторожность и проверяйте адрес перед выполнением любых транзакций.»

*

* «Используйте функцию «белого списка» в вашем кошельке, чтобы предотвратить отправку средств на неправильные адреса.»

*

* * «Будьте бдительны и информированы. Если вы столкнулись с подозрительными переводами, уделите время спокойному расследованию, чтобы не стать жертвой мошенников.»

*

* «Поддерживайте здоровый уровень скептицизма, всегда оставайтесь осторожными и бдительными».

*

Судя по этому совету, самое главное, что должны помнить пользователи криптовалют, — это всегда проверять адрес, прежде чем отправлять на него криптовалюту. Даже если из записи транзакции следует, что вы уже отправляли криптовалюту на этот адрес, эта видимость может быть обманчивой.