Недостаток централизованных систем — наличие уязвимостей. Взлом серверов приводит к краже средств и личных данных пользователей. А в децентрализованных системах хранение информации обеспечивается самими участниками. Их называют узлами, нодами или валидаторами. Они поддерживают целостность и безопасность сети. Однако блокчейны также имеют уязвимости. Один из способов нарушить работу системы — атака затмения. Впервые ее описали в 2015 году для одноранговой сети Bitcoin.
Как работает атака Eclipse
Для начала нужно понять, как функционируют узлы в децентрализованной сети. Они занимаются поиском уникальных валидных хешей для новых блоков. В случае успеха нода отправляет полученный результат другим узлам, которые его проверяют. Если он оказывается правильным, то в блокчейне создается новое звено цепочки. Этот процесс называют майнингом.
Но каждая система имеет максимальную пропускную способность. Поэтому результат поиска хеша проверяют не все участники сети, а только соседние ноды. Биткоин-узлы имеют 117 входящих и 8 исходящих TCP-соединений. Это позволяет злоумышленнику взять ноду под контроль.
Задача хакера — изолировать майнера от основной сети. Для этого нужно направить все его исходящие соединения к IP-адресам атакующего. Действия злоумышленника:
Окружить жертву собственными узлами. Каждый из них должен иметь разный IP-адрес.
Соединить жертву с созданными нодами. Для этого потребуется перезапустить его процесс майнинга. Это приводит к сбросу прошлых TCP-соединений. Чаще в данных целях используют DDoS-атаку. Другой способ — выждать обновление софта для майнинга или сбой питания.
Начать манипулировать нодой при ее полной изоляции от общей сети.
Скорость выполнения всей процедуры зависит от количества зловредных IP-адресов. Впервые ее продемонстрировал Итан Хейлман — ученый, описавший атаку затмения. Он использовал армию ботов из 4600 IP-адресов. На полную изоляцию майнинг-узла ему потребовалось 5 часов.
Также Итан Хейлман в 2018 году тестировал систему Ethereum. Она использует 13 исходящих TCP-соединений, но из-за протокола Kademlia оказалась более уязвимой, чем Bitcoin.
Последствия атаки
После захвата целевой ноды злоумышленник способен приступить к манипуляциям в блокчейне. Чаще затмение майнинг-узлов применятся для проведения других видов атак.
Двойная трата с нулевым подтверждением
Когда пользователь отправляет монеты BTC, транзакция помещается в мемпул. Это список неподтвержденных операций. Далее она отправляется на обработку майнерам. Чтобы транзакция завершилась, нужно получить до 6 подтверждений от узлов. Но это займет 60-70 минут. Поэтому большинству магазинов достаточно 2-4 подтверждения для установки факта оплаты.
Однако часть компаний отдает товар сразу после отправки биткоинов. Злоумышленник способен использовать это для проведения двойного расходования. Данная процедура подразумевает трату монет более 1 раза.
Например, отдельный пользователь инициирует перевод биткоинов. Он транслируется в блокчейн и попадает на изолированный узел. Здесь злоумышленник перехватывает монеты, а затем тратит их самостоятельно. Подтвердить эти транзакции дает система зловредных майнеров хакера. Даже если перевод дойдет до «основного» блокчейна, будет уже поздно. Криптовалюта окажется потраченной.
Двойное расходование с N-подтверждением
Однако большинство продавцов ожидают 2-4 удостоверения платежа. Тогда, чтобы дважды потратить криптовалюту, придется дополнительно окружить адрес кошелька магазина. В этом случае злоумышленник сможет присылать ему подтверждения в изолированной блокчейн-сети. Ничего не подозревающий продавец отправит товар. Далее хакер свяжет изолированные узлы с Bitcoin-сетью, и она синхронизируется. Биткоин отмечает проведенные транзакции устаревшими и отбрасывает их.
Атака 51%
Bitcoin работает на алгоритме консенсуса Proof-of-Work (PoW). Он основан на мнении большинства майнеров. При поиске новых блоков результат отправляется на проверку другим нодам. Если с ним согласны больше 50% майнеров, то найденный хеш записывается в блокчейн-сеть.
Эта модель консенсуса имеет уязвимость в виде атаки 51%. Для ее реализации нужно сосредоточить в одних руках более половины от общей вычислительной мощности блокчейна. Это позволит хакеру проводить двойную трату криптоактивов и отменять транзакции. Однако в этих целях понадобятся огромные средства.
Организовать кибер-нападение 51% поможет атака затмения. Достаточно изолировать крупные майнинг-узлы. Это снизит их влияние на хешрейт в блокчейн-сети. Например, на 8 июня 2022 года пропускная способность Биткоин составляла 205,72 EH/s. Около 104,79 EH/s приходилось на 3 майнинг-пула: Foundry USA, AntPool и F2Pool. Если хакер изолирует их от основной системы, то в ней останется 100,93 EH/s. Тогда для проведения атаки 51% понадобится примерно 51 EH/s мощности.
Как предотвратить
Идея децентрализованных систем заключается в прозрачности. Большинство из них имеют открытый исходный код. Это позволяет злоумышленникам искать уязвимости. Их другая проблема — сложно внести изменения в работающий блокчейн. Поэтому обезопасить его от атаки Eclipse необходимо до запуска. Есть 4 метода увеличить защиту:
Связывать узлы случайно. При синхронизации майнера с блокчейн-сетью он должен подключаться к рандомным IP-адресам. В Эфириуме протокол Kademlia структурирует эту процедуру. Поэтому система оказалась более уязвимой, чем Биткоин.
Связывать ноды неслучайно. Нужно создать белый список для IP-адресов, к которым можно безопасно подключаться при каждой синхронизации. Но это приведет к проблеме масштабирования. Новым майнерам станет тяжелее подключиться к такой блокчейн-сети.
Добавить поддержку большего количества TCP-соединений. Решение повысит время для изолирования майнинг-узла или сделает это невозможным. Однако данная мера снизит производительность блокчейна.
Комментарии (2)
Aleksandr-JS-Developer
04.08.2022 15:48+2Хотя вектор теоретически можно пытаться развивать, но непонятно в чём именно практическая опасность. Это очень сложный и комплексный вектор, от которого защитится очень просто и дешево.
Ставите 5-6 выходных нод для проверок в разных местах. Думаю, даже 100-200 не проблема
Атака для хакера становится чуть-чуть выгоднее, чем реальный захват 51%. Выгоднее уже такой ботнет использовать для DDoS атак.
solved
К тому-же, транзакции можно проводить с задержкой в пару часов
Лучше бы привели инциденты успешной атаки в реальных условиях, если они вообще есть
vesper-bot
На успешную атаку на один узел потребовалось 4600 IP-адресов и 5 часов активности. А дальше пугалка на изоляцию сразу трех пулов. Пупок развяжется столько IP-соединений поддерживать, особенно если у этих пулов найдутся неизменяемые соединения с доверенными узлами — одного хватит, чтобы изоляция провалилась.