Хороший, плохой и злой баг Bitcoin

Хороший, плохой и злой баг Bitcoin

Более года все версии Bitcoin Core содержали одну из самых ужасных ошибок в истории Bitcoin. В этой статье мы раскроем хорошие, плохие и злые (отсылка к фильму 1966 года "The Good, the Bad and the Ugly" - прим. переводчика) подробности об одной из самых неприятных ошибок Bitcoin Core на сегодняшний день.

Плохо, конечно, само существование ошибки, теперь зарегистрированной как CVE-2018-17144 в банке данных уязвимостей "Common Vulnerabilities and Exposures".

Ошибка появилась как часть апдейта Bitcoin Core 0.14.0, выпущенного в марте 2017 года для повышения производительности и связанного с маршрутизацией блоков. Вкратце, ошибка не давала узлам сети отвергать блоки, содержащие транзакцию, которая тратит одни и те же средства ("входы") несколько раз, что допускает нерегулярную форму двойных трат. Это при том, что одна из задач, решавшихся при разработке Bitcoin - предотвращение двойного расходования средств.

Эта серьезная проблема могла бы проявиться по-разному. Во-первых, версии Bitcoin Core с 0.14.0 по 0.14.2 (а в некоторых случаях и более новые версии) приняли бы блок, но в то же время признали бы, что что-то не так. Тем не менее, они не смогли бы точно сказать, что именно не так. В результате узел бы перестал работать и отключился. Таким образом, если бы недопустимый блок пробился к таким узлам - это могло бы вызвать крах сети. А это плохо...

Но дальше - хуже. В версиях Bitcoin Core с 0.15.0 до 0.16.2 было добавлено еще одно повышение производительности, которое допускало, что в некоторых случаях эти узлы даже не понимали, что что-то не так. В частности, если дважды потраченная монета не перемещалась в одном и том же самом блоке (что часто бывает), эти узлы приняли бы транзакцию и не блокировали бы как обычно. В гипотетическом, худшем случае, злоумышленник мог бы раздуть денежную массу Bitcoin, скопировав свои собственные монеты, и любой узел, работающий на Bitcoin Core версий с 0.15.0 по 0.16.2, принял бы эти монеты как валидные.

Технически, ошибка также могла привести к ветвлению блокчейна между затронутыми узлами (Bitcoin Core 0.15.0 до 0.16.2 и его форками) и незатронутыми узлами (в частности, Bitcoin Core 0.13.2 и более старыми, а также их форками). Однако это маловероятно, поскольку последняя категория, вероятно, не имела бы достаточного хэшрейта, чтобы создать хотя бы один блок в течение нескольких дней, не говоря уже о нескольких блоках. Поэтому, такие узлы просто остановились бы, ожидая действительного блока.

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

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

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

Это означает, что майнер должен был бы сознательно рискнуть потерять вознаграждение за добытый блок в размере около 80 000 долларов. Подобная атака была бы замечена довольно быстро так как все происходит в публичном блокчейне. Достаточно быстро отчеты о сбоях заполнили бы чаты и форумы. В этот момент было бы выявлено, что некорректный блок фактически был вызван ошибкой.

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

Третья часть хороших новостей заключается в том, что разработчик с ником awemany ответственно раскрыл ошибку в первую очередь именно разработчикам, работающим над Bitcoin Core (а также над Bitcoin ABC и Bitcoin Unlimited). Первоначально ошибка была принята за ошибку отказа в обслуживании (DoS). Но, при дальнейшем рассмотрении, сотрудник Bitcoin Core и Chaincode Labs Мэтт Коралло (Matt Corallo) обнаружил, что эта же ошибка являлась еще и уязвимостью влияния на сеть. Ошибка была исправлена уже на следующий день и были выпущены версии Bitcoin Core 0.16.3 и релиз кандидат Bitcoin Core, 0.17.0. Между тем, группа участников Bitcoin Core, которая знала о проблеме, обратилась к ключевым игрокам в экосистеме Bitcoin и попросила их перейти на Bitcoin Core 0.16.3.

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

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

Чтобы избежать таких атак, разработчики Bitcoin Core решили не сразу раскрывать серьезность ошибки общественности. Первоначально, скрыв полную информацию от майнеров и пользователей, они сообщили о DoS-уязвимости, но не про уязвимость влияния на сеть. Они надеялись, что DoS-уязвимость и настоятельные рекомендации станут достаточными причинами для обновления пользователями своего программного обеспечения, не привлекая внимание потенциальных злоумышленников.

Однако, не все разделяли этот подход. Поскольку ошибка попала под пристальное внимание, все больше людей начали самостоятельно выяснять, что ошибка была более серьезной, чем просто DoS-уязвимость. Некоторые из них раскрывали полные детали уязвимости, поставив сеть Bitcoin под угрозу атаки. После того как информация об об этой уязвимости была опубликована в Hacker News (хотя позже она была убрана), стало бессмысленно дальше держать ее в секрете.

К счастью, к моменту утечки подробной информации о проблеме, большинство крупных игроков майнинга Bitcoin уже обновило используемое ПО, обезопасив сеть от атаки, после чего Bitcoin Core опубликовали полную техническую информацию об ошибке.

Большое количество альткоинов, базирующихся на исходном коде Bitcoin, возможно, все еще уязвимо и факт публичной известности проблемы не снимает с них угрозы. Хотя, такие криптовалюты как Bitcoin ABC сразу же опубликовали обновления свое ПО, обезопасив свои сети от потенциальных атак.

По материалам Bitcoin Magazine

Читайте также

7902020-12-01

Santiment: Обвал BTC ниже $17k спровоцировали биткоин-киты

На прошлой неделе крупные держатели биткоина продали большую часть своих активов на пике цены ВТС в $19 300 долларов.

Bitcoin
5322020-12-23

Количество BTC-кошельков с балансом более $10 млн достигло 4500

Новое рекордное количество адресов с балансом более $10 млн зафиксировала компания The Block в начале недели – 4 500 кошельков.

Bitcoin

Последние статьи из раздела Bitcoin

Свежее видео на канале

Выбор редакции

190552017-12-10

Bitcoin: пирамида или нет?

С января 2009 года, когда был сгенерирован первый генезиз-блок bitcoin-сети, прошло уже девять лет, но до сих пор всякого рода "эксперты" ломают копья в спорах: являются ли криптовалюты финансовой пирамидой или нет. Быстрый рост доходности bitcoin и прибыли тех, кто раньше стал участником этой системы, пугает схожестью с пирамидами 90-х.

Bitcoin
149272018-04-28

on-chain и off-chain управление: за и против

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

Blockchain
132942020-10-30

Топ 10 крипто кошельков в 2020 году

По мере роста популярности криптовалют растет и спрос на качественные и безопасные криптовалютные кошельки.

Кошельки
106982018-06-25

Поиск серых майнеров в недрах Chrome и Opera

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

Безопасность
103292018-07-28

Грузинская криптокухня. Выбираем блюда

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

Право, Майнинг, Регуляторы
82652018-09-13

Три быка, которые могут спасти крипторынок

Несмотря на упадок криптовалютного рынка, долгожданное участие институциональных инвесторов в сделках с цифровыми активами уже не за горами. Такие известные фирмы, как Coinbase, Nasdaq и Bakkt уже вошли в мейнстрим, осталось только подождать, пока это сделает весь рынок цифровых активов.

Мнение