Разработчики Bitcoin Core объявили о выявленной критической уязвимости CVE-2024-52911, которая позволяла майнерам удаленно выполнять произвольный код на чужих узлах сети. Ошибка затрагивала версии программного обеспечения с 0.14.1 по 28.4 и была исправлена в обновлении v29.
Как сообщает разработчик Cory Fields, уязвимость представляла собой use-after-free в механизме валидации скриптов. Во время проверки блоков ПО предварительно кэшировало данные транзакций, а затем передавало их на фоновые потоки для валидации. При атаке узел мог продолжать считывать данные из уже освобожденной памяти, что открывало возможность для удаленного выполнения кода.
Эксперты отмечают, что для реализации атаки требовались значительные затраты вычислительных ресурсов. Майнерам пришлось бы направлять электроэнергию на создание специальных блоков, которые не могли быть вознаграждены монетой базы, что делало атаку экономически нецелесообразной. Тем не менее, теоретически уязвимость могла привести к сбоям узлов или даже их компрометации.
Кто остался уязвимым?
По данным разработчиков, около 43% узлов сети Bitcoin до сих пор работают на уязвимых версиях ПО (до v29). Обновление до актуальной версии остается добровольным, так как система не поддерживает автоматическое обновление.
Как была устранена угроза?
Уязвимость была обнаружена Cory Fields в ноябре 2024 года и оперативно исправлена в рамках Pull Request 31112, озаглавленного как «Улучшение отладочного журнала ошибок параллельной валидации скриптов». Исправление было представлено в виде рутинного обновления, чтобы скрыть его истинную важность.
«Это первая за последние два года уязвимость, связанная с безопасностью памяти в Bitcoin Core. Credit за обнаружение и reporting принадлежит Cory Fields из DCI». — Niklas Gögge (@dergoegge)
Разработчики подчеркивают, что, несмотря на теоретическую опасность, атака оставалась крайне маловероятной из-за высоких затрат и ограничений на структуру блоков.