DeFi. Safe - безопасное использование
TL;DR
Одна из главных (для меня) проблем, порождённых взломом Bybit (почитать о том, что виновата биржа, а не просто хакеры, можно в пяти частях по ссылкам: первая, вторая, третья, четвёрая, пятая), - это дискредитация SAFE как безопасного решения мультиподписи.
Поэтому сначала - поясню, а потом - объясню...
Почему взломали не SAFE?
Очень много на то причин, но важнейших 3:
- Это написано после массы разных аудитов, включая от Bybit, где даётся отсылка о якобы взломе, но на самом деле - это была векторная атака через Safe-разработчика на интерфейсную часть Bybit-кошелька. Также это подтверждено иными независимыми аудитами.
- Слепая подпись: её использовали все участники от Байбит и это не допустимо, когда речь идёт о деньгах пользователей, да ещё в размере >$1.4B.
- Атака была такой же на 99%, как в Radiant и других взломах, но Bybit ничего об этом "не знали", т.е. не имели защиты для известного вектора хаков.
Safe. Безопасно. По шагам
Итак, из всех мультисигов - это самый безопасный инструмент. То, что случилась беда - плохо, но она лишь закалила команду, а вот вам краткие лайфхаки, что нужно и как применять для ещё более безопасной работы с Safe.
Лайфхак №01. Знайте про альтернативные интерфейсы
Они указаны в официальном посте самого Safe:
Конечно, их лучше использовать для доп. проверок, а не как основной интфейс, но то, что они существуют, - прекрасно.
Лайфхак №02. Читайте, что вам пишет команда
А написано буквально следующее: "Уведомление о безопасности. В связи с недавними инцидентами, связанными с безопасностью, важно ВСЕГДА проверять транзакции, которые вы одобряете, на кошельке подписанта. Если вы не можете её проверить, не подписывайте ее.Более подробную информацию о том, как проверить безопасную транзакцию, можно найти в соответствующей статье справочного центра".
А вот и статья: https://help.safe.global/en/articles/276343-how-to-perform-basic-transactions-checks-on-safe-wallet.
Лайфхак №03. Проверка данных
Собственно, перевод статьи выше - будет наиболее уместным. Привожу его полностью:
(Зададим простой вопрос): Как выполнить базовую проверку транзакций в Safe{Wallet}?
- Вы — пользователь Safe{Wallet}.
- Вы создали свою транзакцию через Safe{Wallet}.
- Вы готовы нажать «Подписать» и подтвердить её через Metamask или Rabby.
Этот гайд объяснит, как выполнить базовую проверку транзакции в вашем кошельке.
Для инструкции по проверке данных транзакции на аппаратном кошельке с помощью стороннего инструмента обратитесь к иному руководству: https://help.safe.global/en/articles/276344-how-to-verify-safe-wallet-transactions-on-a-hardware-wallet.
ГЛАВНОЕ ПРАВИЛО! Если вы не можете проверить транзакцию — не подписывайте её.
Шаг 1: Проверьте данные транзакции в Safe{Wallet}. Перед тем как нажать «Подписать», в интерфейсе Safe{Wallet} убедитесь, что следующие данные соответствуют вашим ожиданиям:
- 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
В том смысле, что изучайте инструменты, которыми вы пользуйтесь и знайте, что взломать можно любой из них, но вот взломать их совокупность + вас, если вы - продвинутый пользователь, а с вами - и ваши коллеги по мультисигу, намного сложнее.
Всё, что не понимаете: лучше медленно и верно, чем быстро и не безопасно.