Код доступа: взламывать ли смарт-контракт, чтобы украсть инвестиции? - «Финансы» » Финансы и Банки
Создать акаунт

Код доступа: взламывать ли смарт-контракт, чтобы украсть инвестиции? - «Финансы»

28 ноя 2017, 21:00
Финансы
0
0
Код доступа: взламывать ли смарт-контракт, чтобы украсть инвестиции? - «Финансы»
Код доступа: взламывать ли смарт-контракт, чтобы украсть инвестиции? - «Финансы»






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


Для начала разберемся с основными понятиями. Что такое DAO и DApp?


Пример DApp – виртуальная рулетка, логика которой целиком описана в смарт-контракте

DApp (Decentralized Application, распределенное приложение) – один или несколько смарт-контрактов, выполняющих функции доверенного лица между участниками или другими смарт-контрактами. Смарт-контракт – это, по сути, программа. Для того чтобы с ней могли взаимодействовать не только программисты, но и участники распределенного приложения, обычно имеется некий интерфейс, предназначенный для работы из Интернета. Пример DApp – виртуальная рулетка, логика которой целиком описана в смарт-контракте: каждый может «прочитать» условия смарт-контракта и убедиться, что казино его не обманывает.


Пример DAO – децентрализованная биржа на смарт-контрактах

DAO (Decentralized Autonomous Organization, распределенная автономная организация) – масса контрактов, описывающих участников организации (инвесторы, работники, потребители и т. д.), а также протокол взаимодействия между ними. В отличие от DApp DAO больше похожа на организацию, чем на сервис. И меньше зависит от людей (на это, собственно, указывает слово «автономная»). Пример DAO – децентрализованная биржа на смарт-контрактах: нет единой точки отказа, комиссии и вывод денег с биржи прописаны в неизменяемом смарт-контракте.


Почему уязвимости в смарт-контрактах опасны?


Если подпись ничего не гарантирует, ею можно заверить все что угодно

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


А в чем минус? Смарт-контракт – это программа. Программы пишут люди, а они могут ошибаться. Например, последняя крупная уязвимость в смарт-контракте MultiSig-кошелька (как раз туда и отправляются все средства инвесторов при ICO, отсюда такие потери) от Parity оставляет замороженными около 300 млн долларов. Хотя средства все еще находятся в кошельках, воспользоваться ими никто не может, поскольку один из разработчиков «убил» контракт-библиотеку, которую все эти кошельки используют, тем самым нарушив логику их работы.


Большой части сообщества это пришлось не по нраву, и была создана альтернативная валюта – Ethereum classic

Неужели ничего нельзя сделать? Можно. Вопрос в том, какой ценой. Широкую известность получил прошлогодний инцидент с TheDAO, когда разработчики выпустили новую версию клиента (кошелька) для Сети, в которой, грубо говоря, было прописано, что никто ничего не украл. Это стало прямым нарушением принципа неизменяемости блокчейна. Большой части сообщества это пришлось не по нраву, и была создана альтернативная валюта – Ethereum classic, развивающаяся и поныне.


Векторы атак


Взламывая смарт-контракт, злоумышленник получает прямой доступ к средствам. Однако фокусирование внимания только на нем может стать фатальной ошибкой. Здесь есть варианты. Как уже упоминалось, для взаимодействия со смарт-контрактом нужен некий интерфейс. И в этом плане пока нет варианта проще, чем веб-сайт. Поэтому для таких интерфейсов актуальны все те же атаки и уязвимости, что и для обычных веб-сайтов, которые вы посещаете каждый день.


Даже если на сайте нет никаких кнопок для совершения трансакций, а всего лишь записан адрес для ICO, такой веб-сайт также нужно относить к разряду интерфейсов (может быть, даже больше, чем другие).


Вот типичные векторы атак, реально или потенциально используемых с целью подмены адреса для ICO

Вот типичные векторы атак, реально или потенциально используемых с целью подмены адреса для ICO:


  • Фишинг – поддельный сайт, как две капли воды похожий на оригинал, с одним исключением: оригинальный адрес заменен адресом злоумышленника.

  • XSS – внедрение jаvascript-кода на страницу. Если злоумышленник может выполнять свой js-код на странице другого пользователя, то он способен делать все то же самое, что и пользователь. И даже больше – например, подменить какую-то информацию на странице.

  • Site Defacement – сайт уже взломан через одну из десятков различных уязвимостей, и если злоумышленник захватил управление бэк-эндом, он может контролировать всё, что видят пользователи на странице, в том числе и тот самый адрес.

  • Слабые пароли – стойкий пароль необходим не только аккаунту хостинг-провайдера, на котором крутится сайт, но и для защиты аккаунтов в соцсетях, смежной инфраструктуры компании, личных компьютеров разработчиков, директоров, PR-службы и т. д. Все эти узлы являются доверенными, и информации, поступающей от них, верят многие пользователи, даже когда она является противоречивой.

