15 декабря 2022 г. UTC

Взлом мостов

Sponsored
Поделиться

TL;DR Мосты играют все более важную роль, позволяя различным блокчейнам взаимодействовать друг с другом. Братья и основатели Sayfer Нир Дуан (генеральный директор) и Ор Дуан (технический директор) поделились опытом практического хакерства в роли белых шапок и своим новым лидерством в области аудита web3. 2022 о том, почему мосты так подвержены атакам, как их взламывают и каковы наилучшие подходы для успешного аудита смарт-контрактов моста.

Почему мост должен проходить аудит?

Мосты — чрезвычайно прибыльная цель для крипто-хакеров. Только в 2022 году было украдено более 1,6М доллара. Это в сочетании со сложностью, присущей кодированию моста, делает аудит незаменимой частью процесса развертывания. Sayfer помогает другим компаниям стать более безопасными, выполняя тесты на проникновение, которые являются важной частью полного аудита безопасности. Аудит смарт-контрактов — это специализированная часть аудита безопасности, разработанная для кода современного web3, децентрализованного приложения или децентрализованного приложения, работающего с блокчейном. Процесс аудита направлен на то, чтобы после развертывания неизменяемого контракта в блокчейне он мог делать только то, для чего предназначен. Мосты представляют собой еще более специализированный случай для аудиторов, поскольку они содержат компоненты кода в обеих цепочках, а также компонент вне цепочки. Если в этой области разработки web3 не будут реализованы надлежащее мышление и аудит безопасности, весьма вероятно, что миллионы долларов в токенах будут по-прежнему утекать из плохо спроектированных мостов.

Пошаговое руководство по аудиту моста

Узнайте об архитектуре

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

Ключевой менеджмент

Кто управляет ключами? Потому что, если это небезопасно, ничто не является безопасным, как мы видели во взломе Ronin. Даже если консенсус распределяется между несколькими различными субъектами, мы должны учитывать, насколько легко было бы взять на себя управление и насколько далеко кто-то готов зайти для этого.

Архитектура валидатора

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

Понимание базы кода

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

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

Затем посмотрите на тесты, предоставленные разработчиками. Они могут помочь вам лучше понять кодовую базу, а также позже попробовать свои собственные эксплойты и тестирование уязвимостей. Вам не нужно изобретать велосипед! Если у вас есть тесты с настройками и разборками, вы можете просто скопировать тест, изменить его и составить свой собственный.

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

Инструменты аудита

Построение графа вызовов функций может очень помочь в понимании структуры контрактов и функций внутри них. surya от ConsenSys предлагает эту функциональность.

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

Автоматические сканеры — наши друзья в качестве аудиторов для поиска «низко висящих фруктов». Наиболее часто используемый инструмент — слайдер. Или подчеркивает важность подхода к запуску сканера уязвимостей: не стоит просто запускать инструмент и надеяться на отсутствие красных предупреждений. Относитесь к нему именно как к инструменту. Чтобы уменьшить шум на выходе, используйте флаги, чтобы исключить из сканирования определенные пути, зависимости или детекторы. Вы также можете использовать параметр вывода в формате .json, который позволяет относительно легко затем отфильтровать и составлять конкретный список дел для вашего аудита.

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

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

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

После того, как вы изучите эти методологии, посмотрите часть, где Нир и Ор продемонстрировали живое испытание в ICC о том, как на самом деле найти уязвимость в коде:

https://www.youtube.com/watch?time_continue=1019&v=XkwmnInQUwU&feature=emb_title

Итог

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

https://www.youtube.com/watch?time_continue=1976&v=XkwmnInQUwU&feature=emb_title

Автор статьи: Зои Ронен

2017-2024 Coindar