19 апреля хакер вывел $25 млн, заблокированных в популярном китайском DeFi-протоколе dForce. Однако злоумышленник не смог перевести средства на собственные счета и, вероятно, в попытке сделать это раскрыл себя. Какими уязвимостями воспользовался неизвестный хакер, почему позже он решил вернуть украденное и как взлом отразится на DeFi-секторе — разобрался DeCenter.

Атаки на Uniswap и Lendf.Me

18 и 19 апреля было проведено две атаки: на децентрализованную биржу Uniswap и Lendf.Me — один из DeFi-протоколов dForce. Неизвестно, были атаки проведены одним и тем же хакером или нет, но в обоих случаях использовались одинаковые уязвимости. Скорее всего, оба нападения — дело рук того же хакера. Также эксперты, разбиравшие происшествия, приписывают атаки одному злоумышленнику, а не группе людей.

Сначала 18 апреля хакер вывел $300 000 с пула ликвидности для токена imBTC на децентрализованной бирже Uniswap. Средства в ВТС при этом остались нетронутыми. imBTC — это токен на базе Ethereum, который оценивается в соотношении 1:1 с биткоином. Токен работает на стандарте ERC777, предназначенном для поддержки смарт-контрактов и помогающий отражать стоимость биткоина в блокчейне Ethereum. Для этого он позволяет многократно обращаться к смарт-контракту, выводя находящиеся в нем средства до обновления внешнего баланса. Именно это свойство стандарта и использовал хакер.

После атаки на Uniswap разработчики токена imBTC из проекта Tokenlon, заметив аномалии, поняли, что нарушена безопасность токена. Они приостановили его транзакции и уведомили о проблеме партнеров imBTC, в том числе dForce, чтобы те оценили, готовы ли они к потенциальным угрозам. После подтверждения от dForce и других партнеров о том, что все нормально и системы защищены, Tokenlon возобновил транзакции imBTC.

Однако спустя 24 часа 19 апреля хакер атаковал открытый протокол краткосрочного кредитования Lendf.Me — один из двух протоколов, разработанных dForce для поддержки кредитных операций на платформе Ethereum. Он смог вывести почти все заблокированные в протоколе средства — $24.7 млн в ЕТН, ВТС и нескольких стейблкоинах, в том числе, в HuobiBTC и Huobi.

SlowMist, компания по кибербезопасности, сообщает, что похищенные средства сразу же были переведены на другие счета и преобразованы в ETH и другие токены на децентрализованных платформах 1inch.exchange, ParaSwap и Tokenlon.

Объем заблокированных в dForce активов, по данным DeFi Pulse. Источник.

В результате работа протокола Lendf.Me и USDx (собственного стейблкоина dForce) была приостановлена. В то же время проект Tokenlon приостановил работу токена imBTC и транзакций с ним. Обеспечение токена в ВТС при этом не было затронуто.

Баннер о блокировке работы Lendf.Me на китайском и английском языках. Источник.

dForce является одной из крупнейших в Китае DeFi-платформ для кредитования. Атака нанесла серьезный удар компании. Всего за несколько дней до этого она получила $1.5 млн стратегического финансирования от Multicoin Capital, Huobi Capital и China Merchants Bank International (CMBI). На эти деньги организация должна была расширить штат и запустить новые продукты.

В то же время поддержку токена imBTC добавили в протокол Lendf.Me только в январе этого года. Важно заметить, что о возможных проблемах безопасности протоколов dForce предупреждал еще в начале этого года Роберт Лешнер — генеральный директор конкурирующего протокола Compound. Он утверждал, что Lendf.Me — плагиат кода его компании. Лешнер заметил, что если проект не может разработать собственный смарт-контракт, значит он не заботится о безопасности.

Как были проведены атаки на Uniswap и Lendf.Me

Обе атаки были совершены с использованием одной и той же известной уязвимости токена imBTC.

Разработавшая токен компания Tokenlon выпустила собственный отчет о случившемся. В нем сказано, что «у токена нет уязвимостей в системе безопасности». Однако комбинация использования токенов ERC777 и смарт-контрактов на Uniswap и Lendf.Me позволяет проводить атаки «повторного воспроизведения» (Reentrancy Attack). Именно этой уязвимостью и воспользовался хакер.

Этот эксплойт давно известен специалистам по кибербезопасности. Он был выявлен еще в 2018 году экспертами ConsenSys при аудите безопасности системы смарт-контрактов Uniswap. Биржа собиралась исправить эту уязвимость в апрельском обновлении, но, видимо, не успела. Эксперты Tokenlon отмечают, что при выводе средств с протокола Lendf.Me хакер воспользовался схемой использования эксплойта, которая была выявлена еще в июле 2019 года компанией OpenZeppelin, выполняющей аудит безопасности для криптовалютных платформ. Аналогичная ситуация произошла в 2016 году с токенами DAO — тогда злоумышленники украли около $60 млн в ЕТН.

Таким образом, одна и та же уязвимость была использована чуть по-разному. В случае с Uniswap эксплойт позволил хакеру непрерывно вызывать смарт-контракт платформы для вывода средств по выгодному для себя курсу конвертации imBTC в ETH до обновления внешнего баланса. С теоретическим описанием этой атаки можно ознакомиться в аудите Uniswap программиста ConsenSys Сергея Кравченко.

