Контакты
Подписка 2023

Смарт-контракты и вопросы безопасности

Александр Подобных, 24/10/22

Смарт-контракт – это приложение, использующее блокчейн и выступающее в качестве цифрового соглашения, подкрепляемого набором правил. Смарт-контракты не являются договорами в юридическом смысле в большинстве юрисдикций, включая российскую. Это всего лишь приложение, удовлетворяющее формальным требованиям и запущенное в распределенной системе блокчейна. Смарт-контракты делают транзакции отслеживаемыми, прозрачными и необратимыми. Результатом выполнения контракта может быть обмен активами между сторонами [1].

Автор: Александр Подобных, CISA, эксперт по кибербезопасности инфраструктуры блокчейнов и противодействию мошенничеству в сфере оборота криптовалют, член АРСИБ

Смарт-контракты имеют обширную область применения не только в финансовом секторе, но и в иных отраслях экономики, и мировой тренд на цифровизацию является одним из основополагающих драйверов развития этого инструмента [2].


Рис 1. Торговое финансирование на основе смарт-контрактов

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

Каждый блокчейн может использовать собственный способ реализации смарт-контрактов. Например, в сети Ethereum для написания смарт-контрактов используется язык Solidity.

С точки зрения разработчика, Solidity легко читается практически любым программистом и на первых шагах обманчиво кажется простым.

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

Неизменность смарт-контрактов

Поскольку смарт-контракты работают в рамках неизменяемой децентрализованной блокчейн-сети, их результаты нельзя подделать ради неправомерного извлечения выгоды. Но неизменность является не только достоинством, но и недостатком. Например, в 2016 г. хакеры взломали децентрализованную автономную организацию The DAO и украли эфиры (валюта сети Ethereum) на миллионы долларов, воспользовавшись уязвимостями в коде смарт-контракта. Поскольку смарт-контракт The DAO был неизменным, разработчики не смогли исправить код.

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

Высокая зависимость от уровня программистов и подверженность багам

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

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

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

  1. Рекурсивный вызов: смарт-контракт совершает вызов к другому внешнему контракту до того, как изменения были зафиксированы. После этого внешний контракт может рекурсивно взаимодействовать с исходным смарт-контрактом недопустимым способом, так как его баланс еще не обновлен.
  2. Целочисленное переполнение: смарт-контракт выполняет арифметическую операцию, но значение превышает емкость хранилища (обычно 18 знаков после запятой). Это может привести к неправильному расчету сумм.
  3. Опережение: плохо структурированный код содержит данные о будущих транзакциях, которые могут быть использованы третьими лицами в своих интересах.

Эффективность смарт-контрактов

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

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

Виртуальная машина Ethereum

EVM (Ethereum Virtual Machine) – это единый глобальный 256-битный "компьютер", в котором все транзакции хранятся локально на каждом узле сети и исполняются с относительной синхронностью.

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

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

Аудит защищенности смарт-контрактов

В качестве ответной меры на возможные риски довольно распространенной услугой стал аудит смарт-контрактов.

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

Детерминизм исполнения кода смарт-контракта позволяет тестам работать везде, быть крайне простыми в поддержке и делает расследование инцидентов надежным и неоспоримым.

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

Команде проекта дается время, чтобы исправить ошибки, прежде чем будет выпущен окончательный отчет.

Большая часть аудита включает проверку контрактов на наличие уязвимостей в системе безопасности. Хотя некоторые проблемы лежат на поверхности, многие ошибки могут быть устранены только с помощью сложных инструментов и стратегий. Например, слабый смарт-контракт может подвергнуться атаке в сочетании с рыночными манипуляциями. Чтобы обнаружить эти проблемы, аудиторы проводят пентесты.

Аудит безопасности смарт-контрактов широко распространен в экосистеме децентрализованных финансов (DeFi). Решение инвестировать в блокчейн-проект может быть частично основано на результатах проверки кода смарт-контракта.

Заключение

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

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


  1. При написании статьи использовались материалы https://academy.binance.com/ru/articles/what-is-a-smart-contract-security-audit 
  2. https://cbr.ru/Content/Document/File/47862/SmartKontrakt_18-10.pdf 
Темы:КриптографиякриптовалютыБлокчейнБлокчейн и криптовалютаБезопасная разработкаЖурнал "Информационная безопасность" №4, 2022

Импортозамещение ИТ-решений и ПО в ключевых отраслях

22 июня 2023

Жми для участия
22 июня 2023. Импортозамещение ИТ-решений и ПО
22 июня 2023. Импортозамещение ИТ-решений и ПО в госсекторе и ключевых отраслях
Жми, чтобы участвовать
Статьи по той же темеСтатьи по той же теме

  • "Атака 51%" и устойчивость блокчейна биткоина
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    "Атака 51%" – это сценарий, при котором один пользователь или группа пользователей блокчейна контролируют более 50% вычислительной мощности сети. Это дает им возможность контролировать создание новых блоков, отменять транзакции и проводить другие злоумышленные действия.
  • DeFi: инкапсулированная угроза децентрализованных финансов
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    Увеличивающиеся инвестиции в DeFi привлекают внимание все большего количества хакерских групп, что усугубляется технической сложностью это сферы, не всегда достаточной квалификацией пользователей и отсутствием эффективного регулирования о стороны законодательства
  • Зачем и как решать проблемы безопасности мобильных приложений?
    Андрей Никитин, директор по продуктовому маркетингу Стингрей Технолоджис (ГК Swordfish Security)
    В ИТ-индустрии были разработаны подходы к обеспечению защищенности мобильных приложений – практики MAST (Mobile Application Security Testing), которые стали решением многих проблем с безопасностью приложений.
  • Кибербезопасность ЦВЦБ – цифровой валюты центрального банка
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    Если все планы реализуются, то с 1 апреля 2023 г. цифровой рубль должен появиться в экономическом пространстве
  • Платформа Guardant для защиты и лицензирования программных продуктов
    Михаил Чухломин, менеджер по развитию бизнеса направления Guardant Компании “Актив”
    Платформа Guardant – это лидирующий на российском рынке комплекс для защиты, лицензирования и управления продажами программного обеспечения
  • Как правильно организовать процесс безопасной разработки ПО (SDL): 6 шагов
    Дмитрий Пономарев, технический директор ООО НТЦ “Фобос-НТ”, сотрудник ИСП РАН
    SDL является базовым требованием при сертификации ПО в дополнение к необходимым функциям безопасности, определяемым документами ФСТЭК России

Хотите участвовать?

Выберите вариант!

КАЛЕНДАРЬ МЕРОПРИЯТИЙ 2023
ПОСЕТИТЬ МЕРОПРИЯТИЯ
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ
Безопасные российские СУБД и защита от утечек
20.06.23. Безопасные российские СУБД и защита от утечек
Жми, чтобы участвовать

More...
Форум ITSEC 2023: информационная и кибербезопасность России
Форум ITSEC 11-20 апреля 2023: информационная и кибербезопасность России
Жми, чтобы участвовать