Многие разработчики отдают свои криптопроекты на аудиты, чтобы доказать инвесторам их безопасность. При этом в сети регулярно появляются сообщения об эксплойтах проверенных аудиторами систем. Редакция BeInCrypto решила выяснить, дают ли аудиты какие-либо гарантии и стоит ли криптопроектам проходить такие проверки.
Контекст
Недоказанная безопасность – одна из проблем, с которыми сталкиваются разработчики блокчейн-проектов и их инвесторы. На фоне стремления команд платформ снизить риски и повысить уверенность пользователей в стабильности сервисов на рынке появились предложения от аудиторов.
Профессионалы обещают разработчикам проверку кода на уязвимости. Такие исследования, особенно если заключение оказалось позитивным, могут повысить интерес инвесторов к проекту.
К сожалению, статистика показывает, что подобные аудиты часто создают лишь видимость отсутствия рисков. Многие прошедшие аудит проекты сталкиваются с прорывами систем безопасности. Вот лишь небольшая часть общего списка платформ, к деньгам которых, несмотря на старания аудиторов, добрались мошенники:
Редакция BeInCrypto решила выяснить, стоит ли криптокомпаниям, учитывая недоказанную эффективность аудитов, проходить такие проверки. Разобраться в вопросе нам помог эксперт.
Аудиты криптопроектов: взгляд эксперта
Редакция BeInCrypto поговорила о целесообразности прохождения аудитов криптокомпаниями с блокчейн-разработчиком и аудитором смарт-контрактов компании telescr.in, известным в криптосообществе под ником Gettocat.
BIC: Как выглядит процесс аудита криптопроектов? Из каких этапов состоит работа аудитора?
Чтобы ответить на вопрос, нужно коротко описать, что из себя представляет смарт-контракт и основанная на виртуальной машине Ethereum (EVM) сеть.
Ethereum представляет собой большой вычислительный компьютер, в котором одновременно запущено множество программ (смарт-контрактов). У каждого смарт-контракта есть свое внутреннее состояние:
- Состояние памяти state-переменных, которые хранятся в блокчейне.
- Память и стек. Они хранятся только в процессе любого вызова или создания контракта.
Любое изменение этих переменных внутри вызова контракта создает транзакцию, которая записывает изменение в блокчейне и сигнализирует всем остальным участникам о том, что это изменение произошло. При этом считывать значения в любой момент напрямую из блокчейна можно и без создания транзакций.
Опускаемся на уровень ниже. Контракт – это список инструкций, которые исполняются в зависимости от данных, поданных пользователем в контракт. Стоимость каждой инструкции описана в исходном коде виртуальной машины Ethereum. Такие инструкции называются байткодом. Они очень похожи на то, что происходит внутри компьютера при выполнении какой-либо программы, поэтому аналогия с компьютером тут подходит. Каждая инструкция сама по себе довольно примитивна.
Аудит сводится к нескольким этапам:
- визуальный анализ кода и изучение документации проекта;
- анализ кода на низком уровне с использованием специального софта;
- тестирование контракта на локальной сети.
Обычно разработчик ищет список из стандартных уязвимостей, странное поведение контракта, а также логику, позволяющую вытаскивать средства из контракта в обход основной логики работы. Кроме этого аудитор, по возможности, старается удешевить работу с контрактом для пользователей, подсказывая разработчикам более эффективный способ выполнения тех или иных операций.
После завершения процесса мы составляем отчет. В нем описываем все, что было найдено в процессе аудита, а также даем рекомендации по исправлению.
Черновик отчета отправляем заказчику на согласование. Далее происходит процесс редактирования. На этом этапе разработчики исправляют, при необходимости, пункты отчета, а команда аудиторов перепроверяет код еще раз. После мы составляем новый отчет. Этот процесс может состоять из 10 и более итераций, если потребуется, и это входит в стоимость аудита. Когда по мнению заказчика все недочеты исправлены, мы подписываем финальную версию отчета.
BIC: Как часто разработчики прибегают к аудитам безопасности? Много ли команд, которые игнорируют аудиты, чтобы сэкономить?
Как правило, сами разработчики редко приходят к такой мысли. Обычно заказчик контракта сам решает проверить разработчиков на злонамеренные вмешательства в код, которые позволили бы им украсть средства. Чтобы выявить уязвимости, он прибегает к третьей стороне – аудиторам. Также заказчики прибегают к аудитам, чтобы доказать инвесторам и партнерам отсутствие злого умысла.
Аудиторы смарт-контрактов схожи с Quality Assurance инженерами в сфере разработки ПО – тестировщиками. Сейчас это набирающая популярность сфера.
К сожалению, не все стартапы пользуются аудитом (в основном из-за экономии), что приводит к печальным последствиям. Довольно часто возникает ситуация, когда в ходе брифинга заказчик приходит к тому, что аудит – это дорого, и отказывается от затеи.
BIC: Сколько стоит провести аудит? От чего зависит итоговая стоимость работ?
Из-за сложности данной сферы (необходимо часто вникать в чужой исходный код и, в идеале, уметь читать код на низком уровне) и необходимости в высококвалифицированных специалистах, стоимость аудитов довольно высока.
Стоимость аудита начинается от $1000 за относительно простой контракт и выше. Говоря проще – цена рассчитывается, исходя из сложности и объема исходного кода. Итоговый ценник сильно зависит от используемых библиотек. Например, есть два крупных контракта. В первом контракте использовали проверенные библиотеки от известных вендоров, а во втором – самописный код. Во втором случае цена будет выше в несколько раз.
BIC: Как вы считаете, нужно ли обязать криптопроекты проходить аудиты?
Мое мнение – да. Это должно стать неким стандартом, ведь мы говорим о сфере, где почти все стартапы связаны с финансами. Аудиты особенно актуальны, когда нет гарантий безопасности и третьей стороны, которая, в случае чего, может все отменить.
Контракт – это не банк. Тут нет поддержки, куда можно постучаться в случае ошибки. Когда лично мне приходится пользоваться децентрализованными приложениями, я всегда сначала выясняю, есть ли у них аудит безопасности от более-менее известной в кругах компании.
BIC: В сети регулярно появляются новости о прорывах систем безопасности криптопроектов, которые проходили аудиты. Получается, что такие проверки не дают никаких гарантий безопасности? Или проблема в том, что некоторые аудиторы невнимательно изучают проекты?
Зависит от многих факторов. Не всегда уязвимости связаны непосредственно с контрактами. Иногда это могут быть ошибки на стороне самого приложения – в так называемом бэкенде. Также не стоит исключать утерянный доступ к кошелькам с расширенным доступом к контракту. Но бывают и случаи, когда действительно аудиторы проглядели, либо разработчики не до конца рассказали о функционале.
Обычно аудиторы выступают гарантами работоспособности исходного кода, и гарантируют они это своей репутацией. Поэтому в правильно выстроенных аудит-проектах есть ревьюеры (те, кто перепроверяют аудит перед публикацией). Такие участники схемы снижают вероятность ошибки. В среде информационной безопасности обычно говорится, что нет 100% защиты от взлома, обычно взлом – вопрос цены.
BIC: Могут ли компании, которые заказывали аудит, выдвинуть претензии аудиторам в случае, если они столкнулись с прорывом систем безопасности после прохождения проверки?
Да, такое возможно, и каждый такой случай подлежит тщательному изучению. Обычно, на каждый такой случай пишется специальный документ, называемый «postmortem», в котором описывается причина возникновения уязвимости. По сути это целое расследование, описывающее что и как привело к уязвимости. На основании этого документа ищут источник уязвимости. После можно определить последующие санкции.
Если расследование доказывает, что аудитор проглядел уязвимость, обычно возвращается гонорар аудиторов и страдает его репутация. В крупных компаниях есть некий страховой бюджет на такой случай. Такие организации могут выплачивать компенсацию за взлом. При этом стоит понимать, что аудит у таких компаний будет стоить в разы дороже рынка.
BIC: Даете ли вы, как аудитор, какие-либо гарантии?
Мы всегда стараемся выполнять нашу работу так, чтобы не было необходимости прибегать к гарантийным вопросам. Но в случае, если postmortem покажет, что это полностью наша ответственность – мы гарантируем возврат гонорара за аудит с последующей публикацией во всех наших соцсетях результатов проверки, потому что стараемся быть честными с нашей аудиторией и дорожим своей репутацией.
Есть что сказать? Напишите нам или присоединяйтесь к дискуссии в нашем Телеграм-канале.
Согласно правилам Trust Project, данная статья отражает точку зрения автора и может не совпадать с мнением редакции BeInCrypto. Политика BeInCrypto — освещать любые события беспристрастно и соблюдать высочайшие стандарты журналистики. BeInCrypto рекомендует читателям самостоятельно проверять информацию и консультироваться со специалистом, прежде чем принимать любые финансовые решения на основе этого контента. Также обратите внимание, что наши «Условия и положения», «Политика конфиденциальности» и «Дисклеймеры» были обновлены