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


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

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

Взлом смарт-контрактов — распространенное явление в криптомире. Причины краха делятся на два вида: технические уязвимости кода и человеческий фактор. Если возможность человеческой ошибки исключить довольно тяжело, технические недочеты должны быть устранены полностью. Помочь в этом может комплексный внешний аудит блокчейн-проекта или специальные программы 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 прост:

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

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

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

https://bitcryptonews.ru/ (C) Источник
Не является индивидуальной инвестиционной рекомендацией
При копировании ссылка обязательна Нашли ошибку: выделить и нажать Ctrl+Enter