Протокол Pickle Finance - REKT



Брожение в финансах продолжается. Даже у соленых огурцов есть срок годности.

Хранилище, в котором хранились токены cDAI протокола Pickle Finance подверглось хакерской атаке через уязвимость с использованием фальшивых «Pickle Jars» (банок с огурцами - прим. переводчика). Было украдено 19.7 миллионов DAI.

Pickle Finance стал новой жертвой эпидемии хакерских атак.

Но в этот раз все было не как обычно...

Пока в Твиттере пытались смириться с очередной финансовой катастрофой, Rekt начал проводить расследование.

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

Тогда мы быстро связались с командой Pickle Finance и организовали командный пункт с участниками Stake Capital (@bneiluj, @vasa_develop)  Yearn (@bantg) Pickle Finance и опытными разработчиками @samczsun, @emilianobonassi.

В ходе работы стало ясно, что перед нами было что-то совершенно отличающееся от DeFi-атак в стиле лего, происходивших последние недели.

Это была не арбитражная атака.

Атакующий обладал отличным знанием Solidify и EVM и, похоже, какое-то время очень пристально наблюдал за кодом Yearn, потому что уязвимость была похожа на ту, что была обнаружена в коде Yearn месяцем ранее.

Pickle Jars это по сути своей форки yVault протокола Yearn. Jars контролируются контрактом под названием Controller. У него есть функция, которая позволяет пользователям обменивать активы между Jars.

К сожалению, нет белого списка Jars, у которых есть разрешение на использование этой функции обмена.

Хакер создал фальшивый Pickle Jar и обменял фонды с оригинальной банкой. Это стало возможным, потому что swapExactJarForJar не проверил, была ли эта "банка" в «белом списке».

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

Pickle попробовали вызвать “withdrawAll”, но транзакция не прошла.

Запрос на вывод должен был пройти через ДАО Управления, на которой был установлен 12-часовой таймер.

Только один из членов мультисига Pickle мог обойти таймер, но он спал.

Это значило, что админы не могли опустошить Pickle Jars, но это не защитило их от атаки с другой стороны.

Pickle Finance и Curve послали пользователям предупреждения о том, что им нужно было немедленно вывести фонды из Pickle. Но все же $50 миллионов еще оставались в потенциально уязвимых pickle jars, пока команда белых шляп расследовала эксплоит и проверяла, в безопасности ли оставшиеся фонды.

Спасательному отряду нужно было либо разбудить спящего админа, либо самим слить банки.

Команде пришлось преодолеть пять главных трудностей.

  1. Собрать вместе всю команду Pickle Finance, учитывая, что они находятся в разных часовых поясах. Начать спасать фонды, отправляя транзакции в 12-часовой таймер (через 3 из 6 мультисигов), чтобы вывести все фонды.

  2. Заставить тысячи инвесторов вывести свои фонды (и уговорить их не вкладывать снова, когда TLV хранилища упадет и APY раздуется до 1000+% годовых)

  3. Провести проверку безопасности в других банках, чтобы выявить возможность новых атак.

  4. Продублировать атаку в превентивных целях до того, как кто-то сможет снова взломать банки.

  5. Избежать фронтраннинг во время попытки спасти оставшиеся 50К.

Как долго еще мы можем полагаться на помощь псевдо-анонимных этичных хакеров?

Стимулы явно больше ориентированы на злоумышленников, чем на защитников; зачем им координировать такую изнурительную контратаку?

Слава достается этичным контратакам, а деньги идут хакерам. Так не может долго продолжаться.

Сколько еще осталось ждать, когда искушение покрасит белые шляпы в черный цвет?

Анализ

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

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

Следующую схему создал @vasa_develop.

Оригинальный файл можно найти здесь.

Подробное описание можно найти в полном постмортеме, сделанном командой, здесь.

Интересно будет посмотреть, как относительно новый страховой примитив “Cover Protocol” справится с инцидентом; речь идет о немалой сумме денег для первого запроса компенсации. Обзор голосования по заявке на страховое возмещение можно найти здесь.

Маринование это долгий процесс.

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

В DeFi быстро провалиться стоит очень дорого.

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

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

Аудиты, выполненные MixBytes (3 октября) и Haechi (20 октября) были завершены до добавления ControllerV4 (23 октября), который стал одним из ключевых векторов атаки.

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

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

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

Фото @martinkrung

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

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

Мы провели аудит части контрактов Pickle, но эксплоит произошел в смарт-контрактах, которые были недавно обновлены. Смарт-контракт, в котором произошел эксплоит - “swapExactJarForJar” в “controller-v4.sol”, а наш аудит касался “controller-v3.sol” без “swapExactJarForJar”. Все детали вы можете найти здесь.

(FYI) Я видел, что ваша команда написала, что наш аудит для pickle finance был закончен до того, как был добавлен ControllerV4, что стало ключевым вектором атаки в этом хаке.

Детали вы можете найти здесь.


Поделиться

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

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

Дисклеймер:

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