
Три уязвимости Bitcoin Core выявлены с помощью языковой модели
Уязвимости Bitcoin Core, найденные автоматизированным сканером
Уязвимости Bitcoin Core были обнаружены в ходе работы системы автоматического анализа кода, основанной на большой языковой модели. Сканирование проводилось в рамках инициативы Project Loupe, которую развивает Элиас Рорер в составе компании Spiral. Результаты перед передачей группе безопасности проекта проверил разработчик Грегори Сандерс.
Первая ошибка затрагивала обработку срочных TCP-данных в операционных системах, отличных от Linux. Атакующий, имеющий подключение к узлу, мог отправлять специально сформированные пакеты, обходить встроенные ограничения на объем очереди сообщений и вызывать бесконтрольное расширение использования оперативной памяти. Итогом становилось аварийное завершение работы узла. Узлы под управлением Linux не подверглись риску, поскольку в них задействован иной механизм контроля сетевых подключений.
Вторая уязвимость также приводила к неограниченному накоплению данных в памяти. Подсоединенный узел мог заявлять о применении устаревшей версии сетевого протокола и искусственно замедлять обработку сообщений. Согласно данным официального сообщения Bitcoin Core, объем используемой памяти увеличивался до 2 МБ в час для каждого входящего соединения и до 5 МБ в час для каждого исходящего. Этот дефект автоматизированный сканер зафиксировал 15 сентября, а 21 сентября его независимо выявил еще один разработчик.
Третья уязвимость и реакция разработчиков
Третья обнаруженная ошибка получила низкий уровень серьезности. Она касалась файлов, содержащих информацию для возможной реорганизации цепочки блоков. Майнеры получали возможность создавать блоки, провоцирующие переполнение файлов отмены изменений, так называемых undo-файлов. При определенной последовательной реорганизации цепи часть узлов могла аварийно завершить процесс. На 64-битных системах эксплуатация требовала значительных вычислительных мощностей: по оценкам разработчиков, подготовка заняла бы около месяца майнинга всей сетью. В то же время на Windows-машинах и 32-битных платформах сбой мог происходить без проведения такой реорганизации.
Устранение проблемы для 32-битных узлов и конфигураций с хранением блоков на файловой системе FAT32 не стало полным. Для остальных случаев ошибку исправили, в том числе за счет перехода на 64-битные целые числа для хранения позиций в файлах.
Исправления для всех трех уязвимостей вошли в версии Bitcoin Core 29.5, 30.4, 31.2 и 32.1. Релизы 31.2 и 32.1 стали доступны 27 октября, а версии 29.5 и 30.4 — 28 октября. Информация об ошибках была раскрыта одновременно с выходом обновлений.
Новые правила раскрытия ошибок, доступных для автоматического поиска
В день публикации исправлений команда Bitcoin Core сообщила об изменении политики раскрытия уязвимостей. Если дефект классифицируется как тот, что большая языковая модель способна выявить без значительных усилий, подробности публикуются одновременно с выходом корректирующих релизов для всех поддерживаемых версий. Стандартный период задержки, ранее достигавший года для ошибок среднего уровня серьезности, в таких случаях больше не применяется.
Для прочих уязвимостей сохраняются прежние сроки. Информация об ошибках низкой степени опасности раскрывается через две недели после выпуска основной версии с исправлением. Данные о дефектах среднего и высокого уровней предаются огласке спустя две недели после завершения жизненного цикла последней уязвимой версии.