Мошенники нацеливаются на пользователей криптографии с помощью нового трюка TransferFrom с нулевым значением

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

Блокчейн-безопасность SlowMist открытый новую технику в декабре и раскрыл ее в своем блоге. С тех пор и SafePal, и Etherscan приняли методы смягчения, чтобы ограничить его влияние на пользователей, но некоторые пользователи могут все еще не знать о его существовании.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, Etherscan показывает, что один из адресов пользователей, на которые нацелен злоумышленник, следующий:

0x20d7f90d9c40901488a935870e1e80127de11d74.

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

0xa541efe60f274f813a834afd31e896348810bb09.

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

0xA545c8659B0CD5B426A027509E55220FDa10bB09.

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

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

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

Кошельки

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

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

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

Cointelegraph обратился по электронной почте к разработчику Trezor SatoshiLabs за комментариями. В ответ представитель заявил, что кошелек извлекает историю транзакций непосредственно из блокчейна «каждый раз, когда пользователи подключают свой кошелек Trezor».

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

Блок исследователей

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

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

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

Как избежать трюка с нулевым значением TransferFrom

Коинтелеграф обратился к SlowMist за советом о том, как не стать жертвой уловки «Перевод с нулевого значения».

Представитель компании дал Cointelegraph список советов, как не стать жертвой атаки:

  1. «Проявляйте осторожность и проверяйте адрес перед выполнением любых транзакций».
  2. «Используйте функцию белого списка в своем кошельке, чтобы предотвратить отправку средств на неправильные адреса».
  3. «Будьте бдительны и информированы. Если вы столкнулись с какими-либо подозрительными переводами, найдите время, чтобы спокойно расследовать этот вопрос, чтобы не стать жертвой мошенников».
  4. «Поддерживайте здоровый уровень скептицизма, всегда оставайтесь осторожными и бдительными».

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