March 3

DeFi. Safe - безопасное использование

Safe Multisig

TL;DR

Одна из главных (для меня) проблем, порождённых взломом Bybit (почитать о том, что виновата биржа, а не просто хакеры, можно в пяти частях по ссылкам: первая, вторая, третья, четвёрая, пятая), - это дискредитация SAFE как безопасного решения мультиподписи.

Поэтому сначала - поясню, а потом - объясню...

Почему взломали не SAFE?

Очень много на то причин, но важнейших 3:

  1. Это написано после массы разных аудитов, включая от Bybit, где даётся отсылка о якобы взломе, но на самом деле - это была векторная атака через Safe-разработчика на интерфейсную часть Bybit-кошелька. Также это подтверждено иными независимыми аудитами.
  2. Слепая подпись: её использовали все участники от Байбит и это не допустимо, когда речь идёт о деньгах пользователей, да ещё в размере >$1.4B.
  3. Атака была такой же на 99%, как в Radiant и других взломах, но Bybit ничего об этом "не знали", т.е. не имели защиты для известного вектора хаков.

Зная это - идём дальше.

Safe. Безопасно. По шагам

Итак, из всех мультисигов - это самый безопасный инструмент. То, что случилась беда - плохо, но она лишь закалила команду, а вот вам краткие лайфхаки, что нужно и как применять для ещё более безопасной работы с Safe.

Лайфхак №01. Знайте про альтернативные интерфейсы

Они указаны в официальном посте самого Safe:

  1. app.palmeradao.xyz
  2. eternalsafe.eth.limo
  3. app.onchainden.com

Конечно, их лучше использовать для доп. проверок, а не как основной интфейс, но то, что они существуют, - прекрасно.

Лайфхак №02. Читайте, что вам пишет команда

Где именно?

  1. В документации;
  2. В официальных сообщениях и блоге;
  3. А также на сайте.

Пример:

А написано буквально следующее: "Уведомление о безопасности. В связи с недавними инцидентами, связанными с безопасностью, важно ВСЕГДА проверять транзакции, которые вы одобряете, на кошельке подписанта. Если вы не можете её проверить, не подписывайте ее.Более подробную информацию о том, как проверить безопасную транзакцию, можно найти в соответствующей статье справочного центра".

А вот и статья: https://help.safe.global/en/articles/276343-how-to-perform-basic-transactions-checks-on-safe-wallet.

Лайфхак №03. Проверка данных

Собственно, перевод статьи выше - будет наиболее уместным. Привожу его полностью:

(Зададим простой вопрос): Как выполнить базовую проверку транзакций в Safe{Wallet}?

  1. Вы — пользователь Safe{Wallet}.
  2. Вы создали свою транзакцию через Safe{Wallet}.
  3. Вы готовы нажать «Подписать» и подтвердить её через Metamask или Rabby.

Этот гайд объяснит, как выполнить базовую проверку транзакции в вашем кошельке.

Для инструкции по проверке данных транзакции на аппаратном кошельке с помощью стороннего инструмента обратитесь к иному руководству: https://help.safe.global/en/articles/276344-how-to-verify-safe-wallet-transactions-on-a-hardware-wallet.

ГЛАВНОЕ ПРАВИЛО! Если вы не можете проверить транзакцию — не подписывайте её.

Шаг 1: Проверьте данные транзакции в Safe{Wallet}. Перед тем как нажать «Подписать», в интерфейсе Safe{Wallet} убедитесь, что следующие данные соответствуют вашим ожиданиям:

Данные в Safe

(Параметры следующие):

  • to – адрес получателя для перевода Ether, контракт токена ERC-20 для перевода токенов или смарт-контракт, с которым нужно взаимодействовать для операций с контрактом.
  • value – обычно 0 для операций с контрактами и > 0 для перевода Ether.
  • data («Raw data») – для проверки этих данных требуется техническое понимание. Обратитесь к этому руководству для подробностей: https://help.safe.global/en/articles/276344-how-to-verify-safe-wallet-transactions-on-a-hardware-wallet.
  • call_type – обычно вы должны увидеть простое «call». Другие типы, такие как «create» или «delegate_call», должны появляться только если вы действительно понимаете, что делаете.
  • nonce – индекс следующей транзакции, которую вы хотите выполнить.

Теперь вы нажимаете «Подписать», что отправляет данные транзакции в ваш кошелек, такой как Rabby, Metamask или любой кошелек, подключенный через WalletConnect.

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

Подтверждение данных

Пояснение по параметрам - см. выше.

Только когда все вышеуказанные проверки пройдены, подтверждайте в вашем кошельке (транзакцию).

Лайфхак №04. Изучайте взломы

Например - этот: https://teletype.in/@menaskop/defi-hack-Radiant-Capital - там много полезного по рекомендациям описано. Можете взять и иные, главное - не будьте как Bybit, когда всю вину надо просто на кого-то скинуть, а не обеспечить реальную безопасность.

Лайфхак №05. Применяйте расширенный инструментарий

Например: https://etherscan.io/inputdatadecode:

Проверка хеша

Можно вычилить кошелёк и понять базовые вводные.

Лайфхак №06. Самый простой и важный

Всегда! Проверяйте кошелёк получателя: найдите его в мессендежере (переписке), проверьте в эксплорере, изучите на скриншоте (если есть). Главное, используйте хотя бы 2, а лучше 3 независимых источника сверки.

Многие этого не делают, надеясь на память, но подделать адрес даже на 4 первых и 4 последних символа - вполне возможно.

Лайфхак №07. Не будете как Bybit

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

Не стесняйтесь спрашивать у:

  1. Гугла
  2. AI
  3. Документации

Всё, что не понимаете: лучше медленно и верно, чем быстро и не безопасно.

Вместо заключения