Web3 фронтенд-атака: новый рай для Хакеров

robot
Генерация тезисов в процессе

Мы забыли защитить невидимый слой

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

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

Интерфейс доверия означает доверие к атакующему

Настоящая опасность фронтенда заключается не обязательно в технической сложности; а в несоответствующем доверии. Большинство пользователей не знают, что они на самом деле подписывают при подтверждении транзакции. Они полностью полагаются на то, что фронтенд показывает им.

Кнопка «Swap» может вызывать одобрение. Интерфейс стейкинга может передавать делегированный вызов. Если кошелек не декодирует данные в человеко-читаемом формате, а многие кошельки все еще этого не делают, пользователи не смогут проверить, что они делают.

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

Как происходят эти атаки

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

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

Недавние события, подтверждающие это

Мы уже видели несколько болезненных примеров в этой области. Один из самых известных случаев — это инцидент с Curve Finance в 2022 году, когда злоумышленник контролировал DNS Curve и предоставил пользователям поддельный интерфейс. Сайт выглядел совершенно идентично. Подсказки кошелька также казались нормальными. Но за кулисами каждая транзакция направлялась в кошелек злоумышленника. Всего за несколько часов было потеряно почти 600 тысяч долларов.

Еще один пример – BadgerDAO, который потерял более 100 миллионов долларов после того, как злоумышленник внедрил вредоносный JavaScript в его фронтенд. Этот код незаметно изменил полезную нагрузку транзакций определенных пользователей (особенно китов), заставляя этих пользователей самостоятельно перейти к разрушению.

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

Почему эта проблема не исчезнет

Причина, по которой безопасность фронтенда в Web3 особенно сложна, заключается в том, что она находится в странной серой зоне. Она находится вне цепи, поэтому большинство инструментов безопасности на цепи не могут ее контролировать. Часто она игнорируется во время аудита, особенно в проектах, где приоритет отдается доставке, а не безопасности. Кроме того, она сильно зависит от централизованной инфраструктуры, такой как DNS, облачное хранилище и реестр пакетов JavaScript, которые не предоставляют такие же гарантии, как блокчейн.

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

Что нужно изменить

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

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

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

Заключение

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

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

CRV-1.98%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить