В данной статье авторы исследуют возможные инструменты и способы повышения уровня безопасности блокчейн-сетей с технологией смарт-контрактов.
Ключевые слова: смарт-контракт, блокчейн, безопасность, анализ, атака, транзакция.
Блокчейн — это распределенная база данных, которая хранит информацию обо всех транзакциях, совершенных в сети. Каждый блок содержит информацию о нескольких транзакциях, а затем связывается с предыдущим блоком, создавая цепочку блоков (отсюда и название — блокчейн), схематично он представлен на рисунке 1.
Рис. 1. Схема блокчейна
Изначально блокчейн создавался под криптовалюты, то есть под финансовую сферу. Сейчас же блокчейн можно применить в любой сфере, они удобны и масштабируемы. С быстрым развитием технологий, а также масштабом криптовалютных сетей и увеличением количества пользователей пришло время для применения новых инструментов и алгоритмов для решения проблем недостатка ресурсов и больших затрат на время работы. Одним из таких способов является смарт-контракт.
Смарт-контракты — это программные коды, которые выполняются автоматически при выполнении определенных условий. Они используются в криптовалютных сетях для автоматизации и обеспечения безопасности транзакций. Простыми словами смарт-контракт — это цифровой договор.
Смарт-контракты могут быть использованы для выполнения различных задач, таких как перевод средств, регистрация собственности, оформление страховки и многое другое. Они работают на основе блокчейн-технологии и обеспечивают прозрачность и безопасность транзакций.
Смарт-контракты позволяют уменьшить количество посредников в процессе проведения транзакций, что увеличивает эффективность и автономность и снижает затраты. Они также обеспечивают безопасность, так как все транзакции записываются в блокчейн и не могут быть изменены или удалены.
Однако смарт-контракты также могут быть подвержены уязвимостям и атакам, поэтому необходимо использовать соответствующие меры безопасности при их создании и использовании. Кроме того, необходимо постоянно мониторить смарт-контракты на предмет уязвимостей и обновлять их, чтобы обеспечить безопасность и надежность.
Смарт-контракты, которые работают на блокчейн-сетях, имеют свои проблемы и ограничения. Некоторые из них включают:
- Неизменяемость: как только смарт-контракт развернут в блокчейн, его нельзя изменить. Это означает, что если в контракте есть ошибки или уязвимости, то их нельзя исправить, что может привести к потере средств.
- Ограниченные возможности: смарт-контракты могут выполнять только те задачи, для которых они были созданы. Они не могут взаимодействовать с внешним миром или использовать данные из других источников.
- Необходимость газа: для выполнения смарт-контрактов на блокчейн-сетях требуется газ, что является комиссией за проведение транзакции. Это может привести к высоким затратам на выполнение контракта.
- Уязвимости безопасности: смарт-контракты могут содержать уязвимости безопасности, которые могут быть использованы злоумышленниками для получения несанкционированного доступа к данным или к средствам.
- Сложность написания: написание смарт-контрактов требует специальных знаний и опыта, что может быть препятствием для многих людей и организаций.
В целом, смарт-контракты имеют большой потенциал, но требуют дальнейшего развития и улучшения, чтобы стать более эффективными и безопасными.
Смарт-контракты могут содержать различные уязвимости безопасности, которые могут привести к серьезным последствиям. Некоторые из наиболее распространенных уязвимостей включают ошибки в коде, недостаточную проверку данных, ошибки в логике контракта, атаки майнинга и уязвимости во внешних библиотеках.
Ошибки в коде могут возникнуть из-за неправильного написания кода, отсутствия проверок на ошибки или неверного понимания требований. Это может привести к потере средств или несанкционированному доступу к данным.
Недостаточная проверка данных может означать, что смарт-контракты могут быть уязвимыми к атакам, если они не проверяют достаточно данных, которые им передаются. Это может привести к несанкционированному доступу к данным или потере средств.
Ошибки в логике контракта могут привести к непредсказуемому поведению смарт-контракта. Например, смарт-контракт может быть уязвимым к атакам, если он не учитывает все возможные сценарии использования.
Уязвимости во внешних библиотеках могут содержать уязвимости безопасности. Это может привести к несанкционированному доступу к данным или потере средств.
Для уменьшения рисков, связанных с уязвимостями смарт-контрактов, необходимо проводить тщательное тестирование и аудит кода, а также использовать лучшие практики безопасности при разработке контрактов. Это включает проверку на ошибки в коде, проверку данных, анализ логики контракта и защиту от атак майнинга.
Типичная атака на блокчейн-сеть — атака на смарт-контракт. Как упоминалось выше, есть различные вариации атак на смарт-контракт, но все они строятся похожим образом — эксплоит смарт-контракта и вывод денег из сети.
Разумеется владельцы и пользователи блокчейн сетей, особенно финансовых или любых других, которые могут выдать личную информацию, не хотят быть участниками такого происшествия. Потери криптовалюты приведут к потере репутации, и впоследствии, к потере пользователей. Никакие блокчейн-сети и их владельцы не будут готовы к такому повороту событий, следовательно, они внедряют всё больше инструментов защиты. Большинство из них не смогут остановить злоумышленника, лишь задержат. И в другой раз атака будет совершена успешна. Значит, нужно принимать превентивные меры по защите.
Одним из таких методов может быть преданализ смарт-контракта (его байт кода). В данном случае будет идти большая гонка за скоростью — у злоумышленника есть преимущество, он знает, что собирается делать. Поэтому декомпилировать контракт не представляется логичным — процесс декомпиляции займет слишком много времени (в среднем декомпиляция контракта занимает около 30 секунд). Полминуты это непозволительно много, когда идет атака на смарт-контракт, желательно уменьшить это время в три, а то и в четыре раза. В таком случае будет несколько вариантов ответа на атаку, например, блокировка пользователя, отказ в транзакции и подобные.
Анализ следует проводить с целью выявления причины написания смарт-контракта, то есть, зачем он был написан, что будет делать и как это изменит конкретный блок, а возможно и всю сеть. Это даст информацию, которую впоследствии можно использовать для аудита и создания автоматизированных инструментов защиты блокчейн-сети, возможно с использованием методов из машинного обучения.
Во время анализа можно обратить внимание на количество функций в контракте, какие именно это функции и насколько они популярны и используемы (в том числе и в других контрактах). Также какие-то куски байт-кода могут оказаться довольно часто используемыми библиотеками, различные open-source (с открытым исходным кодом) будут являться такими. К тому же, можно определить какие действия делал конкретный смарт-контракт, сколько действий он совершил, что даст нам понять, новый это контракт или нет. Более того, следует обратить внимание на источник денег, злоумышленники не будут использовать настоящие деньги, ведь их можно отследить, что является риском для них.
Таким образом, вручную делается частичная декомпиляция, как упоминалось выше, на полную декомпиляцию времени нет. Далее с этой выборкой может работать какая-то моделька.
Рассмотрим один вариант такой работы и это инструмент Spotter от Pessimistic Security, создан в 2023 году. Он используется для мониторинга взломов, то есть предсказывает возможную атаку на конкретный смарт-контракт.
Как работает этот инструмент? Итак, есть какая-то выборка байт кода, сделанная вручную. Отдаём эту выборку модельке и она начинает работать — совершает статистический анализ и делает вывод, опасен ли контракт, что он собирается делать и на кого направлено его действие. Благодаря этому инструменту есть возможность предугадать атаку и предпринять действия, например, заморозить транзакцию, не принимать контракты от конкретного IP-адреса (если этот адрес уже был замечен в злонамеренных действиях ранее), отклонить транзакцию и другие.
В заключении хотелось бы сделать вывод, что инструментов решения с превентивными мерами для блокчейнов немного, поэтому эта сфера будет развиваться. Учитывая популярность блокчейнов и в финансовой, и в нефинансовой сфере, удобство их применения и возможности, которые они могут предоставить, сейчас и в будущем потребуется еще больше инструментов и способов для защиты данных и средств пользователя. Что будет являться большой областью как для теоретического исследования, так и для прикладной части.
Литература:
- Что такое смарт контракты на блокчейне // vc.ru URL: https://vc.ru/crypto/373518-chto-takoe-smart-kontrakty-na-blokcheyne (дата обращения: 27.04.2023).
- ББ-169: Александр Селезнёв и Евгений Марченко (Pessimistic Security) о безопасности в Ethereum // Базовый блок URL: https://basicblockradio.com/e169/ (дата обращения: 18.05.2023).
- Lecture 10.1: Privacy on the Blockchain // youtube URL: https://www.youtube.com/watch?v=rIK5np0V6P0 (дата обращения: 31.03.2023).
- Lecture 10.2: Cryptographic Commitments // youtube URL: https://www.youtube.com/watch?v=IkNZWJFcfcU (дата обращения: 31.03.2023).
- B-Money: история первой в мире криптовалюты // Хабр URL: https://habr.com/ru/companies/ruvds/articles/558298/ (дата обращения: 18.05.2023).