Уязвимости в блокчейне

28.01.2019 |

По вашим заявкам решили опубликовать небольшую статью про способы атаки разных блокчейнов. Ведь если что-то может принести прибыль при взломе, обязательно должны найтись те, кто попробует ее получить, верно? Большая часть атак на блокчейн связана с получением большинства в 51% голосов по соответствующему алгоритму консенсуса. Но кроме того, есть и более экзотические способы атак, в том числе и те, которые не приносят прибыли. Сейчас мы глянем на них.

Для статьи с уязвимостями в блокчейне

1) Атака на PoW-систему

Так как все в Proof-of-Work системе завязано на мощность, главный и основной способ атаковать ее - набрать требуемую мощность в 51% и получить возможность генерировать большинство блоков, что позволит переписывать их по своему желанию и извлекать из этого выгоду. Блокчейны на PoW алгоритме сейчас самые распространённые, так как большинство криптовалют создано по образу и подобию Биткойна. Таким образом работают и Лайткойн, и Эфириум, и сотни других сетей, к примеру, Vertcoin или DASH. Атака 51% не требует особых умений, главное - иметь финансы на оборудование. В некоторых случаях не нужно и каких-то больших денег - 200-300 долларов вполне хватит. Но в случае с Биткойном стоимость оборудования для атаки исчисляется миллионами долларов, потому такой способ подходит далеко не всем (точнее, почти никому). Но можно совершить другую атаку, конечно ничего не заработав, но изрядно подпортив всем пользователям сети нервы.

Тип атаки, где атакующий ничего не получит, является спамовой атакой (DoS-атакой). Вместо того, чтобы пытаться получить возможность генерировать большинство блоков, злоумышленник может просто занять своими транзакциями большинство блоков, генерируемых другими. Так как скорость - основная проблема PoW блокчейнов, оправление огромного количества мелких транзакций парализует работу сети, ведь блок ограничен по размеру. К примеру, в сети Биткойна один блок вмещает 500 транзакций и весит 1 Мб. Во время хэш войн с Биткойн Кэшем в 2017 году китайские майнеры забивали блокчейн Биткойна такими спамовыми транзакциями, комиссии за пересылку повысились до 50 долларов и одна транзакция могла висеть в пуле на отправку до 3 суток. Таким образом, сторонники BCH доказывали неэффективность Биткойна. В Эфириуме такие ситуации были в 2018 году, когда неизвестные адреса пересылали кучи токенов по кругу из нескольких адресов. В целом, это влечет затраты на комиссии со стороны атакующего, и не приносит профита, но осложняет жизнь других. 

2) Атака на PoS-систему

Как и в любом другом блокчейне, самый базовый и прибыльный способ провести атаку - получить большинство. Правда, тут нужно большинство токенов атакуемого блокчейна, а не мощностей, так как PoS-алгоритм позволяет генерировать блоки именно тому, у кого есть большинство голосов. Сейчас мы пока не видим примеров успешной реализации PoS-алгоритма, но Эфириум работает над переходом к нему (хоть и медленно). Но у нас есть действующие примеры dPoS-алгоритмов, такие как EOS, BitShares, NEO. От чистого PoS они отличаются тем, что блоки генерирует не любой желающий, а выбранные всеми юзерами делегаты. По сути, все существующие системы централизованные, большинством токенов в каждой из систем владеет ограниченный круг лиц, поэтому атаку провести тяжело. Мы конечно можем говорить об этом чисто в умозрительной перспективе, что владельцы большинства токенов могут провести такую атаку, но это невыгодно в первую очередь им самим, ведь они рискуют стоимостью своих токенов.

Спам-атака на PoS также осуществима. В июле 2018 была совершена атака на NEO, все 20 бесплатных транзакций в каждом блоке забивались спамом, вынуждая пользователей ждать или платить за транзакцию токенами GAS. А уже в этом году, 16 января, была найдена критическая уязвимость, которая позволяет полностью заблокировать все транзакции в EOS практически бесплатно. Любой пользователь EOS может ставить в очередь будущие транзакции, и они почему-то имеют приоритет над текущими. В итоге, имея всего один EOS токен, можно отослать 700 спамовых транзакций разом, а имея сто токенов - 70 тысяч спамовых транзакций. Достаточное количество токенов, и EOS будет парализован. Так как транзакции бесплатные, токены блокируются на сутки, и снова пригодны для использования уже через сутки, атакующий не теряет ничего. Патча пока что нет, так что нам еще предстоит увидеть, как EOS с этим справится. 

3) Атаки на смарт-контракты

Особняком стоят атаки на смарт-контракты. По сути, смарт-контракт это программа, выполняющаяся в блокчейне. Она может быть написана на любом языке, который понимает виртуальная машина блокчейна (у EOS больше пяти языков программирования, у ETH только один - Solidity, у Lisk - javascript). Проблема в том, что уязвимость контракта зависит не от блокчейна, на котором он работает, а только от квалифицированности его разработчиков.

В качестве примеров мы можем вспомнить TheDAO, один из первых масштабных проектов на Эфириуме, который предлагал юзерам вкладывать Эфир в децентрализованную организацию и выделять средства перспективным проектам путем голосования (это было еще до эры ICO). Можно было также забирать средства. Взломщик нашел уязвимость в смарт-контракте, которая позволила закольцевать запрос на вывод средств, посылая новый запрос на вывод еще до того, как смарт-контракт успевал обновить баланс. Таким образом он вытянул из общего фонда треть всех Эфиров, на 50 миллионов долларов. Разработчик просто забыл включить в код проверку на рекурсию в одном из кусков - это в итоге стоило очень дорого всей сети.

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

4) Атаки затмения, роутинг атаки

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

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

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