Инфляционный баг или как чуть не погиб биткоин

Фото - Инфляционный баг или как чуть не погиб биткоин
Баг, обнаруженный разработчиками Bitcoin Core, позволял бесплатно майнить десятки миллионов биткоинов.
В сентябре 2018 года разработчики тайно исправили уязвимость программного обеспечения, которая,  по определению известного криптопредпринимателя Самсона Моу, могла убить биткоин.

Как устранили ошибку CVE-2018-17144

Инфляционный баг был настолько фатальным, что разработчики Bitcoin Core приняли решение держать его в секрете. Криптосообществу первоначально открыли лишь часть правды, объявив, что обнаруженная уязвимость вызывает отказ в обслуживании. С ее помощью хакеры получали возможность отключать ноды и даже вызвать временную поломку значительного сегмента сети. Разработчики пояснили, что баг содержала версия Bitcoin Core, выпущенная годом ранее. Исправленную версию выпустили в течение 24 часов после инцидента.
Чтобы стимулировать быстрые обновления, было принято решение немедленно исправить и раскрыть менее серьезную уязвимость одновременно с обращением к майнерам, предприятиям и другим уязвимым системам, отложив публикацию полной версии, чтобы дать системам время для обновления
, – сообщается в отчете Bitcoin Core.
План сработал: свыше 50% хешрейта майнинга биткоина обновилось в течение нескольких дней. Ведь для многих криптанов формулировка “отказ в обслуживании” уже звучала достаточно тревожно. Позднее им сообщили, что баг можно было использовать для бесплатного майнинга не менее 21 млн BTC. 

Причины инфляционного бага

Первый отчет об ошибке отказа в обслуживании был отправлен в Bitcoin Core анонимным пользователем. Два часа спустя разработчик Мэтт Коралло понял, что ошибка на самом деле является инфляционной. Она возникла в результате неудачных попыток разработчиков повысить устойчивость биткоина к атаке двойной траты. Программисты нашли уязвимость, которая потенциально вызывала масштабный сбой нод, когда злоумышленник дважды тратил один и тот же UTXO (Unspent Transaction Output) в рамках одной транзакции. Обновление решало эту проблему масштабного сбоя системы крайне неудачным образом. Вместо выведения нод из строя, новая ошибка заставляла старых программных клиентов распознавать транзакции с двойной тратой как действительные.
Баги случаются. Это правда жизни. Я не критикую их за ошибку. Я критикую идиотов-минималистов, которые настаивают на том, что разработчики Core – это богоподобные личности и, безусловно, лучшие разработчики в мире™
, – твитнул ведущий разработчик протокола OpenBazaar Крис Пачия.