Протокол Furucombo - REKT



Лучше потерять время, чем упустить возможность.

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

Хакер пошел в контратаку, взломал Furucombo и унес $14 миллионов из разных кошельков. Все они предоставляли протоколу “полный доступ”.

Полный доступ значит безграничное доверие. А мы знаем, что в DeFi этого делать нельзя.

“Не доверяй, проверяй”, но у кого есть время или деньги, чтобы подтверждать предустановленные суммы для каждой транзакции?

Люди, использовавшие протокол Furucombo, оказывали ему определенное доверие. Но многие, похоже, слишком доверились, и получили взамен горький жизненный урок.

Из того, что нам известно об этом эксплоите с помощью “поддельного контракта”, хакер заставил прокси-контракт Furucombo думать, что это была имплементация протокола Aave V2.

Новая “имплементация” была, конечно же, вредоносной и имела возможность пересылать все авторизованные токены на контролируемые хакером адреса. Это стало возможным потому, что пользователи ранее предоставили контрактам Furucombo разрешение на перевод своих токенов.

Kurt Barry проанализировал атаку:

Одну из транзакций в краже средств хакер отправил прокси Furucombo, чтобы обозначить лендинг-пул AAVE v2 как “обработчик” для одной единственной транзакции.

Вы можете проследить за ходом выполнения ниже, данные взяты с ethtx.info. Обратите внимание на встроенные команды delegatecalls.

Обработчики должны быть утверждены в журнале; в момент транзакции (но не в настоящий момент), этот прокси был действительным обработчиком.

Прокси FC дает прокси Aave v2 команду delegatecall, и тот выбрасывает адрес имплементации из специального слота-хранилища. Но, так как это delegatecall, он его читает из хранилища прокси FC, и полученный адрес - это контракт эксплоита хакера.

Если мы рассмотрим предыдущую транзакцию хакера:

То мы увидим, что хакер использовал свой поддельный контракт, чтобы дать прокси FC команду delegatecall прокси AAVE v2, вызвав функцию инициализации и установив слот имплементации.

Как только delegatecall выполнила код хакера в контексте прокси FC, уже ничего нельзя было сделать. Жертва разрешила прокси FC перемещать свои stETH, и эксплоит-код перевел их все хакеру.

Взять те же исходные и повторить со всеми остальными.

Итог:

  • прокси FC выполнил caller-specified delegatecalls в отношении проверенных обработчиков, позволив изменить свою память
  • обработчик выполнил caller-specified delegatecalls на адрес в памяти
  • обработчик предоставил функцию для установки этого адреса

Что мы из этого вынесли:

  • “trust list” полезны, но не дают гарантию
  • разработчики должны проводить аудит того, как функция delegatecall может взаимодействовать с памятью caller
  • предусматривать ограничивающие команды или параметры для caller
  • проявлять осторожность с инпутами пользователей

Не только частные пользователи понесли убытки. Cream Finance тоже пострадал, потому что атаковавший напрямую “позаимствовал” из их казны.

Igor Igamberdiev выдал список украденных активов.

  • 3,9k stETH
  • 2.4M USDC
  • 649k USDT
  • 257k DAI
  • 26 aWBTC
  • 270 aWETH
  • 296 aETH
  • 2.3k aAAVE
  • 4 WBTC
  • 90k CRV
  • 43k LINK
  • 7.3k cETH
  • 17.2M cUSDC
  • 69 cWBTC
  • 142.2M BAO
  • 38.6k PERP
  • 30.4k COMBO
  • 75k PAID
  • 225k UNIDX
  • 342 GRO
  • 19k NDX

Мы поговорили с DeFi-энтузиастом (@pleyuh) после того, как узнали, что он был одним из тех, кого это затронуло больше всего.

rekt:

Как ситуация разыгрывалась для тебя?

Как ты понял, что Furucombo атакуют и в какой момент ты начал действовать?

Limzero:

Я был дома с друзьями. Я открыл Телеграм, чтобы посмотреть уведомления и увидел новость на канале Darren - "The daily ape", что Furucombo подвергся эксплоиту.

Я проверил один из адресов, который я использовал на furucombo и заметил трансферы моих aAAVE и нескольких aETH.

