Что такое “атака информационного затмения”
Все сетевые атаки на общий блокчейн сложны в реализации и требуют задействовать большое количество мощности, поэтому чаще нецелесообразны. Но взлом отдельного узла или пользователя — явление не редкое.
Атака затмения (Eclipse) — это хакерские действия в одноранговой (Peer-to-Peer) сети. Она может быть реализована только в условиях децентрализации, потому что направлена на единичные ноды, которые принимают входящие и исходящие сообщения от других узлов.
Например, в биткоин-сети по умолчанию существует максимум 117 входящих и 8 исходящих TCP-соединений.
При “атаке затмения” атакующий пытается перенаправить соединение цели с ее установленных соседних узлов на те, что находятся под его контролем. В итоге жертва оказывается изолированной от любой сетевой активности, кроме информации, поступающей от узла злоумышленника.
Другими словами, получение контроля над доступом к информации в P2P-сети — это и есть “атака информационного затмения”.
Как происходит изоляция узла при атаке Eclipse
Злоумышленник чаще использует для этих целей ботнет. Для этого создается фантомная сеть из фальшивых хост-узлов, чтобы залить узел-жертву множеством IP-адресов, с которыми она может синхронизироваться при следующем подключении к блокчейну.
С этого момента хакер просто ждет, пока цель установит связь с этими узлами.
Иногда для достижения успеха нужны несколько попыток, чтобы попасть в таймфрейм между автоматическими переподключениями.
По сути это очень похоже на процесс рыбной ловли. Хакер забрасывает несколько раз приманку в виде ложного адреса подключения и ждет, когда узел на него “клюнет”. Потом он делает быструю подсечку и “улов” оказывается на берегу, далеко от родной стихии.
Какую “уху” можно приготовить после успешной атаки затмения?
Во время атаки Eclipse взломщик скрывает фактическое состояние блокчейна от цели и получает несколько возможностей для извлечения преступной выгоды.
1. Двойная трата. Если на узлы атакующего приходится 25% общего хеша сети, а на целевой узел приходится 26%, то взяв под контроль узел, он может получить вожделенный 51% и, как следствие, возможность двойной траты. То есть хакер может отправлять на контролируемый узел суммы, которые раньше уже были отправлены на другие адреса. Потом на скомпрометированный узел поступает информация о ложной транзакции, и все деньги возвращаются на адрес атакующего. Обман всплывет только когда жертва атаки освободится и подключится к корректно работающим узлам.
2. Похищение мощности майнера. Хакер изолирует жертву от входящей информации об уже добытых блоках, тем самым заставляя ее тратить вычислительную мощность на бесполезные расчеты. Так злоумышленник увеличивает свой личный хеш и выигрывает гонку за валидацию (подробно такую ситуацию мы описывали в статье про эгоистичный майнинг). Или, как вариант, объединить свой хеш с мощностью жертвы для более эффективного майнинга, забирая при этом все комиссионные.
Возможно ли предотвратить “атаку затмения”?
Это пока вопрос, относящийся к разряду сугубо теоретических.
Атаки можно избежать, если одноранговая сеть будет спроектирована таким образом, чтобы синхронизация с блокчейном происходила через рандомные узлы. Сеть, где при этом задействованы ближайшие (соседние) ноды, всегда будет находиться под возможным ударом.
Некоторые специалисты по безопасности также называют защищенным вариант, при котором каждый узел может подключаться к большому количеству целей. То есть они предлагают увеличить в несколько раз количество TCP-соединений. Но это сильно усложнит архитектуру блокчейна и замедлит транзакции во время процесса синхронизации.