Исследователи: Дикла Барда Роман Зайкин и Одед Вануну
Основные выводы.
- Check Point Research (CPR) выявляет хакеров, создающих поддельные крипто-токены, чтобы заманить жертв в их покупку, а затем забрать все деньги из смарт-контрактов и исчезнуть.
- Злоумышленники используют неправильную конфигурацию функций смарт-контракта для кражи средств.
- Владельцам криптокошельков рекомендуется использовать только известные биржи, покупать только признанные публично токены и обращать внимание на URL-адреса торговых площадок.
Обзор проблематики.
В 2021 году количество связанных с криптовалютами преступлений достигло рекордного уровня: мошенники завладели криптовалютой на сумму около 14 миллиардов долларов. Рост числа афер связан с огромным ростом активности криптовалют по всему миру.
Недавние мировые события и заявления различных компаний показывают повышенный интерес к криптовалютам. Например, PayPal рассматривает возможность запуска своей собственной криптовалюты, Facebook провел ребрендинг и стал Meta, а MasterCard объявила, что партнеры ее сети могут позволить своим клиентам покупать, продавать и хранить криптовалюту с помощью цифрового кошелька.
Кроме того - Disney тоже хочет построить «метавселенную», также как и Microsoft, Nike купила NFT-компанию, клиенты Starbucks теперь могут использовать новое приложение Bakkt для оплаты напитков и товаров в кофейнях сети с помощью конвертируемых Bitcoin, Visa подтвердила проведение пилотного проекта с Crypto.com по приему криптовалюты для расчетов за транзакции в своей платежной сети, Adidas присоединился к «метавселенной» с NFT, а компания Grayscale объявила, что мета - это индустрия стоимостью в 1 триллион долларов. Средства перетекают в криптовалюты, и неудивительно, что хакеры активно нацелились на них.
Еще в ноябре команда Check Point Research (CPR) предупреждала пользователей криптокошельков о масштабной фишинговой кампании в поисковых системах, в результате которой за несколько дней было похищено не менее полумиллиона долларов. В текущем отчете CPR демонстрирует, как хакеры создают новые токены, заставляют людей их покупать, а затем «вытягивают ковер из под-ног» пользователей и крадут все средства из смарт-контракта. Кроме того, исследователи CPR обнаружили, что сами новые критовалюты обычно создаются не для того, чтобы обманывать людей, но неправильная конфигурация в функциях смарт-контракта позволяет хакерам красть деньги.
Совсем недавно новостное агентство BBC news сообщило, что афера с токеном под названием «SQUID» нанесла криптоинвесторам ущерб в $3,38 млн.. Криптотокен - это валюта, аналогичная Bitcoin или Ethereum. Некоторые проекты создаются для продвижения инноваций и создания новых технологий, в то время как другие существуют для мошеннических целей. В данном исследовании мы покажем, как хакеры создавали токены для мошенничества, и расскажем, как выявить такую аферу.
- Некоторые токены содержат 99% комиссию за покупку, с помощью чего ваши деньги украдут прямо на этапе покупки.
- Некоторые токены не позволяют покупателю их перепродавать (например, SQUID), и только владелец может их продать.
- Некоторые токены содержат 99% комиссию за продажу, с помощью чего ваши деньги украдут на этапе продажи.
- Некоторые - позволяют владельцу самому создавать валюту в своем кошельке и продавать ее.
- А некоторые не являются вредоносными, но имеют уязвимости в исходном коде контракта и ломаются хакерами, которые используют эти уязвимости.
В глубины современного блокчейна.
Чтобы определить легитимность токена, исследователи Check Point изучают его смарт-контракт в блокчейн- сети. Смарт-контракты - это программы, хранящиеся в блокчейне, которые запускаются при выполнении определенных условий. Язык программирования в смарт-контракте - Solidity. Solidity - объектно-ориентированный язык программирования для написания смарт-контрактов на различных платформах, в первую очередь, на Ethereum. Преимущество смарт-контракта перед обычными программами заключается в том, что исходный код полностью открыт и неизменяем, его можно увидеть и проанализировать.
Например, если кто-то хочет выполнить функцию в смарт-контракте, он может увидеть, что именно произойдет в коде, в отличие от выполнения функции на веб-сервере в Интернете, который полностью скрыт в бэкенде платформы. Код в экосистеме смарт-контрактов выполняется виртуальной машиной EVM (Ethereum Virtual Machine) и майнерами/нодами.
Легко предположить, что код смарт-контракта будет выполняться точно так же, как лямбда-функция, которая запускается на случайном сервере в облаке. Однако в смарт-контракте вы можете видеть код, который будет выполняться, и каждая выполненная транзакция имеет свою стоимость в криптовалюте. Плата за транзакцию будет выплачиваться пользователем, который ее выполняет, а не владельцем кода. Например, если вы выполняете функцию buy для покупки токена – вы и заплатите за выполнение этой функции на блокчейне.
Теперь давайте посмотрим несколько примеров того, как хакеры создают мошеннические валюты, чтобы обманом заставить вас их купить, а затем украсть все ваши деньги - например, M3 (0x8ed9c7e4d8dfe480584cc7ef45742ac302ba27d7).
Код контракта можно посмотреть здесь.
Мы видим, что у нас есть функция _transfer, которая является типовой функцией согласно стандарту смарт-контракта, но эта функция возьмет некоторую плату «fee» из вашего «totalSUPERHERE» - переменная, которая хранит объем валюты, который у вас есть:
Эта переменная «fee» устанавливается с помощью функции «_setTaxFee»
Здесь функция «approve», которая является скрытой функцией в контракте, пытается выдать себя за легитимную функцию «approve».
Если мы посмотрим на транзакцию контракта, созданную по адресу:
https://bscscan.com/txs?a=0x8ed9c7e4d8dfe480584cc7ef45742ac302ba27d7
Функция «aprove» была выполнена дважды
После загрузки контракта в блокчейн, с параметром «8» в качестве платы
После того как контракт был просканирован некоторыми инструментами мониторинга блокчейна, мошенники снова изменили плату на 99:
Этот распространенный прием - хакеры внедряют скрытую плату в контракт и манипулируют ей.
Легитимный токен не будет взимать плату или будет взимать жестко закодированные значения, которые не могут быть скорректированы разработчиком.
Например, контракт токена ValkToken.
В ValkToken реализована жестко закодированная плата за покупку и продажу, которую нельзя изменить:
Подделка платы за покупку и продажу - не единственный вид мошенничества. Существуют и другие виды, например, скрытые возможности майнинга, которые позволяют разработчикам создавать больше монет или даже контролировать, кому разрешено их продавать. Примером может служить контракт «MINI BASKETBALL», который имеет более 3 500 покупателей и более 14 000 транзакций.
Изучение исходного кода показало, что эта валюта не позволяет продавать токены. Это можно увидеть, изучив функцию «_transfer»:
Чтобы иметь право на продажу, адрес должен быть в списке «_balances1», а «balances1» должен быть установлен в «true», иначе будет показана ошибка «ERC20: transfer to zero address». Рассматривая функции, которые установлены для этих значений, мы видим:
- Renounce - устанавливает переменную balances1;
- Prize_fund - устанавливает значение адреса, который хочет продать, в «true»;
- Reflections - устанавливает значение адреса, который хочет продать, в «false»;
Взглянув на код, мы можем увидеть в транзакциях следующий вызов функции:
[+] Function Name: Renounce dict_values([
False
])
[+] Function Name: Prize_Fund dict_values(['0xf86c3bd6a8Ef0e16CbAC211dcCc6A22B893eb85e'])
[+] Function Name: Prize_Fund dict_values(['0x6b8C3B6bf42d0FFcbd92287aBcE878e4236CE98e'])
[+] Function Name: Renounce dict_values([
True
])
Что показывает, что в сначала вообще никто не сможет осуществлять транзакции по продаже, а затем это смогут только 2 зашитых в код адреса.
Levyathan - это легитимный смарт-контракт, который был взломан. Он использовал контракт MasterChef в качестве владельца и передал этому контракту право собственности, как видно из мониторинга транзакций:
Этот родительский контракт является единственным участником схемы, который может управлять дочерним и майнить дополнительные токены:
В этой ситуации один из разработчиков контракта по ошибке загрузил закрытый ключ контракта MasterChef в репозиторий проекта на GitHub. Хакер получил доступ к ключу и намайнил миллионы токенов.
Позже он вывел все средства из контракта Levyathan, но это была не единственная ошибка в контракте. CPR обнаружила, что в этом контракте была функция «Emergency Withdraw», которая использовалась несколько раз, чтобы выводить средства без дополнительной оплаты за транзакции:
Разработчики по ошибке установили параметр «rewardDebt» вместо «user.amount», содержащий все средства + дополнительный кредит:
Хакеры использовали эту функцию для кражи: просматривая статистику транзакций, можно обнаружить более 57 вызовов «emergencyWithdraw» для вывода средств из контракта.
В примере с сетью THE ZENON разработчиками была допущена ошибка, заключающаяся в том, что не была ограничена от несанкционированного доступа одна важная функция, что привело к катастрофе и позволило хакерам украсть $814 570.
Функции в Solidity имеют спецификаторы видимости, которые определяют, как разрешено вызывать функции. Видимость определяет, может ли функция вызываться внешними пользователями, другими производными контрактами, только внутренними или только внешними. Взлом Zenon Network стал возможен благодаря незащищенной функции «burn» в смарт-контракте.
Функция «burn» была установлена как внешняя функция, что означает, что она может быть вызвана из других контрактов и через транзакции.
Функция «burn» может уничтожить токены в пуле, что может привести к увеличению стоимости токенов. Доступ к функциям «burn» должен был быть ограничен, но разработчики Zenon Network непреднамеренно пометили ее как внешнюю, что сделало ее общедоступной для вызова.
Как видно из транзакции, злоумышленник добавил в пул ликвидности WBNB стоимостью $0,42, получив взамен 0,01354 монеты wrapped-znn.
Затем они использовали функцию burn, чтобы уничтожить 26 468 монет, отправив их по адресу burn 0x000000000000000000000000000000000000000000000000000000000000000000000000, в результате чего цена wZNN резко возросла. В результате, когда они захотели выкупить WBNB, пул посчитал, что им причитается огромное количество токенов WBNB, что позволило им слить пул, а взамен получить $814 570.
Злоумышленники использовали функцию burn для манипулирования ценой znn, зная, что контракт выполняет свои расчеты стоимости токена полностью внутри компании, и заставляя пул поверить, что он должен выдать злоумышленнику крупную сумму.
Check Point Research (CPR) предупреждает, что существуют различные способы, которыми преступники могут создавать мошеннические токены и взламывать контракты. Пользователям важно проявлять осторожность с токенами, которые они покупают.
Заключение и рекомендации для пользователей криптовалют.
Трудно игнорировать привлекательность криптовалют. Это блестящая новинка, которая обещает изменить мир, и если цены продолжат свой рост, у людей есть возможность заработать значительные суммы. Однако криптовалюты - нестабильный рынок. Мошенники всегда найдут новые способы украсть ваши деньги с помощью криптовалют. Постоянно появляются новые виды криптовалют. По данным Федеральной торговой комиссии США с октября по март 2020 года американские потребители потеряли более 80 миллионов долларов из-за криптовалютных мошенников. Если вы включили криптовалюту в свой инвестиционный портфель или заинтересованы в инвестировании в криптовалюту в будущем, вам следует убедиться, что вы используете только известные проверенные биржи и покупаете известные токены, за которыми стоит некоторая стабильная история транзакций.
Остерегайтесь мошеннических бирж!
Криптовалюты пока не регулируются законодательно во многих странах мира, в результате чего кошельки потребителей становятся привлекательной мишенью для киберпреступников. С особой осторожностью следует относиться ко всем попыткам фишинга, направленным на поделку биткоин-бирж и выдачу себя за их сайты, которые пытаются заставить пользователя ввести свои регистрационные данные с единственной целью кражи средств. Важно обращать внимание на используемые вами URL-адреса бирж, чтобы избежать любых манипуляций со стороны киберпреступников.
Источник: https://research.checkpoint.com