Я испугался, потому что у меня были активные займы, и я не хотел, чтобы мои депозиты ликвидировали. Мой health factor упал до 1.5, поэтому я быстро выплатил займы.

Когда я заметил, что хакер вывел все мои aAAVE и только треть aETH, я заподозрил, что мой низкий HF помешал ему вывести больше. Наверное, мне повезло, что у меня были активные займы.

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

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

Я заметил, что хакер сделал трансферы моих фондов через 90 минут после атаки.

rekt:

Для тебя это была большая потеря?

Каково это психологически, ты чувствуешь себя более осторожным или менее уверенным в DeFi после атаки?

Limzero:

Сама по себе потеря большая, но мое портфолио это выдержит.

На несколько минут мне стало очень страшно, потому что я испугался, что все мои а-токены были ликвидированы. Но, когда я увидел, что мой health factor был выше 1.1, я почувствовал облегчение.

Я рассматриваю весь этот опыт как дорогостоящий урок безопасности. Давать неограниченные разрешения одному адресу с большой суммой на счету было очень глупой ошибкой с моей стороны. Если хорошо присмотреться, мне в итоге пришлось заплатить обезьяний налог. После стольких лет в этой сфере это первая хакерская атака / эксплоит, который меня настиг. Мне повезло, что меня еще не коснулись ситуации посерьезнее.

Вообще-то первый эксплоит после эксплоита COVER, но я о нем забыл :P

Я не чувствую себя менее уверенным в DeFi. Я знал об этих рисках.

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

rekt:

Что ты можешь нам рассказать об этих мерах?

Limzero:

Я лучше ничего не буду говорить, простите.

Это тоже часть этих мер 😋

rekt:

Какие шаги ты бы рекомендовал предпринять нашим читателям, чтобы улучшить их безопасность?

Limzero:

  1. использовать физические кошельки
  2. избегать windows
  3. использовать отдельную машину для web 3 и взаимодействия с контрактами
  4. одноразовые пароли или менеджеры паролей + VPN
  5. не светиться в соцсетях
  6. использовать много адресов, чтобы распределить риск
  7. заводить новые адреса для новых фармов
  8. отзывать разрешения у часто используемых адресов

В любом случае я не эксперт по безопасности. Это стандартные советы, предлагаемые более знающими людьми в крипто-сфере.

  1. читайте REKT xD

rekt: Скажешь что-нибудь напоследок нашим читателям?

Limzero:

“Пожалуйста, не взламывайте меня больше”

Еще, даже если вы очень уверены в вашей безопасности, храните небольшую часть ваших сбережений на больших централизованных биржах типа Kraken, Coinbase, Gemini, Binance - на тот случай, если ваш персональный кошелек взломают.

У меня все.

rekt:

Спасибо, что побеседовал с нами.

Limzero:

Спасибо вам! Надеюсь, что никогда больше не придется с вами беседовать лол.


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

На таких сайтах как Debank или Etherscan можно отслеживать и отзывать разрешения в своем кошельке. Как верно заметил Limzero, это дело лучше не откладывать на потом.

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

На этом ринге нет рефери; вы несете ответственность за свою безопасность. Но, как только вы разберетесь, что к чему, игра будет стоить свеч.

ПОПРАВКА: 18 июля 2021

Haechi связался с нами и заявил следующее:

Несмотря на то, что проверка их сontract(proxy) входила в программу нашего аудита, проведенный нами аудит не связан с эксплоитом, который затронул прокси. Команда furucombo предоставила нам всего лишь два контракта: furucombo proxy и compound adapter. Они предоставили сценарий, по которому команда furucombo получает доступ к протоколу compound с использованием адаптера compound с proxy, вои и все. Но, как вам известно, эксплоит случился по причине сценария использования AAVE. У нас не было возможности обнаружить эту проблему, потому что у них уже была функция включения в белый список, которая должна была выступить защитой в подобной ситуации.


Поделиться

REKT представляет собой общественную площадку для анонимных авторов. Мы не несём ответственность за выражаемые точки зрения или контент на этом веб-сайте.

Пожертвование (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

Дисклеймер:

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