Москва C

Зачем проводить аудит смарт-контрактов и багхантинг

Зачем проводить аудит смарт-контрактов и багхантинг

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

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

Почему важно проводить внешний аудит

Начнем с того, что криптомир характеризуется децентрализацией и открытостью. Практически все криптопроекты обязаны публиковать исходный код на github для того, чтобы доказать чистоту и прозрачность функционирования своей платформы, криптовалюты, токена, ICO. Допустим, качественный блокчейн-проект выходит на ICO, но не предоставляет результаты тестирования кода смарт-контракта и внешнего аудита ICO. Естественно, доверие к такой кампании будет минимальное, так как у инвесторов нет гарантий сохранения вкладов. В результате разработка точно не попадет в топ ICO-проектов и получит плохие рекомендации от экспертов, несмотря на инновационность идеи. Нет гарантий – нет инвестиций.

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

Поиск уязвимостей через Bug Bounty (багхантинг)

Название говорит о концепции метода – за каждую найденную слабость кода выплачивается вознаграждение. Поиск уязвимостей за деньги уже давно успешно применяется различными компаниями, в том числе крупными: Microsoft, Facebook, Google, Reddit. Даже Пентагон проводил внешний аудит с помощью Bug Bounty и выплатил более $70 000 за найденные ошибки.

Программы Bug Bounty делится на 3 вида:

1. Ручная программа.

Согласно этому варианту заключается договор, в котором прописаны следующие данные:

  • Исходный код.
  • Модель оценки рисков. Обычно выделяют 4 степени тяжести ошибки: низкая, средняя, высокая, критическая. Для этих целей разработана методология OWASP.
  • Стоимость вознаграждения за каждый тип ошибки.

Также должны быть прописаны условия:

  • Первый, кто нашел ошибку, получает вознаграждение.
  • Соблюдение принципов ответственного раскрытия.

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

  • Найденные проблемы не вознаграждаются дважды.
  • Разработчики кода не имеют права на получение вознаграждения.
  • Дата начала и окончания багхантинга. Обычно этот период не закрывается даже после релиза основной версии проекта.
  • Криптовалютный багхантер должен четко описать механизм воспроизведения ошибки.
  • Исследователь должен использовать свои учетные данные для демонстрации уязвимости.
  • Возможность улучшения кода не является ошибкой.
  • Фишинг не является ошибкой.

Программа называется ручной, так как материалы с найденными ошибками отсылаются вручную, после чего происходит обсуждение. Сумма и способ оплаты также могут оговариваться. Этот метод предполагает большое количество работы по проверке почты на спам, выявлении и отсеивании дублированных ошибок. Хорошим примером организации багхантинга в криптовалютной сфере является кампания Bug Bounty MDC, которую проводит Mediacoin. Заработок на уязвимостях Mediacoin соответствует прайсу:

  • Ошибки интерфейса ? $1.
  • Функциональные ошибки ? $5.
  • Системные ошибки ? $50.
  • Ошибки безопасности ? $500.

Как видим, нахождение самых серьезных ошибок неплохо вознаграждается даже в российских Bug Bounty-кампаниях.

2. Bug Bounty на базе смарт-контракта.

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

Разновидностью этого метода является несоответствие инвариантов, то есть параметров, имеющих неизменяемый характер. Объясним на примере токена.

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

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

3. Платформы для проведения Bug Bounty.

Наиболее известной площадкой багхантинга является HackerOne. Платформа работает еще с 2012 года и на данный момент обладает самым крупным арсеналом исследователей в области информационной безопасности.

Принцип работы HackerOne прост:

Заказчик отправляет свой проект на платформу. Хакеры находят ошибки и отправляют отчеты о них. HackerOne обрабатывает все отчеты и выдает заказчику только те варианты, которые необходимо оплачивать. За эту работу платформа берет комиссию.

В 2017 году была объявлена новая версия HackerOne Community Edition, которая обещает публиковать Bug Bounty проектов с открытым исходным кодом бесплатно. Комиссия в размере 20% взимается на этапе проведения оплаты между заказчиком и хакером.

Платформа координирует передачу данных об ошибках, автоматизирует работу с дубликатами заявок, проводит аналитику и создает план для разработки Bug Bounty.

HackerOne работает с Facebook, Twitter, Adobe, Лабораторией Касперского и другими известными компаниями. Один из примеров работы с блокчейном – Bug Bounty кошелька blockchain.info. Заработок на Hackerone для этой кампании следующий:

  • Ошибка низкого уровня риска ? $50.
  • Среднего уровня ? $400.
  • Высокого уровня ? $1600.
  • Критического уровня – более $1600.

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

Комплексный внешний аудит

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

В отчет аудита смарт-контракта должны входить результаты следующих проверок:

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

В случае обнаружения уязвимостей указываются способы их устранения.

Статьи
0
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.

0 комментариев

Ваше имя: *
Ваш e-mail: *