Digital Security удалось на практике продемонстрировать наличие опасных проблем в смарт-контрактах через реализацию собственного проекта «хакерского» ICO. Это не совсем обычное ICO прошло перед конференцией по кибербезопасности ZeroNights 2017. Мы не ставили целью привлечение средств, хотя в пересчете на фиатные деньги и собрали 32 тыс. долларов. Основная идея проекта заключалась в том, что в нашем ICO могли принять участие только хакеры, которые должны были его взломать. Чтобы получить возможность покупать HACK-коины, участникам ICO нужно было проэксплуатировать несколько уязвимостей и в самом смарт-контракте, и в интерфейсе. В итоге купить коины смогли как минимум пять человек. Тройка первых за свои коины получила приглашения на конференцию ZeroNights 2017.


Как защититься?


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


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


  • Следование лучшим практикам при написании смарт-контрактов и заимствование чужого кода, прошедшего «боевую» проверку.

  • Проведение аудита кода. Цена ошибки слишком высока, а исправить ее может быть невозможно или слишком поздно.

  • Проведение открытых программ по поиску уязвимостей – очень хорошая идея, в том числе потому, что награду можно назначить в коинах, которые будет выпускать данный контракт (если речь про ICO).

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


Почему уязвимости в смарт-контрактах очень опасны? На что нужно обратить внимание разработчикам смарт-контрактов на платформе Ethereum, чтобы избежать атак на распределенные организации на блокчейне? Для начала разберемся с основными понятиями. Что такое DAO и DApp? Пример DApp – виртуальная рулетка, логика которой целиком описана в смарт-контракте DApp (Decentralized Application, распределенное приложение) – один или несколько смарт-контрактов, выполняющих функции доверенного лица между участниками или другими смарт-контрактами. Смарт-контракт – это, по сути, программа. Для того чтобы с ней могли взаимодействовать не только программисты, но и участники распределенного приложения, обычно имеется некий интерфейс, предназначенный для работы из Интернета. Пример DApp – виртуальная рулетка, логика которой целиком описана в смарт-контракте: каждый может «прочитать» условия смарт-контракта и убедиться, что казино его не обманывает. Пример DAO – децентрализованная биржа на смарт-контрактах DAO (Decentralized Autonomous Organization, распределенная автономная организация) – масса контрактов, описывающих участников организации (инвесторы, работники, потребители и т. д.), а также протокол взаимодействия между ними. В отличие от DApp DAO больше похожа на организацию, чем на сервис. И меньше зависит от людей (на это, собственно, указывает слово «автономная»). Пример DAO – децентрализованная биржа на смарт-контрактах: нет единой точки отказа, комиссии и вывод денег с биржи прописаны в неизменяемом смарт-контракте. Почему уязвимости в смарт-контрактах опасны? Если подпись ничего не гарантирует, ею можно заверить все что угодно Неизменяемость смарт-контрактов следует из неизменяемости самого блокчейна, в котором они хранятся. Это свойство одновременно является и плюсом, и минусом. Положительный момент заключается в том, что невозможность вносить изменения в смарт-контракт обеспечивает доверие участников сделки друг к другу. Никто в здравом уме не подпишется на условия, которые могут в любой момент измениться. Обратное тоже верно: если подпись ничего не гарантирует, ею можно заверить все что угодно. А в чем минус? Смарт-контракт – это программа. Программы пишут люди, а они могут ошибаться. Например, последняя крупная уязвимость в смарт-контракте MultiSig-кошелька (как раз туда и отправляются все средства инвесторов при ICO, отсюда такие потери) от Parity оставляет замороженными около 300 млн долларов. Хотя средства все еще находятся в кошельках, воспользоваться ими никто не может, поскольку один из разработчиков «убил» контракт-библиотеку, которую все эти кошельки используют, тем самым нарушив логику их работы. Большой части сообщества это пришлось не по нраву, и была создана альтернативная валюта – Ethereum classic Неужели ничего нельзя сделать? Можно. Вопрос в том, какой ценой. Широкую известность получил прошлогодний инцидент с TheDAO, когда разработчики выпустили новую версию клиента (кошелька) для Сети, в которой, грубо говоря, было прописано, что никто ничего не украл. Это стало прямым нарушением принципа неизменяемости блокчейна. Большой части сообщества это пришлось не по нраву, и была создана альтернативная валюта – Ethereum classic, развивающаяся и поныне. Векторы атак Взламывая смарт-контракт, злоумышленник получает прямой доступ к средствам. Однако фокусирование внимания только на нем может стать фатальной ошибкой. Здесь есть варианты. Как уже упоминалось, для взаимодействия со смарт-контрактом нужен некий интерфейс. И в этом плане пока нет варианта проще, чем веб-сайт. Поэтому для таких интерфейсов актуальны все те же атаки и уязвимости, что и для обычных веб-сайтов, которые вы посещаете каждый день. Даже если на сайте нет никаких кнопок для совершения трансакций, а всего лишь записан адрес для ICO, такой веб-сайт также нужно относить к разряду интерфейсов (может быть, даже больше, чем другие). Вот типичные векторы атак, реально или потенциально используемых с целью подмены адреса для ICO Вот типичные векторы атак, реально или потенциально используемых с целью подмены адреса для ICO: Фишинг – поддельный сайт, как две капли воды похожий на оригинал, с одним исключением: оригинальный адрес заменен адресом злоумышленника. XSS – внедрение j

Смотрите также:


Комментарии
Минимальная длина комментария - 50 знаков. комментарии модерируются
Комментарии для сайта Cackle
Яндекс.Метрика Top.Mail.Ru
Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика Яндекс.Метрика