Разработчик Bitcoin Lightning Network компания ACINQ 27 октября выпустила Eclair 0.14.6. Обновление по умолчанию требует подтверждения входящих транзакций для сплайсинга каналов и меняет порядок расчетов и возврата средств при принудительном закрытии. Это должно ограничить риск, при котором узел-контрагент может использовать неподтвержденную транзакцию финансирования канала. ACINQ призвала операторов узлов установить обновление; сведений о фактической эксплуатации уязвимостей нет.
Как неподтвержденные средства ставят под угрозу платежи
Lightning Network проводит переводы биткоина через платежные каналы, поэтому каждую операцию не нужно записывать в блокчейн Bitcoin. Операторы могут также увеличивать или сокращать ликвидность уже открытого канала с помощью сплайсинга — операции, основанной на транзакциях в блокчейне.
Риск возникает, если при сплайсинге принимаются входы для финансирования, предоставленные контрагентом, но еще не подтвержденные сетью Bitcoin. Недобросовестный узел может после подписания операции потратить те же средства повторно. Если исходная транзакция финансирования из-за этого станет недействительной, это может нарушить расчеты по каналу.
При последующем закрытии канала в блокчейне под угрозой могут оказаться ожидающие выплаты, защищенные хешированными контрактами с временной блокировкой (HTLC): их исполнение зависит от действительности исходной транзакции финансирования. ACINQ указала на потенциальную проблему безопасности, но не сообщала о подтвержденной краже средств.
Для сплайсинга теперь нужны подтвержденные входы
В Eclair 0.14.6 добавлена настройка безопасности, которая не позволяет использовать входы контрагента для сплайсинга, пока сеть не подтвердит соответствующие транзакции. Обновление также запрещает создавать новые операции сплайсинга поверх изменений финансирования, которые еще не получили подтверждения. Это ограничивает накопление состояний канала, расчеты по которым остаются незавершенными.
По словам ACINQ, новое требование дополняет уже существующие меры защиты при совместном финансировании каналов. Теперь они применяются именно при создании канала, а для сплайсинга действует отдельная проверка подтверждений. При работе с контрагентами, которым нельзя доверять, компания также рекомендовала не включать опциональную функцию обязательства с нулевой комиссией во время сплайсинга. По умолчанию эта функция и раньше была отключена.
При принудительном закрытии используются подтвержденные состояния
Выпуск меняет поведение Eclair при необходимости закрыть канал, пока его транзакция финансирования не подтверждена. По новой логике выбирается транзакция обязательства, которую бэкенд Bitcoin Core распознает как обеспеченную средствами. Если нужно, Eclair возвращается к последнему подтвержденному состоянию финансирования, а не проводит расчет на основе транзакции, уже исчезнувшей из локального мемпула.
Еще одно исправление касается транзакций, которые майнеры могут подтвердить, хотя Eclair уже не считает их предпочтительным вариантом расчета. Раньше программа могла ошибочно приписать такие транзакции контрагенту. В результате доступные для возврата средства и выходы, связанные с ожидающими платежами, оставались невостребованными. Новая версия распознает такие транзакции и пытается вернуть связанные с ними выходы.
Обновление не требует закрывать действующие каналы
ACINQ рекомендовала операторам узлов на более ранних версиях Eclair установить исправление и оставить включенной по умолчанию защиту, требующую подтвержденных входов. Для обновления нужно остановить программу, установить новую версию и перезапустить узел. Закрывать существующие платежные каналы не требуется.
Уязвимости, исправленные в релизе, сообщил исследователь безопасности Эрик Честари (Erick Cestari). ACINQ предупредила, что некоторые из них могли позволить атаки со стороны недобросовестных узлов, однако не раскрыла, сколько узлов могло быть затронуто и происходили ли такие атаки на практике.