Ошибка Биткойна позволила майнерам запускать код на узлах других людей

Разработчики Bitcoin Core сегодня раскрыли ошибку, которая позволяла майнерам удаленно аварийно завершать работу и выполнять код на узлах других людей.
Уязвимость CVE-2024-52911 затронула Bitcoin Core версий 0.14.1–28.4. Разработчик Кори Филдс ответственно раскрыл и помог исправить серьезную ошибку с помощью запроса на включение (PR) 31112.
Если бы майнер захотел использовать темный трюк, он мог бы выполнить программный код на различных узлах по всему миру.
К счастью, ошибка осталась неясной и, вероятно, не была использована из-за невероятно дорогого вектора атаки.
В частности, атака требовала от майнера направить потребляемую электроэнергию вычислительную мощность на майнинг особых типов блоков. Будучи гарантированными альтернативными издержками, эти недействительные блоки не могут получить право на фактическое вознаграждение в базе монет для возмещения затрат майнеров на электроэнергию.
Тем не менее, механизм атаки легко понять, хотя ее проведение дорого.
Мы публикуем рекомендации по безопасности Bitcoin Core уже около двух лет, и (на самом деле) мы только что раскрыли первую в истории проблему безопасности памяти: использование после освобождения в механизме проверки. Спасибо Кори Филдсу из DCI за обнаружение и отчет.
– Никлас Гёгге (@dergoegge) 5 мая 2026 г.
Майнер, создавший специально созданный блок с достаточным доказательством работы, может либо привести к сбою узлов-жертв и/или использовать этот сбой для использования его памяти для удаленного выполнения кода.
Bitcoin Core признал, что удаленное выполнение кода возможно, хотя и не привел конкретных примеров. Это подчеркнуло не только его стоимость и возраст, но и ограничения на данные блоков, из-за которых исторически маловероятно, чтобы майнеры участвовали в значимых эпизодах кукловодства.
Старые узлы биткойнов все еще подвержены риску ошибок
В рекомендации Bitcoin Core ошибка описывается как сбой интерпретатора сценариев. Во время проверки блока программное обеспечение Bitcoin Core предварительно рассчитывает и кэширует входные данные транзакции, а затем отправляет работу по проверке сценария в фоновые потоки, которые используют память компьютера.
В случае атаки CVE-2024-52911 узел может продолжать чтение из своей кэшированной памяти после того, как эти данные уже были освобождены из памяти другим процессом.
Поскольку эта атака представляет собой ошибку использования памяти после освобождения, во время этого ненормального состояния памяти возможно удаленное выполнение кода.
В частности, удаленное выполнение кода может произойти, когда поток фонового сценария узла читает кэшированные, предварительно вычисленные данные транзакции после того, как они были уничтожены проверкой сценария CScriptCheck.
Поскольку обновление полного узла Биткойн является добровольным, а обновления программного обеспечения не являются автоматическими, немалое меньшинство сети отложило обновление до версии 29 (v29) или выше.
В частности, согласно одной популярной оценке, около 43% узлов Биткойна все еще используют уязвимое программное обеспечение полного узла, основанное на коде до версии 29.
Bitcoin Core удаляет загрузки v30 из-за ошибки, которая может очистить кошельки эпохи Сатоши
Ответственное раскрытие информации в 2024 году
Еще в ноябре 2024 года Кори Филдс обнаружил ошибку и сообщил в частном порядке.
Через четыре дня после обнаружения Питер Вуилле выдвинул предложение по исправлению под номером PR 31112 под названием «Улучшение ведения журнала отладки ошибок проверки параллельных сценариев».
Рекомендации намеренно читались как обыденный ремонт сантехники в стиле технического обслуживания. Не вызывая тревоги, он исправил обработку возврата в очередь проверок Bitcoin Core и проверку скриптов.
PR Филдса и Вуйля быстро достиг технического консенсуса о слиянии в производство к декабрю 2024 года. Bitcoin Core 29.0 был выпущен с исправлением к апрелю 2025 года, а последняя уязвимая версия версии 28.x вышла из строя 19 апреля 2026 года.
Теперь, когда у операторов узлов было много месяцев на обновление, и в соответствии с политикой последних лет публичного раскрытия старых, ранее секретных исправлений ошибок, Bitcoin Core сегодня наконец объявил об ошибке на своем веб-сайте.
Разработчик Bitcoin Core Никлас Гёгге правильно заметил, что это «первая в истории проблема безопасности памяти» в Bitcoin Core. Он поблагодарил Филдса за ответственное раскрытие информации.
Исправление ошибки не изменило правила консенсуса Биткойна. Ошибка заключалась в программном обеспечении узла и использовании им проверок памяти компьютера, и исправление уже есть в текущих версиях Bitcoin Core v29 и более поздних версиях.