Что такое аудит блокчейн кода?
Аудит смарт-контрактов — важный шаг перед запуском dApp: сторонние аудиторы могут найти уязвимости, которые может пропустить сама команда. Аудиты проводят с использованием как автоматических инструментов, так и тщательного ручного анализа позволяют предотвратить большинство взломов. Узнайте, как проводится аудит и почему не стоит вкладывать деньги в не прошедшие аудит протоколы.
В двух Словах
- Процесс аудита состоит из анализа проекта, автоматизированного тестирования, ручного анализа кода и экспертной оценки. После этого составляется подробный отчет со списком обнаруженных уязвимостей и рекомендациями по их устранению.
- Автоматизированные инструменты тестирования смарт-контрактов позволяют найти такие распространенные уязвимости, как реентрантность (reentrancy), перенаправление транзакций (transaction reordering), переполнение (overflow) и зависимость от метки времени. Наиболее популярными инструментами являются Mythril, Manticore, Slither и Oyente.
- Автоматическое тестирование экономит много времени, но может пропустить ошибки в коде или дать ложные срабатывания. Поэтому необходим ручной построчный анализ кода.
- Большинство аудиторских фирм работают с Solidity и сетями EVM, а также с Solana, но некоторые, например OtterSec и Halborn, уже работают с Move. Move — гораздо более безопасный язык, чем Solidity, но dApps на Move все еще нуждаются в аудите: например, Pontem Wallet проходит уже третий аудит.
- Не прошедшие аудит dApps являются распространенной мишенью для хакеров — или они могут просто разрушиться из-за внутренней ошибки. Яркими примерами являются Nomad, Beanstalk и Yam Finance.
- Ведущие аудиторы смарт-контрактов включают Hacken, OtterSec, CertiK, ConsenSys Diligence, Halborn и Quantstamp.
Что такое аудит смарт-контракта и почему он так важен?
Аудит блокчейн кода или смарт-контракта — это анализ кода блокчейна или dApp, проводимый либо его создателями, либо сторонним аудитором, целью которого является поиск ошибок, уязвимостей и багов.
Безопасность блокчейна является частью знаменитой трилеммы Виталика Бутерина: безопасность, масштабируемость и децентрализация. Эти три важнейших аспекта сети или dApp должны удерживаться в равновесии.
Как и любой программный проект, криптовалюта dApp должна работать надежно и стабильно, иначе клиенты быстро потеряют веру в нее. Но в случае с блокчейном ставки возрастают, поскольку в dApp могут храниться сотни миллионов долларов ликвидности — и все эти деньги могут быть выведены за одну атаку, если хакер найдет лазейку в коде контракта.
Ключевым методом предотвращения этого является аудит кода, предоставляемый сторонним лицом. Мы рассмотрим, как устроен аудит смарт-контрактов, какие уязвимости он может обнаружить, какие фирмы работают в этой области и, наконец, как пропуск аудита может привести к катастрофическим потерям.
Аудит блокчейна за 5 шагов
- Анализ проекта и анализ кода верхнего уровня
Команда внешнего аудита должна получить хорошее представление о проекте: его архитектуре, бизнес-логике, практическом применении и т.д. Многие крупные DeFi эксплойты нацелены на дыры в логике приложения или экономические уязвимости. Замечательно, когда проверяющий может указать на такие логические недостатки, хотя это может выходить за рамки собственно аудита смарт-контрактов.
Клиент также должен описать цели аудита, как должны проводиться тесты, какие сценарии использования должны быть протестированы, и другую ключевую информацию.
Далее команда аудиторов читает весь репозиторий, чтобы понять, как реализована логика dApp.
2. Автоматизированное тестирование
Программных инструментов для тестирования смарт-контрактов по-прежнему не так много, и почти все они предназначены для сетей Solidity и EVM. Они не могут найти недостатки в бизнес-логике или токеномике, но экономят аудиторам много времени. Наиболее популярными из них являются:
Mythril by ConsenSys — мощный инструмент с открытым исходным кодом, обнаруживающий множество критических ошибок; входит в пакет услуг безопасности MythX.
![](https://assets.matters.news/embed/c162377c-bcdf-47fb-ae45-56f1105e80a4.png)
- Manticore — инструмен, который проходит через различные сценарии атак, подавая символьные входы, чтобы проверить, приведут ли они к краху dApp; находит входы, которые приведут к конкретной ошибке; выясняет, что вызвало конкретный крах и т.д.
- Slither — быстрый и простой в использовании чекер, который выделяет критические уязвимости и предлагает исправления.
- Oyente — созданный в 2016 году, этот инструмент не обновлялся уже несколько лет, но по-прежнему получает хорошие отзывы за точность.
Общие уязвимости
Программное обеспечение для аудита смарт-контрактов может обнаружить множество видов уязвимостей, включая:
- реентерабельность (reentrancy)- злоумышленник многократно вызывает функцию withdraw, чтобы перекачать средства из уязвимого смарт-контракта во вредоносный.
- переназначение (reordering ) — злоумышленник добивается выполнения своей транзакции раньше других транзакций в очереди, чтобы манипулировать ценой (так называемый front-running).
- переполнение и невыполнение (overflow и underflow) — отправка неверных данных, чтобы заставить смарт-контракт совершить ошибку в расчетах (результат либо больше допустимого верхнего предела, либо меньше нижнего). В результате злоумышленник может намайнить огромное количество токенов.
- зависимость от временной метки (timestamp dependency)- злоумышленник передает в контракт неверную временную метку, чтобы создать впечатление, что его транзакция произошла в определенный момент (например, чтобы выиграть аукцион или лотерею).
- воспроизведение (replay) — перехват и последующая повторная отправка данных в блокчейн (может использоваться для кражи средств во время событий форка).
3. Ручной построчный анализ и тестирование кода
Этот этап помогает найти все ошибки, пропущенные автоматическими инструментами. Он также выявляет ложные срабатывания: фрагменты кода, которые автоматические программы аудита ошибочно отметили как уязвимости.
Аудит может выявить уязвимости разного уровня серьезности: критического уровня (позволяет злоумышленнику украсть токены, сломать dApp и т.д.), среднего уровня (потенциальный ущерб ограничен) и низкого уровня (все еще является ошибкой, но создает небольшой риск финансового или структурного ущерба).
![](https://assets.matters.news/embed/d5e5ac7c-8ea2-43e0-9efd-2dce3ed9b750.png)
4. Коллегиальная проверка
В идеале для обеспечения максимальной уверенности вам нужно несколько аудиторов. Иногда аудиторы работают в командах и анализируют код вместе, так что экспертная оценка происходит в одно и то же время.
Продолжайте читать, чтобы узнать о рисках, связанных с отказом от проведения экспертной оценки.
5. Аудиторский отчет
Наконец, результаты проверки сводятся в многостраничный отчет, который передается клиенту. В нем содержится список обнаруженных ошибок, а также рекомендации по их устранению и дальнейшему повышению безопасности проекта.
Стандартной практикой в блокчейне является обнародование отчетов об аудите: на самом деле это хороший маркетинговый инструмент для проектов, поскольку он демонстрирует безопасность и прозрачность dApp. Конечно, если будут найдены какие-либо критические уязвимости, проект обычно устраняет их в первую очередь.
![](https://assets.matters.news/embed/802584f1-b154-43c5-95ff-d1123d7f3f3a.png)
Раздел отчета по аудиту Reef protocol, проведенному Хэлборном
Проблема аудита смарт-контрактов в Move vs. Solidity
Как мы уже объясняли в нашей статье о виртуальной машине Ethereum, смарт-контракты EVM и Solidity трудно отлаживать, и у них много проблем с безопасностью. Добавьте к этому доминирование цепочек EVM (9 из 10 лучших блокчейнов по версии DeFi TVL используют EVM), и вы поймете, почему индустрия смарт-контрактов так сосредоточена на Solidity. У него есть и преимущество первого игрока, и множество уязвимостей, которые требуют аудита.
Когда вы переходите от экосистемы Ethereum/EVM к альтернативной среде блокчейна, такой как Move, вы сталкиваетесь с очень интересной проблемой. С одной стороны, язык Move и Move VM гораздо безопаснее, чем Solidity и EVM. Например, контракты Move устойчивы к атакам реентерабельности.
С другой стороны, dApps на базе Move все равно должны проходить аудит — а специалистов по безопасности блокчейна, работающих с этим языком, пока не так много. Аудиторы Pontem Wallet — OtterSec и Halborn — являются одними из первопроходцев, а сам Pontem Wallet — один из первых полностью проверенных dApp на Aptos, чем мы очень гордимся.
Кстати, наш аудитор OtterSec опубликовал очень интересный пост в блоге о том, как создавать более безопасные dApps с помощью Move, и в качестве примера используется код нашего Liquidswap DEX!
![](https://assets.matters.news/embed/d26fa9ba-4a8f-4efc-a3ea-d51e6bfd570c.png)
Лучшие компании по аудиту смарт-контрактов
Созданная в 2017 году, компания Hacken проводит аудит целых протоколов блокчейн, смарт-контрактов и dApps. Фирма также курирует программы “bug bounty” для таких платформ, как CoinGecko.
Hacken работает с широким спектром блокчейнов: EVM chains, 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, Saber, Raydium, Solend, Socean, а также Anchor, LayerZero и Proximity на NEAR.
![](https://assets.matters.news/embed/21de7899-1987-403a-a159-70f906accad4.png)
Более того, это одна из немногих аудиторских фирм, занимающихся аудитом блокчейна, которая работает с новым языком программирования Move, используемым Aptos и Sui. OtterSec завершила первый аудит нашего кошелька Pontem для Aptos, а также кошелька Hippo.
У OtterSec также есть отличный блог с экспертными советами по безопасности смарт-контрактов, особенно по Solana.
Компания Zellic была основана всемирно известной командой whitehat хакеров под названием Perfect Blue. В 2020 и 2021 годах они были признаны командой №1 в мире по CTF (захват флага), участвуя в таких мероприятиях по кибербезопасности, как Google CTF и Def Con CTF.
Компания известна своей скоростью исполнения и способностью находить скрытые уязвимости. Ее инженеры по безопасности выявляют не только кодовые, но и экономические и бизнес-логические недостатки.
Среди клиентов Zellic — Aptos Labs, Solana Foundation, LayerZero, SushiSwap, 1inch, Wormhole и др.
![](https://assets.matters.news/embed/750d18a1-c254-4452-848c-802650d33dba.png)
CertiK известен прежде всего своей таблицей лидеров безопасности блокчейна, где 3000+ проектов ранжируются по степени доверия. Аудиты безопасности являются дополнительной областью специализации CertiK, наряду с тестированием на проникновение (попытки любыми и всеми способами проникнуть в части системы, доступ к которым запрещен), KYC, исправлением ошибок, мониторингом цепочки и отслеживанием кошельков.
CertiK провела 1800+ аудитов для протоколов Ethereum, Avalanche, BNB Chain, Solana, Algorand, NEAR и Cosmos. Это надежный поставщик аудита для Binance, The Sandbox, Huobi и OKex.
Компания Halborn была создана этичными (white-hat) хакерами в 2019 году и сейчас включает в себя 50+ профессионалов в области безопасности блокчейна. Помимо аудита смарт-контрактов, компания специализируется на консалтинге в области безопасности, тестировании на проникновение и автоматизации безопасности.
Halborn работал с такими популярными проектами, как Polygon, Solana, Thorchain, Bancor, Pangolin, Reef, Sushi, BlockFi, Polkadex и даже Bored Apes Yacht Club. Он также является одним из аудиторов Pontem Wallet, первого кошелька для блокчейна Aptos.
Мы рекомендуем блог Хэлборна, в котором представлены вскрытия недавних взломов DeFi и глубокое погружение в наиболее распространенные типы атак на блокчейн.
![](https://assets.matters.news/embed/814c664f-c44e-4aa1-b4af-407dcebf877c.png)
Zokyo — это фирма, занимающаяся комплексной безопасностью, в команде которой работают известные этичные хакеры. Она специализируется не только на аудите смарт-контрактов, но и на тестировании на проникновение, обнаружении утечек данных, оценке баз данных и аудите уязвимостей CMS.
Zokyo работала с десятками крупных блокчейн-проектов, включая Fuse, yearn.finance, LayerZero, Qredo, CPRX, Shoyu, Badger DAO, ShapeShift и др. Более того, инженеры по безопасности Zokyo входят в число самых рейтинговых участников программ “bug bounty”, проводимых Twitter, Facebook и Uber.
![](https://assets.matters.news/embed/9ef2c692-62d5-4dbb-9903-310499ebcc71.png)
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.
3 DeFi dApps, которые потерпели крах из-за того, что не провели аудит смарт-контрактов
На не прошедшем аудит DeFi dApp, в котором хранятся миллионы долларов, по сути, нарисована мишень с надписью “Взломай меня”. И даже если он не эксплуатируется третьей стороной, он может стать жертвой внутренних проблем с кодом. Вот три истории, которые показывают последствия пропуска аудита.
Nomad bridge: $200 млн ушли в свободное плавание
Nomad — это мост, соединяющий Ethereum, Evmos, Moonbeam, Avalanche и протокол Milkomeda. По словам главы отдела безопасности Paradigm @samczsun, эксплойт от 2 августа был нацелен на недавнее обновление Nomad, которое не было проверено.
3/ Моей первой мыслью было, что произошла какая-то ошибка в настройке десятичных дробей токена. В конце концов, казалось, что мост проводит акцию “отправь 0,01 WBTC, получи 100 WBTC обратно” pic.twitter.com/H9IOJRYB0G
- samczsun (@samczsun) 1 августа 2022 г.
Ошибка в контракте позволила пользователям отправлять небольшие суммы WBTC из Moonbeam и получать обратно в 10 000 раз больше WBTC в Ethereum. Для этого не нужно было быть кодером: достаточно было просто скопировать-вставить.
По мере распространения новостей о лазейке все больше и больше людей присоединялись к свободной игре. Это был не взлом одного человека, а скорее хаотичная, оппортунистическая атака по 41 адресу. В общей сложности было потеряно около 200 миллионов долларов — вся ликвидность, хранившаяся в мосте.
Nomad заявил, что будет работать с фирмами, занимающимися безопасностью блокчейна, чтобы отследить и вернуть деньги. Однако, возможно, ей следовало бы привлечь специалистов по безопасности блокчейна, прежде чем продвигать не прошедшее аудит обновление контракта в основной сети!
Beanstalk: взломан на 180 миллионов долларов через флэш-кредит
Beanstalk — это децентрализованный стейблкоин на Ethereum. Вместо использования залога для поддержания привязки BEAN, он использует кредит, поощряя держателей одалживать свои 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. Но код, содержащий уязвимость флэш-кредитов, был добавлен позже без аудита. Урок заключается в том, что аудит смарт-контрактов — это непрерывный процесс: каждая новая функция должна быть проверена.
Yam Finance: на 99% не работает из-за ошибки
Проект Yam Finance, запущенный в августе 2020 года, был ранним экспериментом по ребейсингу: предложение YAM увеличивалось или уменьшалось в зависимости от цены. Проект выплачивал вознаграждения за высокодоходное фермерство, но что действительно привлекало пользователей, так это милые эмодзи и мемы про картофель ям (YAM = YFI + Ampleforth, два протокола DeFI, идеи которых позаимствовал Yam Finance).
Весь проект был реализован всего за 10 дней, пока основатели “обкатывали идеи”. Поскольку это был всего лишь эксперимент, команда развернула Yam Finance без аудита. Это стало шоком, когда за один день в протокол влилось 400 миллионов долларов.
Но всего через два дня после запуска Yam Finance потерпел крах. Причиной стала ошибка в функции rebase: контракт майнил слишком много YAM для определенного пула на Uniswap. Большая часть этих YAM была отправлена в казну, что, в свою очередь, сделало модуль управления непригодным для использования, поскольку количество YAM у пользователей стало недостаточным для достижения кворума для любого голосования.
Потенциальное решение было найдено, но его нужно было проталкивать через голосование DAO. Команда призвала сообщество делегировать все свои YAM для голосования, но результата оказалось недостаточно. Сооснователь Брок Элмор написал в Твиттере, что он “болен горем”.
простите все. я потерпел неудачу. спасибо за безумную поддержку сегодня. я болен от горя.
- Брок🌱 (@brockjelmore) 13 августа 2020 г.
Yam Finance продолжает жить, имея всего 200 тысяч долларов в TVL. Урок заключается в том, что протокол DeFi может стать вирусным настолько быстро, что не будет времени на поиск ошибок и их исправление. Перед запуском необходимо провести аудит.
Аудит не является гарантией безопасности
Единичный аудит смарт-контракта никогда не является 100% гарантией того, что проект не будет эксплуатироваться — по нескольким причинам:
1. Например, компания Grim Finance потеряла 30 миллионов долларов из-за хакера в декабре 2021 года, несмотря на то, что ее аудит проводила компания Solidity Finance.
Оказалось, что аналитик, ответственный за аудит, был новым; хотя аудиторы обычно проверяют работу друг друга, команда была “перегружена”, и процесс экспертной оценки не прошел должным образом. К чести Solidity, это был всего лишь второй случай эксплуатации среди 900+ проектов, которые они проверили.
2. Атакующий может украсть/подделать ключ кошелька вместо того, чтобы взломать контракт. Именно это произошло с bZX (потеряно 55 миллионов долларов) и EasyFi (90 миллионов долларов). В последнем случае преступник получил доступ к кошельку MetaMask самого генерального директора протокола.
3. Некоторые эксплойты используют дыры в стороннем dApp (неаудированном) для атаки на другой интегрированный с ним протокол.
4. Будущие изменения в блокчейне. По мере обновления сети, на которой работает dApp, могут возникать новые векторы атак.
По всем этим причинам соглашения и отчеты об аудите всегда содержат отказ от ответственности. С точки зрения команды dApp, лучший способ минимизировать эти риски — пройти через несколько независимых аудитов — иметь “избыточность аудита”, если хотите.
Это наша стратегия в Pontem Network, поскольку мы хотим, чтобы наши dApp для Aptos были самыми безопасными в экосистеме. Несмотря на то, что наши аудиторы из Ottersec не нашли никаких уязвимостей в Pontem Wallet, мы сейчас работаем с Halborn над еще одной проверкой, а третья проверка уже на подходе.
Конечно, это несколько замедляет процесс масштабирования, но мы считаем, что безопасность пользователей является более приоритетной задачей, чем быстрый рост. В конце концов, мы создаем набор основополагающих dApp для экосистемы, которая может принять первый миллиард пользователей блокчейна, а сам Aptos является самым безопасным блокчейном L1 в мире. Поэтому вполне уместно, что мы уделяем первостепенное внимание безопасности”.
Посмотрите последние прямые трансляции AMA Pontem с разработчиком основного протокола Алехо Пинто, чтобы узнать больше о безопасности в Pontem Wallet и Aptos. И не забудьте следить за нами в Twitter и Telegram, чтобы узнать больше о процессе аудита!
Автор CryptoRomb Так-же у него есть одноименный телеграмм канал, советую подписаться=)
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
![](https://imagedelivery.net/kDRCweMmqLnTPNlbum-pYA/prod/avatar/27733468-35c8-4422-8d73-7fd316aa812e.png/public)
- 来自作者
- 相关推荐