Обязательства Thorstarter по обеспечению безопасности

THORChain Warior
5 min readAug 18, 2021

--

Это перевод данной статьи

Sæll og blessaður, друзья.

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

По этой причине мы сотрудничаем с компанией Halborn для проведения комплексного аудита безопасности наших смарт-контрактов (текущих и будущих). Halborn работал с такими проектами, как SushiSwap, Polygon, Bancor, BlockFi и Ava Labs. Если говорить более конкретно об экосистеме THORChain, то Halborn работал в качестве консультанта по безопасности при аудите Sifchain (форк THORChain), а недавно по заказу Delphi Digital разработал план тестирования на проникновение и аудита безопасности для THORChain.

На этой неделе

Прежде всего, мы хотим поблагодарить всех Торчадов за поддержку и терпение в течение последней недели. В этом посте мы расскажем о событиях, произошедших в среду 7-го числа в течение нескольких часов после обнаружения эксплойта в маршрутизаторе THORChain в отношении стандарта токенов ERC777.

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

Как всё было

Среда, 7 июля 2021 года

18:31 UTC

  • “Белая шляпа” уведомляет нашу команду об ошибке в Discord

19:05 UTC

  • Наша команда предупредила сообщество, опубликовав ряд твитов, с которыми вы можете ознакомиться здесь. На тот момент: i) Стекинг на https://www.thorstarter.org/stake был в порядке, и ii) проблема была связана с взаимодействием с маршрутизатором THORChain, поэтому мы попросили сообщество не делать своп, не добавлять ликвидность и не выводить средства из пула RUNE:XRUNE THORChain, а также не покупать $XRUNE на THORSwap (или любой другой бирже, работающей на THORChain) до дальнейшего уведомления (Sushiswap был и остается в порядке).

19:07 UTC

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

21:51 UTC

  • Было принято решение прекратить торговлю на THORChain, поскольку любой мог получить XRUNE на SushiSwap, продать его за любой другой актив THORChain, украсть XRUNE и повторить, что привело к краже большинства средств из сети.

20:22 UTC

  • Разработчик THORChain со знанием маршрутизатора THORChain находится в сети, и начинается работа над исправлением проблемы

22:19 UTC

  • Фикс был написан и протестирован на месте, начался процесс создания макетной сети и тестирования миграции маршрутизатора в ней

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

Было сделано:

  1. В Мимир установили `StopFundYggdrasil` на `1`, это прекратитло финансирование хранилищ yggdrasil
  2. Установили `MimirRecallFund` в `1`, так сеть попросит yggdrasil отправить все свои средства обратно в Asgard по цепочке ETH.
  3. Дважды проверены все хранилища yggdrasil — они вернули свои токены erc20, если во всех хранилищах yggdrasil осталась только пыль ETH, то переходите к шагу 4
  4. Установили `MimirWithdrawUSDT` в `1` для USDT, это вызовет исход USDT, убеждаемся, что исходящий USDT был отправлен на указанный адрес.
  5. Установили `MimirUpgradeContract` в `1`, это запустит сеть для обновления контракта на новый.
  6. Все контракты yggdrasil были обновлены на новый адрес контракта
  7. Установили `ChurnInterval` обратно на 43200, чтобы смена нод мог ла быть запущена.
  8. После того, как смена началась, убедились, что новый asgard имеет новый контракт, и средства мигрируют на новый контракт.
  9. Когда цикл смены нод закончился, перевели USDT и XRUNE обратно на новый asgard, новый контракт, используя мемо `noop`.
  10. В Мимир установлен `StopFundYggdrasil` в 0, так сеть будет продолжать пополнять хранилища yggdrasil.
  11. Как только ygg пополнится, в Мимир установлен `HaltTrading` на 0, сеть будет доступна для обмена.

Разработчики THORChain в режиме реального времени поделились информацией об этих шагах на своем сервере Discord.

Примерно в 04:00 UTC 14 июля этап 11 завершился, и торговля/обмен/депозиты возобновились.

Роутер THORChain

ERC-777 и ERC-20 — основные различия

ERC777 делает все то же самое, что и ERC20, плюс несколько дополнительных трюков. Она добавляет две основные вещи: поддержку “операторов”, которая позволяет пользователям утверждать контракты, которые могут отправлять / сжигать принадлежащие им токены, предназначенные для использования при реализации таких вещей, как многоцепочечный мост. Он также добавляет поддержку “захватов”, которые позволяют любому контракту реагировать на то, когда токены отправляются от него или к нему, что и было использовано в данном хаке.

Почему мы выбрали ERC777

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

Как работал эксплойт?

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

Более подробно, атака инициирует депозит на маршрутизатор 500 XRUNE, но когда происходит передача токена, инициируется отзыв токенов в контракте атакующего, и он тут же инициирует второй депозит на 500 XRUNE, второй депозит завершается, и атакующему начисляется 500 XRUNE, но к моменту завершения первого депозита, вместо начисления только 500 XRUNE, учитывается текущий баланс XRUNE и контракт вычел баланс на начало первого депозита. Это означает, что первый депозит зачислил 1000 XRUNE атакующему, оставив ему 1000 XRUNE потраченных/отправленных, и право снять 1500 XRUNE с маршрутизатора. Выполните эту атаку несколько раз, и вам будет позволено забрать все XRUNE в маршрутизаторе.

Почему прошлые аудиты THORChain не выявили эту проблему

Мы не знаем точных деталей аудита THORChain, но вполне возможно, что было сделано предположение, что при взаимодействии с функциями передачи ERC20 повторное вхождение не играет роли, а учитывая, что для того, чтобы ошибка имела экономический эффект, она должна быть в активном пуле THORChain, что требует определенного количества ликвидности и времени, зловредный токен не может быть мгновенно добавлен. Кроме того, ERC777 еще не получил широкого распространения, поэтому многие разработчики не всегда задумываются о его последствиях, они думают только о том, что обычно делает ERC20 в своих функциях transfer/transferFrom

Исправление

Более сильный и безопасный THORChain

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

Аудиты

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

Сотрудничество с агентствами

Кроме того, мы сотрудничаем с блокчейн-агентством dOrg.tech для оказания помощи в текущей разработке и тестировании контрактов в качестве дополнения/расширения нашей команды разработчиков. dOrg уже работала с такими проектами, как Balancer и Compound, и переговоры с их командой продолжаются.

Заключение

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

Þökk дорогие Торчады.

--

--