📜 Статьи ←
October 3, 2022

Аудит смарт-контрактов от Pontem Network

В наибольшей безопасности тот, кто начеку, даже когда опасности нет

Website | Telegram | Twitter | Discord | Medium | Github

Всем привет. Когда приложение имеет дело с цифровыми/финансовыми активами, то рискуют все: пользователи, авторы и сотрудничающие протоколы. И если вдруг случится какой-то сбой — что делать? Предотвращать. Именно об этом сейчас и поговорим.

Перед запуском dApp аудит смарт-контрактов является важным шагом, так как сторонние аудиторы могут найти уязвимости, которые может пропустить сама команда проекта. Аудиты используют как автоматические инструменты, так и тщательный ручной анализ, и могут предотвратить большинство взломов.

Как проводятся проверки и почему не стоит вкладывать деньги в непроверенные протоколы?

Процесс аудита состоит из:

  1. Проверка проекта;
  2. Автоматизированное тестирование;
  3. Ручной анализ кода;
  4. Экспертная оценка;
  5. Отчет со списком обнаруженных уязвимостей и рекомендациями по их устранению.

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

Наиболее популярными инструментами являются Mythril, Manticore, Slither и Oyente.

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

Большинство аудиторских фирм работают с сетями Solidity и EVM, а также с Solana, но некоторые, например OtterSec и Halborn, уже работают с языком программирования Move.

Move — гораздо более безопасный язык, чем Solidity, но приложения Move dApp все еще нуждаются в проверке: например, Pontem Wallet проходит сейчас уже третий аудит.

Неаудированные децентрализованные приложения является очевидной целью для хакеров — они могут просто рухнуть из-за внутренней ошибки. Яркими примерами являются Nomad, Beanstalk и Yam Finance. Ведущими аудиторами смарт-контрактов являются компании Hacken, OtterSec, CertiK, ConsenSys Diligence, Halborn и Quantstamp.


Аудит кода Блокчейна или смарт-контракта

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

Безопасность блокчейна является частью знаменитой трилеммы;

  1. Безопасность
  2. Масштабируемость
  3. Децентрализация

Эти три критических аспекта сети или децентрализованного приложения должны быть сбалансированы.

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

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

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


Обзор проекта и анализ кода на высшем уровне

Группа внешнего аудита должна получить хорошее представление о проекте: его архитектуре, бизнес-логике, практическом применении и т. д.

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

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


Автоматизированное тестирование

Существует не так много программных инструментов для тестирования смарт-контрактов, и почти все они предназначены для цепочек Solidity и EVM. Они не могут найти недостатки бизнес-логики или токеномики, но экономят аудиторам много времени.

Самые популярные из них:

Mythril от ConsenSys — мощный инструмент с открытым исходным кодом, обнаруживающий множество критических ошибок.

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

Oyente — создан в 2016 году, этот инструмент не обновлялся пару лет, но до сих пор получает хорошие отзывы за точность.

Распространенные уязвимости:

Реентерабельность — злоумышленник неоднократно вызывает функцию вывода для перевода средств с уязвимого смарт-контракта на вредоносный.

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

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

Зависимость от временной метки — злоумышленник вводит в контракт неправильную временную метку, чтобы создать впечатление, что транзакция произошла в определенный момент (например, чтобы выиграть аукцион или лотерею).

Replay — перехват, а затем повторная отправка данных в блокчейне (может использоваться для кражи средств во время событий форка).


Ручной анализ кода

Этот этап помогает найти ошибки, пропущенные автоматическими инструментами. Он также выявляет ложные срабатывания: фрагменты кода, которые программное обеспечение для автоматического аудита ошибочно помечает как уязвимости.

Аудит может выявить уязвимости разного уровня серьезности:

  • Критический уровень — позволяет злоумышленнику украсть токены, взломать dApp и так далее;
  • Средний уровень — потенциальный ущерб ограничен;
  • Низкий уровень — по-прежнему является ошибкой, но мало что создает. Риск финансового или структурного ущерба.
Страница из построчного аудиторского отчета Hubble Protocol, подготовленного Smart State.

Экспертная оценка

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


Аудиторский отчёт со списком обнаруженных уязвимостей и рекомендациями по их устранению

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

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

Конечно, если будут обнаружены какие-либо критические уязвимости, проект, как правило, сначала их исправит, а уж потом опубликует.

Раздел отчета об аудите протокола Reef, подготовленный Halborn.

Проблема аудита смарт-контрактов в Move vs. Solidity

Смарт-контракты EVM и Solidity сложно отлаживать и они имеют много трудностей с безопасностью. Добавьте к этому доминирование цепочек EVM (9 из 10 ведущих блокчейнов по версии DeFi TVL используют EVM), и вы поймете, почему индустрия смарт-контрактов так сосредоточена на Solidity.

