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

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

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

Программа мероприятий
для руководителей и специалистов
по защите информации

Посетить
Кибербезопасность
Форум ITSEC 2025 (весна) для AppSec, Security Champions, DevOps-инженеров, тестировщиков, специалистов по ИБ
Участвуйте 3-4 июня →
Статьи по той же темеСтатьи по той же теме

  • Безопасность приложений на базе SAP и 1С начинается с проверки кода
    Екатерина Герлинг, ведущий инженер-аналитик Лаборатории стратегического развития продуктов кибербезопасности Аналитического центра кибербезопасности ООО “Газинформсервис”
    После ухода SAP с российского рынка система 1С стала чуть ли не единственной альтернативой, но разработка под эту платформу требует значительных ресурсов, а специалистов не хватает. При этом анализ и защита кода для таких систем — сложный процесс, требующий специализированных решений. На российском рынке есть решения, которые помогут обеспечить безопасность корпоративных приложений на 1С и SAP.
  • Блокчейн на досмотре. Таможня охотится за цифровым добром
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    В России сложилась беспрецедентная ситуация в сфере таможенного и валютного контроля, связанная с неконтролируемым вывозом цифровых валют, когда примерно две трети экономики нашей страны работает в тени с USDT, – в основном из-за санкционного давления.
  • О безопасности заимствованных компонентов Open Source
    Алексей Хорошилов, руководитель Центра исследований безопасности системного программного обеспечения, ведущий научный сотрудник ФГБУН “ИСП РАН”
    Open Source стал неотъемлемой частью современного мира. Сегодня уже нет необходимости объяснять, что это такое, – с этим явлением все давно свыклись и приняли его как данность. Однако возникает другой вопрос: как эффективно и зрело работать с Open Source?
  • Оракулы, их проблемы и уязвимости
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    Технология блокчейна изменила представление о безопасности, прозрачности и децентрализации в цифровом мире. Однако ее возможности ограничиваются лишь событиями и данными, происходящими внутри самой цепочки блоков.
  • Уязвимости и недостатки протоколов выпуска токенов в сети Биткоин
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    С 2023 г. в сеть Биткоин стали внедряться новые протоколы, и текущий год ознаменовался их активным использованием: Runes, BRC320, ARC320, Ordinals NFT. Эти нововведения не просто носят технический характер, они повлияли на всю экосистему первой криптовалюты, причем не только с точки зрения возможностей и удобства, но и с точки зрения информационной безопасности. Все началось с протокола Ordinals.
  • Автоматизация и экономика для обеспечения жизненного цикла безопасного ПО
    Борис Позин, технический директор ЗАО "ЕС-лизинг", д.т.н., профессор базовой кафедры “Информационно-аналитические системы” МИЭМ НИУ ВШЭ, главный научный сотрудник ИСП РАН
    Проблема обнаружения уязвимостей и недекларированных возможностей специалистами в жизненном цикле ПО автоматизированных систем становится все более актуальной в последние годы, особенно в связи с активизацией работ по импортозамещению, использованием свободного ПО, развитием масштабных проектов систем корпоративного уровня в различных отраслях народного хозяйства.

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

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

КАЛЕНДАРЬ МЕРОПРИЯТИЙ 2025
ПОСЕТИТЬ МЕРОПРИЯТИЯ
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ
Linux
Защиту СУБД и данных обсудим на ITSEC 2025
Посетите 3-4 июня →

More...
ТБ Форум 2025
4 июня | Форум ITSEC 2025 Доверенные корпоративные репозитории
Жми, чтобы участвовать

More...