В случае с Lendf.Me злоумышленник использовал не только уязвимость imBTC, но и эксплойт в смарт-контрактах протокола, которые отвечают за обновление балансов пользователей. Мошенник использовал уязвимость для произвольного увеличения собственного залога imBTC до 290 токенов (около $2 млн). Далее он использовал фейковый баланс для залогового обеспечения, что позволило ему заимствовать все доступные активы из пула ликвидности Lendf.Me и вывести их на собственные кошельки. Часть средств хакер вывел в конкурирующий Compound.

Подробный технический анализ действий хакера можно прочитать в отчетах компаний по блокчейн-безопасности PeckShield и SlowMist.

Почему хакер вернул похищенные средства

После взлома представители dForce обратились в полицию в нескольких юрисдикциях, а также к эмитентам активов и биржам, чтобы внести в «черный список» украденные средства и совместными усилиями выследить хакера. Дело в том, что у imBTC централизованный реестр, управляемый Tokenlon. Благодаря этому украденные токены могут быть помечены, после чего их не примет ни одна площадка. Украденные ERC20-токены HuobiBTC также управляются Huobi и погашаются лишь на их платформе.

После вывода средств хакер попробовал обменять их. Для этого он перевел токены на ряд децентрализованных бирж. Здесь он, судя по всему, допустил несколько ошибок, которые привели к раскрытию его личных данных. Так, при перемещении выведенных монет на децентрализованные биржи хакер просто использовал VPN или прокси-сервер, тогда как более опытные хакеры использовали бы децентрализованную сеть, например, Tor. Эта ошибка привела к утечке метаданных, включая IP-адрес хакера. С этой информацией отследить личность взломщика будет проще. Кроме того, IP-адрес можно внести в черный список централизованных площадок — так продать часть активов будет еще сложнее.

В комментариях TheBlock Сергей Кунц, глава 1inch.exchange (одной из децентрализованных бирж, использованных злоумышленником для отмывания похищенных средств), рассказал, что площадка получила запрос от сингапурской полиции на раскрытие IP-данных хакера и передала эту информацию правоохранительным органам. По поводу случившегося Кунц заметил, что «злоумышленник кажется хорошим программистом, но неопытным хакером». Судя по всему, данные мошенника оказались у dForce.

После этого, еще 19 апреля, представители dForce вступили с хакером в переговоры с помощью сообщений, прикрепленных к нулевым транзакциям. Во время переписки компания попросила мошенника прислать свой email.

Сообщение от администратора Lendf.Me с просьбой прислать свой email. Источник.

После этого хакер перевел Lendf.Me $2.79 млн. Но представители dForce решили, что этого недостаточно, и попросили злоумышленника связаться с ними «ради его лучшего будущего».

Сообщение от администратора Lendf.Me с просьбой связаться с компанией. Источник.

Одновременно потерпевшие пользователи стали отправлять хакеру нулевые ETH-транзакции с мольбами вернуть все средства. В конце концов хакер так и сделал.

«Вирус нанес ущерб каждому из нас, жизнь не проста! Мои средства на Lendf.Me — кредитные деньги. Без них я потеряю мою жену и детей. Пожалуйста, верни наши средства! Да благословит тебя Бог!», — сообщение хакеру от потерпевшего, который потерял $240 000. Источник.

В итоге 21 апреля несколькими переводами хакер вернул все украденные средства. О судьбе монет, украденных в Uniswap, пока ничего не известно. Возвращение похищенных денег заставило многих поверить, что у хакера проснулась совесть. Но на самом деле, скорее всего, он просто раскрыл свою личность.

Еще один удар по репутации DeFi-сектора

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

График объема заблокированных средств в DeFi-протоколах, по данным DeFi Pulse. На момент выхода статьи в них насчитывается около $760 млн. Источник.

Однако перед DeFi много нерешенных проблем и, кажется, главная из них — безопасность. Описанные выше атаки не первые. Так, в феврале хакер дважды вывел с DeFi-платформы маржинального кредитования и торговли Fulcrum, работающей на алгоритме bZx, ЕТН почти на $1 млн. Из-за ошибки алгоритма злоумышленник смог обмануть ценовой оракул, проверяющий условия выполнения смарт-контрактов. Команда bZx использовала ключ администратора, чтобы приостановить работу протокола — это вызвало критику сообщества, которое обвинило проект в централизованности. Тогда DeCenter писал, что если вывести деньги из системы может быть несложно, количество новых атак будет расти. К несчастью, наши предсказания сбываются.

Все эти атаки и последующие ответные меры снижают безудержный оптимизм, который сопровождает DeFi-сектор. И хоть на этот раз ситуация разрешилась относительно успешно, это очередной урок для отрасли. DeFi развивается так быстро, что нормам безопасности просто не уделяется достаточного внимания. Пугает, что хакер просто взял и использовал уже давно известные уязвимости, а команды протоколов не подготовились к этому заранее. Даже первая атака на Uniswap не привела к обеспечению безопасности со стороны dForce.

Все случившееся — это явно проблемы не только Uniswap и dForce. Вся DeFi-отрасль нуждается в более высоких стандартах безопасности. Без них она не будет готова к массовому принятию, несмотря на весь свой потенциал.