У него есть как преимущество первопроходца, так и множество уязвимостей, требующих аудита. Когда специалист переходит от экосистемы Ethereum/EVM к альтернативной среде блокчейна, такой как Move, он сталкиваетется с очень интересной проблемой: с одной стороны, язык Move и Move VM намного безопаснее, чем Solidity и EVM (например, контракты Move устойчивы к повторным атакам), с другой стороны, децентрализованные приложения на основе Move по-прежнему должны проходить аудит — и пока не так много специалистов по безопасности блокчейнов, которые работают с этим языком.

Аудиторы Pontem Wallet OtterSec и Halborn являются одними из первопроходцев, а сам Pontem Wallet является одним из первых децентрализованных приложений Aptos, полностью прошедших аудит, что вызывает у большую гордость за проект Pontem.

Кстати, аудитор OtterSec опубликовал очень интересный пост в блоге о том, как создавать более безопасные dApps с помощью Move, и часть кода из Pontem Liquidswap DEX используется там в качестве примера.


Лучшие компании по аудиту смарт-контрактов

Hacken — созданный в 2017 году, Hacken проверяет все протоколы блокчейна, смарт-контракты и децентрализованные приложения. Фирма также курирует программы вознаграждений за ошибки для, например, CoinGecko.

Hacken работает с самыми разными блокчейнами: цепочки EVM, Solana, NEAR, Cosmos, Polkadot и другие. Его клиентами являются FTX, Gate.io, Crypto.com, KuCoin, Huobi, Ellipsis, IoTex, 1inch, Aurora, Klaytn, Cirus, Victoria VR, WAX, TrustSwap и десятки других проектов DeFi, GameFi, инфраструктуры и NFT.

OtterSec — ведущий поставщик аудита блокчейна в экосистеме Solana. Его впечатляющее портфолио включает Wormhole, Serum, Sabre, Raydium, Solend, Socean, а также Anchor, LayerZero и Proximity на NEAR.

Более того, это одна из немногих фирм, занимающихся аудитом блокчейна, которая работает с новым языком программирования Move, используемым Aptos и Sui. OtterSec завершила первый аудит кошелька Pontem Wallet для Aptos, а также кошелька Hippo.

У OtterSec также есть отличный блог с экспертными советами по безопасности смарт-контрактов, особенно на Solana.

CertiK — известен прежде всего своей таблицей лидеров безопасности блокчейнов, где более 3000 проектов оцениваются по их рейтингу доверия.

Аудиты безопасности — это дополнительная область знаний CertiK, наряду с тестированием на проникновение (испытание любых и всех методов для входа в части системы, к которым не должен быть доступ), KYC, наградами за обнаружение ошибок, мониторингом в сети и отслеживанием кошелька.

CertiK провел более 1800 аудитов протоколов Ethereum, Avalanche, BNB Chain, Solana, Algorand, NEAR и Cosmos. Это надежный поставщик услуг аудита для Binance, The Sandbox, Huobi и OKex.

Halborn — был создан этическими (белыми) хакерами в 2019 году и сейчас включает более 50 специалистов по безопасности блокчейнов.

Помимо аудита смарт-контрактов, он специализировался на консультировании по вопросам безопасности, тестировании на проникновение и автоматизации безопасности. Холборн работал с такими популярными проектами, как Polygon, Solana, Thorchain, Bancor, Pangolin, Reef, Sushi, BlockFi, Polkadex и даже с яхт-клубом Bored Apes.

Он также является одним из аудиторов Pontem Wallet, первого кошелька для блокчейна Aptos. Рекомендуем блог Халборна, в котором представлены случаи недавних взломов DeFi и подробные сведения о наиболее распространенных типах атак на блокчейн.

ConsenSys - компания, стоящая за MetaMask, Truffle и Infura — ключевыми инструментами для разработчиков Web3.

Его подразделение по аудиту смарт-контрактов ConsenSys Diligence работало с более чем 100 командами, такими как Aave, OmiseGo, 0x, Aragon и Horizon.

ConsenSys Diligence предоставляет услуги помимо аудита: моделирование угроз, постоянная проверка уязвимостей, планирование реагирования на атаки и другие.

Quantstamp - работал с более чем 250 проектами, обеспечив активы на сумму более 200 миллиардов долларов и заблокировав ликвидность.

В его портфолио входят OpenSea, Curve, Maker DAO, Compound, NBA TopShot, Lido, SuperRare, Decentraland, Aave и Axie Infinity. Фирма работает со многими блокчейн-экосистемами, такими как Solana, Ethereum, BNB Chain, Cardano, Flow, Near, Tezos и Hedera Hashgraph.

Он также защищает клиентов Teku и Prysm для Ethereum 2.0.


Три DeFi приложения, которые рухнули из-за того, что не провели аудит смарт-контрактов

Взломан с помоьщью эксплойта, нацеленный на обновление сети

Nomad — это мост, соединяющий Ethereum, Evmos, Moonbeam, Avalanche и протокол Milkomeda. Эксплойт от 2 августа был нацелен на недавнее обновление Nomad, которое, по словам главы службы безопасности Paradigm @samczsun, не подвергалось аудиту.

