Bitcoin Core раскрыла три уязвимости 28 октября и выпустила исправления в версиях 29.5, 30.4, 31.2 и 32.1, включая уязвимость, позволяющую вредоносному пиру завершить работу нод на Windows, macOS и BSD.
Программное обеспечение Bitcoin Core позволяет операторам независимо проверять блокчейн Bitcoin и включает кошелек. Проект классифицирует две уязвимости, связанные с ростом памяти, как умеренно опасные, а третью, связанную с хранимыми данными блокчейна, — как низко опасную. В трех уведомлениях не указано, были ли замечены случаи эксплуатации этих уязвимостей.
Для операторов на ветках 29.x, 30.x и 31.x исправленные точечные выпуски — 29.5, 30.4 и 31.2 соответственно. Версия 32.1 является последним выпуском. Операторам, использующим более ранние точечные выпуски в этих ветках, следует выполнить обновление.
Уязвимость сбоев в нелинуксовых системах позволяет подключенному злоумышленнику отправлять специально помеченный сетевой трафик, известный как срочные данные TCP, чтобы обойти ограничения на объем входящих данных, которые нода помещает в очередь для обработки. Очередь может расти без ограничений, пока нода не исчерпает память. Linux не затронут этой конкретной уязвимостью, поскольку он использует другой механизм для мониторинга сетевых соединений.
Вторая ошибка роста памяти позволяет вредоносному узлу притворяться, что он использует старый протокол, не поддерживающий современные ping-сообщения, тем самым избегая тайм-аута, который обычно приводит к его отключению. Задерживая чтения, узел может заставить ноду продолжать помещать объявления в очередь. Использование памяти может увеличиваться до 2 МБ в час на каждый входящий узел или до 5 МБ в час на каждый исходящий узел. Ноды, настроенные на передачу только блоков, затрагиваются гораздо меньше.
Риск отдельного хранения остается
Третья уязвимость связана с файлами «отмены», которые хранят информацию, необходимую для отмены блоков при реорганизации блокчейна. Майнер может заставить эти файлы превысить лимиты размера, что приведет к повреждению данных или отключению затронутых нод. Bitcoin Core считает эксплуатацию этой уязвимости непрактичной: на 64-битных системах для подготовки потребуется добыча нескольких тысяч специально сконструированных блоков, а также дополнительные точные условия для атаки, основанной на реорганизации.
Исправления устраняют этот недостаток на 64-битных системах, включая Windows, но 32-битные системы и ноды, хранящие блоки на файловой системе FAT32, остаются уязвимыми. Если данные для отката уже повреждены, перезапуск недостаточен; восстановление требует перестроения индекса блокчейна с использованием исправленной версии.
Сообщения указывают, что все три проблемы были обнаружены с помощью автоматизированного сканирования ИИ от проекта Loupe компании Spiral, а Грегори Сандерс подтвердил результаты и сообщил о них в Bitcoin Core. Проект классифицировал все три как «легко обнаруживаемые». Его политика раскрытия информации предписывает публиковать исправления по всем поддерживаемым веткам и уведомление без обычного эмбарго для этой категории.
Для обновления операторам следует полностью завершить работу Bitcoin Core перед установкой или заменой программного обеспечения, согласно инструкциям по выпуску. В этих заметках также указано, что версии 29.x и более ранние достигли конца жизненного цикла и больше не будут получать обновления.


