Ошибка Core Lightning может вызывать постоянные сбои узлов после обновления, пока не будет удалён сохранённый триггер
Ключевые выводы
- •Ошибка затрагивает версии Core Lightning с v25.02 по v26.04 и была публично раскрыта исследователем Нишантом Бансалом 24 октября.
- •Сфабрикованное анонсирование канала с одинаковым ID узла в качестве обеих конечных точек принимается, записывается в gossip_store и приводит к сбою узла при каждом перезапуске, поскольку граф маршрутизации пытается вставить этот узел дважды.
- •Профилактическое исправление было объединено 24 апреля и выпущено в релизе v26.04.1 25 апреля — за несколько месяцев до октябрьского раскрытия, привлекшего внимание к дефекту.
- •Поскольку исправление проверяет только входящие анонсирования, а при запуске читаются уже сохранённые записи, операторам необходимо вручную удалить вредоносную запись из gossip_store, чтобы восстановить падающий узел.
- •Офлайн-узел не может отслеживать блокчейн на предмет отозванных состояний каналов или ограниченных по времени требований платежа, поэтому длительные сбои могут поставить средства оператора под угрозу.

Ошибка Core Lightning может вызывать постоянные сбои узлов после обновления, пока не будет удалён сохранённый триггер
Раскрытая ошибка в Core Lightning — программном обеспечении для платёжной сети Lightning Bitcoin — может приводить к падению узла при каждом перезапуске даже после обновления, поскольку вредоносное анонсирование, вызвавшее сбой, остаётся сохранённым на диске.
Исследователь Нишант Бансал раскрыл проблему 24 октября, указав на затронутые версии с v25.02 по v26.04. После сохранения анонсирования каждый перезапуск загружает тот же триггер, и, по словам Бансала, оператор должен вручную удалить проблемную запись, чтобы восстановить узел.
Bitcoin Optech — технический информационный бюллетень, отслеживающий инженерные разработки в Bitcoin, — обратил внимание на эту проблему 30 октября, однако профилактическое исправление появилось несколько месяцев назад. Core Lightning объединила pull request #9082 24 апреля и выпустила исправление в релизе v26.04.1 25 апреля. Таким образом, октябрьское раскрытие описывает ошибку, профилактическое исправление для которой было доступно ещё с апреля.
Почему исправление не удаляет сохранённый триггер
Анонсирования каналов сообщают узлам о соединениях в графе маршрутизации Lightning. Платежи проходят через эти записанные соединения, поэтому каждый узел маршрутизации зависит от точной копии графа для перемещения средств. В данном случае сфабрикованное анонсирование указывало один и тот же ранее неизвестный узел в качестве обеих конечных точек. Уязвимое ПО приняло его, записало на диск в gossip_store, а затем загрузило в граф маршрутизации.
После этого граф попытался вставить этот узел дважды. Защита от дубликатов прервала работу gossipd — компонента, обрабатывающего эти анонсирования, — и Core Lightning расценила этот сбой как фатальный для всего узла.
Исправление проверяет порядок конечных точек перед принятием анонсирования. Требование, чтобы первый ID узла был строго меньше второго, также отклоняет одинаковые ID, что предотвращает принятие и сохранение некорректных данных.
Однако проверка применяется только к входящим анонсированиям. При запуске по-прежнему читаются записи, уже находящиеся в gossip_store, и обновление не удаляет вредоносную запись, сохранённую до сбоя. Именно поэтому, согласно требованию Бансала, для восстановления необходимо вручную удалить вредоносную запись из gossip_store.
Только очистка также оставляет уязвимую установку подверженной повторному сбою: согласно раскрытию, злоумышленник может повторно отправить то же анонсирование, пока контролируемый им вывод финансирования — блокчейн-вывод, открывший канал, — остаётся непотраченным.
Экспозиция через ретрансляцию, рекомендации по обновлению и риск простоя
Bitcoin Optech отмечает, что релизы Core Lightning до v25.02 могли принимать и ретранслировать такие анонсирования без собственного сбоя. Следовательно, злоумышленнику не требовалось прямое соединение с каждым уязвимым узлом, поскольку ретранслируемое анонсирование пересылается дальше каждому пиру узла и может переносить некорректную запись глубже в сеть.
Для операторов, выбирающих обновление сейчас, v26.04.1 является первым релизом, содержащим исправление этого дефекта. По состоянию на 2 ноября последним релизом проекта является v26.06.9, выпущенный 7 октября, который сопровождающие настоятельно рекомендуют установить.
Простой несёт риск для мониторинга платежей помимо недоступности сервиса. В Lightning соблюдение правил канала возлагается на оператора узла. Бансал предупреждает, что офлайн-узел не может отслеживать цепочку на предмет отозванного состояния канала или ограниченного по времени требования платежа, которое необходимо предъявить до истечения срока. Пропуск этих событий может поставить средства под угрозу.
Первоисточник: CryptoSlate