BTC/USD 59981.72 1.42%
ETH/USD 2308.27 -0.16%
LTC/USD 63.69 1.70%
BRENT/USD 73.55 0.86%
GOLD/USD 0.00 0.00%
RUB/USD 91.43 0.31%
Tokyo
Moscow
New-York

Защита криптовалют c помощью аудита смарт-контракта и багхантинга

0
Автор материала: Дмитрий Токарев

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Заказчик отправляет свой проект на платформу.
  2. Хакеры находят ошибки и отправляют отчеты о них.
  3. 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. Следовательно, нет необходимости заказывать аудит смарт-контракта отдельно. Гораздо удобнее, когда техническая, юридическая и правовая сторона проекта тестируется одной командой. Это уменьшает риски, связанные с нарушением принципов ответственного раскрытия уязвимостей, и снимает с заказчика ряд проблем, включая написание отчета о тестировании.

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

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

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

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

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