В 1973 вышла книга, а позже и театральная постановка — “Сибилла”, главная героиня которой, ввиду диссоциативного расстройства психики, считала себя разными людьми.
К нашей теме это не имело бы никакого отношения, если бы в 2002 году сотрудник Microsoft Reasearch Брайан Зил не предложил назвать одну из схем атак на информационные системы, когда у атакующего есть множество контролируемых аккаунтов, действующих согласованно, именем героини произведения.
Атакующий создает новые узлы в одноранговой сети, которые постепенно “окружают” атакуемый узел. Так как каждый узел хранит и обновляет свой собственный “рейтинг” соседних узлов, через некоторое время он больше доверяет тем, кто дольше и качественнее предоставлял ему данные. Создать новый идентификатор узла в одноранговой сети ничего не стоит, поэтому атакующий может реализовывать разные стратегии “окружения”, создавая новые идентификаторы быстрее, чем их обнаруживают защитники сети. После того как узел получает данные только с узлов, контролируемых злоумышленником, тот может начать предоставлять узлу ложные данные.
Атака Сибиллы: метаморфозы в зависимости от консенсуса сети
В блокчейнах атака Сибиллы имеет свои особенности:
- если нападающий захватил контроль над соседними узлами, он может отказаться от приема или передачи данных, эффективно блокируя атакуемую ноду;
- когда атакующий контролирует большое количество узлов, он может блокировать отправку транзакций, создать на атакуемых узлах иллюзию отставания сети или предоставлять заранее заготовленные ложные данные;
- даже недолгое “придерживание” транзакции в пиринговой сети атакующий может использовать для frontruning-а: атакующий видит какую сделку хочет заключить атакуемый и проводит свою транзакцию раньше него;
- в случае контроля атакующим большого hashrate (PoW сети) или большого количества монет (PoS сети), он может обманывать атакуемый узел и на уровне блокчейна, вплоть до проведения атаки double spend.
Атака Сибиллы имеет место и в DeFi и в экономических протоколах. Например, алгоритм защищается от атаки “китов” — сделок, оперирующих крупными объемами токенов, при помощи большой комиссии на такие операции. В этом случае богатый атакующий просто разделяет свой баланс на тысячи аккаунтов и проводит атаку их согласованными действиями. Атака “китов” и атака Сибиллы — это две стороны одной монеты: с одной стороны атака проводится за счет малого числа аккаунтов с внушительными балансами, а с другой — большим числом аккаунтов с небольшим балансом.
Примеры атаки Сибиллы
В 2014 году прошла успешная атака Сибиллы на сеть TOR, которая привела к деанонимизации большого количества пользователей.
В 2020 году выяснилось: ранние версии кошелька Electrum для криптовалюты Bitcoin имеют уязвимость. Разработчики Electrum разрешили пользователям обращаться к серверам, которые не находятся под контролем Electrum. Это создало благодатную почву для того, чтобы провести атаку Сибиллы. Один из пользователей Electrum в результате потерял 1400 BTC.
А что же Free TON?
Чтобы разобраться в вопросах уязвимости Free TON к такому типу атак, мы обратились к эксперту по безопасности децентрализованных решений, директору по исследованиям компании MixBytes Сергею Прилуцкому:
- Сергей, скажите существует ли теоретическая возможность атаки Сибиллы в сети Free TON, например, через контроль над несколькими узлами валидатора?
Да, существует, как и в любой децентрализованной сети. Атака на консенсус является стандартной для любых PoS сетей, в том числе и для TON, и требует контроля над большим количеством токенов у атакующего.
А вот сетевая атака Сибиллы на p2p-сеть в TON сложнее, чем в других сетях (так же, как и блокировка сети) — ноды TON могут свободно менять свои идентификаторы ADNL внутри оверлейной сети (и постоянно делают это принудительно в конце каждого цикла валидации), а также могут свободно менять свои IP-адреса, “ускользая” из-под прицела атакующего.
- Влияет ли шардирование сети на возможность осуществления этой атаки?
Не влияет на теоретическую возможность, но на практике, из-за маршрутизации между шардами атакующему сложнее будет запрограммировать такую атаку.