Найти тему
Strediums

Как взламывают блокчейн: атаки на распределенные базы данных

Оглавление

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

В этой статье расскажем о том, как атакуют блокчейны и к чему это приводит.

Атака 51%

Атака 51% —  главная угроза для блокчейнов. Она актуальна для сетей, использующих алгоритм консенсуса Proof-of-Work.

Суть ее заключается в том, чтобы взять под контроль более 50% вычислительных мощностей (хешрейта) сети. Последствия аналогичны владению контрольным пакетом акций компании: можно принимать любые решения и делать все что угодно с компанией, акциями которой владеете. В случае с хешрейтом — с блокчейном, 51% вычислительных мощностей которого вы контролируете.

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

Откуда взять столько мощности? Есть несколько способов: арендовать много майнингового оборудования, взять под контроль (или организовать самому) майнинговый пул. Еще один способ — подговорить других майнеров или пойти по совсем уж незаконному пути, организовав с помощью вредоносного ПО майнинговый ботнет.

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

Например, такие сети, как Zencash (ZEN), Litecoin Cash (LCC), MonaCoin (MONA), Verge (XVG), Bitcoin Gold (BTG) подвергались атаке 51%.

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

Например, успешная атака на сеть ZenCash (ZEN) в 2018 году принесла злоумышленникам $550 тыс. Они смогли удвоить две крупные транзакции (13 000 и 6 600 ZEN). Атака продолжалась 110 блоков, это заняло около 4 часов, а затраты на нее, по сравнению с украденными монетами, были минимальными — $30 тыс.

Еще пример: Ethereum Classic в 2020 году атаковали трижды с помощью аренды вычислительных мощностей в сервисе NiceHash. В июле-августе хешрейт ETC сильно упал, и атакующий этим воспользовался. Он арендовал GPU с хешрейтом более 51% от всей сети Ethereum Classic, после чего ему удалось создать двойных трат на сумму более 1 млн. ETC ($9 млн. на тот момент).

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

И таких примеров, к сожалению, много.

Двойная трата (двойное расходование)

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

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

При правильной работе сети только одна транзакция получит одобрение большинства узлов. Как правило, так и бывает. В блокчейн встроена защита для предотвращения подобных атак. Но несмотря на это, риск двойного расходования все еще присутствует.

Произвести двойную трату можно разными способами, например в результате атаки 51%. Когда злоумышленник получает под контроль больше половины хешрейта, он может генерировать новые блоки самостоятельно, вносить в них изменения, отклонять и подтверждать «нужные» транзакции.

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

За это время можно, например, отправить монеты на криптобиржу, которая требует 1–5 подтверждений блокчейна, продать их и получить взамен другую криптовалюту или фиат.

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

Атака Финни (Finney Attack)

Атака Финни названа в честь первого получателя биткойна — Хэла Финни, который также первым сделал предположение о возможности двойного расходования криптовалюты в блокчейне.

Finney Attack — это вариант двойной траты, которая может сработать, если контрагент примет неподтвержденную транзакцию. Суть такой атаки состоит в том, что майнер может сгенерировать блок и включить в него транзакцию со своего адреса «А» на свой же адрес «В», но не транслировать его сразу в сеть. Далее ему нужно провести еще одну транзакцию с адреса «А» на адрес «С», принадлежащий другому пользователю. Если этот пользователь примет транзакцию без подтверждения сети, то мошенник транслирует предыдущий блок, содержащий его первую транзакцию. Таким образом, транзакция с адреса «А» на адрес «С» становится недействительной, а злоумышленник получает двойную выгоду.

Гоночная атака (Race attack)

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

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

Атака Сивиллы (Сибиллы)

Эта атака названа в честь главной героини книги «Сивилла» Флоры Риты Шрайбер о лечении диссоциативного расстройства личности. Ее суть заключается в том, чтобы заполнить сеть подконтрольными хакеру узлами. Злоумышленник «окружает» ноду жертвы так, чтобы контролировать все транзакции. В крупных сетях, таких как Bitcoin, это сделать практически невозможно, поскольку для подтверждения транзакций нода выбирает узел сети практически случайным образом. Поэтому, как правило, атаке Сивиллы подвергаются молодые криптопроекты. Дело в том, что, подключаясь к сети, нода не знает IP доверенных узлов и запрашивает их. Если запрос попадет на узел злоумышленника, тот может отправить в ответ адреса подконтрольных ему узлов.

В результате хакер может:

  • блокировать транзакции пользователя, поскольку фактически отсоединяет его от общего блокчейна;
  • принимать решение, к какому блоку «подсоединить» пользователя (как правило, это блоки с двойным расходованием);
  • отслеживать все транзакции пользователя.

То есть подконтрольные злоумышленнику узлы способны склонять другие ноды к одобрению некорректных данных.

Эгоистичный майнинг

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

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

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

Допустим, эгоистичный майнер добыл 2001 блок, но не передал эту информацию в сеть. Остальные узлы продолжают добывать новые блоки, начиная с 2000. То есть с блоком 2000 связано уже два блока: один от честного майнера, другой от злоумышленника. И оба этих блока имеют № 2001.

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

Маршрутизирующие атаки

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

Использование уязвимостей смарт-контрактов

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

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

В своем отчете от 30.06.2023 года компания Beosin, занимающаяся безопасностью Web3, сообщает, что общая стоимость криптовалют, потерянных в результате мошенничества, взломов и махинаций, в первом полугодии 2023 года составила $656 млн. Большая часть (56%) украденной криптовалюты была потеряна из-за уязвимостей смарт-контрактов.

Взлом блокчейна может произойти не только из-за уязвимости в смарт-контракте, но и в языке, на котором он написан. 30 июля 2023 года взлому подверглись 4 пула ликвидности Curve Finance из-за уязвимости в Vyper — языке программирования, на котором прописываются смарт-контракты для биржи Curve. Curve Finance — децентрализованная биржа c технологией автоматизированного маркет-мейкера (AMM-DEX), основной хаб ликвидности стейблкоинов в DeFi. В общей сложности было украдено около $60 млн (правда $20 млн из них увели белые хакеры, поэтому деньги вернулись на Curve). Больше всего урона было нанесено из-за взлома основного пула СRV/ETH, оттуда была выведена вся ликвидность (около $ 40 млн).

DDoS-атаки и замедление времени

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

Атаки на приватный ключ

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

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

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

Чтобы надежно защитить ваш приватный ключ и, соответственно, все ваши криптоактивы, доверьте его хранение Tangem Wallet. У криптокошелька Tangem нет seed-фразы, поэтому ее невозможно украсть, а ключ генерируется и хранится на чипах трех карт (основная и резервные копии), никогда их не покидает, и извлечь его оттуда невозможно.

Заключение

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

Есть и другие типы атак, пока что чисто гипотетические:

  • каннибализм пулов (уничтожение пула для нарушения работы блокчейна);
  • атака P+Epsilon (по мнению Виталика Бутерина, одна из самых неприятных проблем в сетях на PoW, состоящая в даче злоумышленником своего рода взятки другим участникам сети в обмен на поддержку ими внесенных в блокчейн изменений);
  • таймджекинг (попытки манипуляций меткой времени транзакций).

Эти типы атак пока хакеров не интересуют.

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