Способ удалённо обрушить узлы на Windows, macOS и BSD без доступа к системе нашли в Bitcoin Core

9861
Способ удалённо обрушить узлы на Windows, macOS и BSD без доступа к системе нашли в Bitcoin Core

Защитный механизм продолжал принимать сообщения даже после остановки чтения.

image

Один подключённый компьютер способен вывести из строя узел Bitcoin Core на Windows, macOS или BSD. Разработчики обнаружили уязвимость, позволяющую удалённому участнику сети бесконтрольно расходовать оперативную память жертвы. Причиной оказалась ошибка в обработке TCP-соединений.

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

Проблема связана с механизмом контроля сетевых соединений. На Windows, macOS и BSD программа использует системный вызов select(), который отслеживает активность сокетов. Когда входящая очередь достигает установленного предела, Bitcoin Core временно прекращает чтение новых сообщений. Такой механизм защищает оперативную память от переполнения.

Однако обработчик select() продолжал следить за исключительными событиями даже после приостановки чтения. Отправив специальные срочные TCP-данные, известные как urgent или out-of-band, атакующий мог заставить программу снова читать сокет. Новые сообщения попадали в очередь в обход установленного ограничения, постепенно занимая всю доступную память.

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

Уязвимость обнаружили 23 октября 2026 года с помощью Project Loupe, автоматизированного инструмента анализа кода на базе языковых моделей. Проект создал Элиас Рорер из Spiral. Грегори Сандерс проверил находку и в тот же день передал сведения команде безопасности Bitcoin Core. Таким образом, нейросеть помогла найти ошибку, которую затем подтвердил человек.

26 октября разработчик Антуан Пуансо подготовил исправление, которое включили в основные поддерживаемые ветки программы. Версии Bitcoin Core 31.2 и 32.1 вышли 27 октября, а 29.5 и 30.4 появились на следующий день. Всего за пять дней команда прошла путь от обнаружения проблемы до выпуска исправленных сборок для пользователей.

В опубликованном 28 октября описании уязвимости разработчики уточнили, что проблема позволяет легко нарушить работу подключённого узла. Сведений о реальных атаках документ не содержит. Ошибка не связана с кражей биткоинов, получением доступа к кошелькам или нарушением криптографической защиты блокчейна.

Случай показателен и для безопасности открытого ПО. Автоматический анализ исходного кода помог выявить опасную ошибку всего за несколько дней до выхода обновления. Владельцам узлов Bitcoin Core на Windows, macOS и BSD рекомендуется установить исправленную версию, чтобы исключить возможность удалённого сбоя.