Core Lightning nodes can keep crashing after an upgrade until a stored trigger is removed
Кратко
- Обнаруженная уязвимость в Core Lightning затрагивает версии от v25.02 до v26.04 и связана с сохранением некорректного объявления, которое может многократно приводить к сбою узла.
- Обновление, выпущенное в апреле, отбрасывает новые некорректные объявления, но для удаления уже сохраненного триггера требуется ручная операция, по словам Бансала.
- Узел, работающий в автономном режиме, может пропустить важные запросы на открытие каналов, что может привести к риску потери средств.
Обнаруженная уязвимость в Core Lightning, программном обеспечении для сети Lightning, используемой в Bitcoin, может приводить к тому, что узел будет выходить из строя при перезапуске, даже после обновления, поскольку вредоносное объявление, которое вызвало сбой, остается на диске.
Исследователь Нишант Бансал в своем сообщении от 24 октября указал, что уязвимость затрагивает версии от v25.02 до v26.04. После сохранения объявления, перезапуск узла повторно загружает этот же триггер. Бансал утверждает, что оператор должен вручную удалить проблемную запись, чтобы восстановить работу узла.
Bitcoin Optech осветил эту проблему 30 октября, но профилактическое обновление было выпущено несколько месяцев назад. Core Lightning внесла изменения в PR #9082 24 апреля и выпустила исправление в версии v26.04.1 25 апреля. Сообщение от октября объясняет уязвимость, для которой профилактическое исправление было доступно еще в апреле.
Почему обновление не удаляет сохраненный триггер
Объявления каналов сообщают узлам о соединениях в сети маршрутизации Lightning. В данном случае, объявление содержало имя ранее неизвестного узла в качестве обоих конечных точек. Уязвимое программное обеспечение приняло это объявление и записало его в локальный gossip_store, прежде чем загрузить его в сеть маршрутизации.
Затем сеть попыталась вставить этот узел дважды. Механизм защиты от дубликатов прервал работу gossipd, компонента, обрабатывающего эти объявления, и Core Lightning восприняла эту ошибку как критическую для всего узла.
Обновление проверяет порядок конечных точек, прежде чем принять объявление. Требование, чтобы идентификатор первого узла был строго меньше идентификатора второго, также отбрасывает объявления с одинаковыми идентификаторами. Это предотвращает принятие и сохранение некорректных данных.
Новая проверка применяется к входящим объявлениям. При запуске узел все равно считывает записи, уже находящиеся в gossip_store, и обновление не удаляет вредоносную запись, сохраненную до сбоя.
Требование Бансала заключается в ручном удалении вредоносной записи из gossip_store. Простое удаление файлов не устраняет уязвимость: в сообщении указано, что злоумышленник может повторно отправить то же объявление, пока вывод финансирования, контролируемый злоумышленником, остается неиспользованным.
В заметках Optech для Bitcoin указано, что версии Core Lightning, выпущенные до v25.02, могли принимать и передавать подобные объявления, не вызывая сбоев в своей работе. Следовательно, злоумышленнику не требовалось прямого подключения ко всем уязвимым узлам.
Для тех, кто планирует обновление сейчас, версия v26.04.1 содержит первое исправление этой уязвимости. По состоянию на 2 ноября, последняя версия проекта - v26.06.9, выпущенная 7 октября, настоятельно рекомендуется к установке.
Простой в работе сервиса сопряжен с риском потери средств, помимо недоступности сервиса. Бансал предупреждает, что узел, находящийся в автономном режиме, не может отслеживать цепочку блоков в поисках отмененного состояния канала или запроса на оплату с ограниченным сроком действия, который необходимо выполнить до истечения срока. Пропуск этих событий может привести к риску потери средств.
Контекст статьи.
