Уязвимость отказа в обслуживании (DoS) была исправлена и раскрыта широкой публике в версии 0.16.3 программного обеспечения Bitcoin Core. В случае злонамеренного использования ошибки, она может быть применена для атаки на узлы и, в худшем случае, приведет к временному сбою значительного сегмента сети.
Однако эту уязвимость могут использовать только майнеры, дважды тратя транзакцию и помещая ее в блок. Но и для них это не совсем просто. Если они попытаются атаковать, они потеряют свою награду за блок, которая составляет более $75 000 по сегодняшним ценам.
Уязвимость была обнаружена в версии Bitcoin Core 0.14.0, которая была выпущена в марте 2017 года. Но проблема была выявлена лишь на прошлой неделе, что побудило разработчиков принять меры и в конечном итоге выпустить исправление в течение 24 часов. И, к счастью, большинству пользователей биткоина не нужно ничего делать, чтобы защититься от этой уязвимости.
Разработчики подчеркнули, что биткоины «на хранении» не подвержены риску. Тем не менее, это может повлиять на тех, кто использует сеть Lightning - второй уровень Биткоина, находящийся в разработке, который позволяет быстрее и дешевле совершать транзакции.
Тем не менее, поскольку ошибка потенциально опасна для сети, разработчики настоятельно советуют пользователям, которые применяют так называемые «полные узлы», хранящие полную историю транзакций Биткоина, обновить свое программное обеспечение. Модератор Theymos также закрепил уведомление об этом в сабреддите сообщества Биткоина.
Команда Bitcoin Core сопроводила патч следующим замечанием:
«Мы настоятельно призываем всех участников сети обновиться как можно скорее».
Влияние на Lightning
Как оказалось, популярная цитата в технических кругах точно описывает подобные ошибки.
«Распределенная система - это та, в которой ошибка компьютера, о которой вы даже не знали, может сделать его непригодным для использования», - сказал известный специалист по информатике Лесли Лэмпорт (Leslie Lamport).
В этом конкретном случае майнер, осуществляющий некорректную транзакцию, может воздействовать на узлы, работающие в сети. Как отмечается в информационном бюллетене Bitcoin OpTech, майнер должен будет дважды потратить биткоин, чтобы повлиять на узлы Биткоина.
Код Биткоина настроен на защиту от такого рода проблем, но эта ошибка показывает, как через нее можно пробиться. И подобные уязвимости – признак того, что Биткоин не готов к широкомасштабному внедрению. Если подобная атака будет осуществлена, она может повлиять на пользователей, использующих Lightning в основной сети.
«Если вы достаточно безрассудны для использования Lightning в основной сети на этой стадии, вы действительно должны без промедления обновиться или закрыть свои каналы. К счастью, обновиться достаточно легко», - сказал на Reddit Греггори Сандерс (Gregory Sanders), разработчик Blockstream.
Поскольку Lightning находится на стадии разработки, она требует от пользователей следить за своими «каналами», которые хранят их биткоины на экспериментальном слое. Таким образом, они могут остановить сторону, с которой они создали канал, если она попытается их обмануть. Особую озабоченность вызывает следующее: если узел пользователя обрушен майнером, использовавшим уязвимость, то злоумышленник может использовать эту возможность, чтобы обмануть других пользователей Lightning.
Тем не менее, некоторые разработчики утверждают, что успешно осуществить подобную операцию было бы довольно сложно. Вот почему некоторые утверждают, что обычным пользователям не нужно беспокоиться об этой уязвимости, хотя в свете общего риска существует общее чувство безотлагательности обновления.
«Если вы не управляете бизнес-узлом или узлом Lightning, вы ничем не рискуете», - добавил Сандерс позже.
Итого
Однако понять, насколько эта ошибка значительная в контексте истории Биткоина, не так-то просто.
Инженер Blockchain.info Антуан Ле Кальвез (Antoine Le Calvez) составил список аналогичных эксплойтов, обнаруженных за прошедшие годы, показывая, что они были более распространены на заре Биткоина.
Но разработчик Bitcoin Core Люк Дашир (Luke Dashjr) ответил на это, утверждая, подобных уязвимостей вряд ли становится меньше со временем.
«К сожалению, я думаю, что в последние годы мы просто страдаем от недостатка информации по обнаружению эксплойтов, меньше их не становится», - сказал он.
Он также признал, что не знает причин этому, но некоторые ошибки в программном обеспечении Биткоина найдены и исправлены, но никогда не публиковались.
Между тем некоторые делают другие выводы из ошибки - а именно, что программисты Биткоина - простые смертные. Ведущий разработчик OpenBazaar Крис Пасиа (Chris Pacia) утверждает, что, хотя многие пользователи считают разработчиков Биткоина одними из лучших в мире, это доказывает, что они на самом деле являются обычными специалистами, которые сталкиваются с препятствиями.
«Ошибки случаются, это суровая реальность», - заметил он в Твиттере. «Я не критикую их за ошибку. Я критикую идиотов-минималистов, которые настаивают, что разработчики Core – это божественные создания».
Тем не менее, Камарена думает, что учитывая нюансы ошибки и то, насколько сложно осуществить атаку, сообщество обращает на нее слишком много внимания. Он сказал: «Это серьезная ошибка, но не такая ужасная, как многие пытаются ее подать».