Ошибка в контракте позволяла пользователям отправлять небольшие суммы WBTC с Moonbeam и получать в 10 000 раз больше WBTC обратно на Ethereum.

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

Это был не взлом одного человека, а скорее хаотичная, оппортунистическая атака с 41 адреса. В общей сложности было потеряно около 200 миллионов долларов — вся ликвидность, удерживаемая мостом.

Nomad заявил, что будет работать с фирмами, занимающимися безопасностью блокчейна, чтобы отследить и вернуть деньги.

Тем не менее, он, вероятно, должен был привлечь специалистов по безопасности блокчейна, прежде чем продвигать неаудированное обновление контракта в основной сети!


Взломан на 180 миллионов долларов с помощью флэш-кредита

Beanstalk — децентрализованная стабильная монета на Ethereum. Вместо того, чтобы использовать обеспечение для поддержания привязки BEAN, он использует кредит, побуждая держателей ссужать свои деньги в обмен на проценты.

17 апреля 2022 года хакер использовал ошибку в коде управления Beanstalk. Он взял быстрые кредиты на Uniswap, SushiSwap и Aave, заняв около 1 миллиарда долларов в DAI, USDC, USDT и BEAN.

Хакер поместил эту ликвидность в пулы BEAN на Curve, получив достаточно токенов LP, чтобы дать им большинство голосов в Beanstalk DAO. Затем злоумышленник представил новое предложение по улучшению Beanstalk (BIP) для перевода всех средств из протокола на свой адрес — и проголосовал за него, так что оно было автоматически принято.

Всего злоумышленник получил до $182 млн в токенах BEAN, ETH и Curve LP. Все, что им нужно было сделать сейчас, это погасить быстрые кредиты.

Смарт-контракты Beanstalk были проверены Omnicia. Но код, содержащий уязвимость flash-кредита, был добавлен позже без проверки. Урок здесь заключается в том, что аудит смарт-контрактов — это непрерывный процесс: каждую новую функцию необходимо проверять.


Падение сети на 99% из-за ошибки в коде

Yam Finance - запущенный в августе 2020 года, был ранним экспериментом по перебазированию: предложение YAM увеличивалось или сокращалось в зависимости от цены.

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

Поскольку это был всего лишь эксперимент, команда внедрила Yam Finance без аудита. Это стало шоком, когда 400 миллионов долларов TVL влились в протокол за один день. Но всего через два дня после запуска Yam Finance рухнул.

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

Команда сплотила сообщество, чтобы делегировать все свои YAM для голосования, но результата было недостаточно. Соучредитель Брок Элмор написал в Твиттере, что его «тошнит от горя». Yam Finance живет всего на 200 тысяч долларов в TVL. Урок, который он преподает, заключается в том, что протокол DeFi может стать вирусным настолько быстро, что не будет времени искать ошибки и исправлять их. Поэтому перед запуском необходимо провести аудит.


Аудит не является гарантией безопасности

Вот несколько примеров:
  1. Компания Grim Finance потеряла 30 миллионов долларов из-за хакера в декабре 2021 года, несмотря на то, что она была проверена Solidity Finance. Выяснилось, что аналитик, ответственный за аудит, был новичком; в то время как аудиторы обычно проверяют работу друг друга, команда была «перегружена», и процесс рецензирования не прошел должным образом. К чести Solidity, это был лишь второй эксплойт среди более чем 900 проверенных ими проектов.
  2. Злоумышленник может украсть/фишировать ключ кошелька вместо взлома контракта. Именно это произошло с bZX (потеря 55 миллионов долларов) и EasyFi (90 миллионов долларов). В последнем случае преступник получил доступ к кошельку MetaMask самого генерального директора протокола.
  3. Некоторые эксплойты используют дыры в стороннем dApp (непроверенном) для атаки на другой интегрированный с ним протокол.
  4. Будущие изменения в блокчейне. По мере того, как цепочка, в которой работает dApp, обновляется, могут возникать новые векторы атак.

По всем этим причинам аудиторские соглашения и отчеты всегда включают заявление об отказе от ответственности. С точки зрения команды dApp, лучший способ минимизировать эти риски — пройти несколько независимых аудитов — если хотите, иметь «избыточный аудит».

Это является стратегией Pontem Network, поскольку команда проекта хочет, чтобы их dApps для Aptos были самыми безопасными в экосистеме. Несмотря на то, что аудиторы в Ottersec не обнаружили никаких уязвимостей в Pontem Wallet, сейчас команда Pontem работает с Халборном над другим обзором, третий на подходе.

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

Посмотрите последние прямые трансляции Pontem AMA с участником Core Protocol Алехо Пинто, чтобы узнать больше о безопасности в Pontem Wallet и Aptos. И не забудьте подписаться на проект в Twitter и Telegram , чтобы быть в курсе последних новостей о процессе аудита!

Хорошее чтиво? То ли ещё будет. До свидания!


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