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

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

Александр Подобных, 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

Обеспечение кибербезопасности.
Защита АСУ ТП. Безопасность КИИ
Конференция | 28 июня 2024

Жми для участия
Обзоры. Спец.проекты. Исследования
Участвуйте в обзорах / исследованиях проекта "Информационная безопасность"!
Станьте автором журнала!
Статьи по той же темеСтатьи по той же теме

  • Protestware: как защитить код?
    Владимир Исабеков, ведущий инженер по информационной безопасности Swordfish Security
    Первым и важным шагом к снижению риска от вредоносного Protestware является стандартный инструментарий безопасной разработки.
  • Решения для криптографической защиты сетевого взаимодействия объектов КИИ на базе платформы m-TrusT
    Светлана Конявская, заместитель генерального директора ОКБ САПР
    Специализированный компьютер с аппаратной защитой данных m-TrusT выпускается серийно и предоставляется вендорам СКЗИ для сертификации своих СКЗИ
  • Искусственный интеллект и блокчейн
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    Анализируя синергию этих двух мощных инструментов, сосредоточим внимание на том, как их объединение может стать катализатором для создания более эффективных, безопасных и прозрачных решений.
  • Сайдчейны, кроссчейн-мосты и вопросы безопасности
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    С ростом популярности сайдчейны и кроссчейны становятся объектами повышенного внимания злоумышленников, и вопросы безопасности становятся для них все более актуальными
  • Как организовать процесс безопасной разработки в 5 шагов
    Константин Саматов, Член Правления Ассоциации руководителей службы информационной безопасности
    Разберем значение процесса РБПО в организации, его создание, сложности и пути их преодоления.
  • Сертификация СЗИ – курс на РБПО
    Дмитрий Пономарев, технический директор ООО НТЦ “Фобос-НТ”, сотрудник ИСП РАН
    На рубеже 2023–2024 гг. положение разительно отличается от картины пятитилетней давности. Практики РБПО требуются повсеместно, их выполнение зачастую является одним из базовых пунктов контракта.

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

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

КАЛЕНДАРЬ МЕРОПРИЯТИЙ 2024
ПОСЕТИТЬ МЕРОПРИЯТИЯ
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ
Linux
23 мая. Инструменты миграции на защищенный Linux
Участвуйте!

More...
Обзоры. Исследования. Спец.проекты
Обзоры и исследования проекта "Информационная безопасность"
Жми, чтобы участвовать