В основную ветку программного обеспечения Lightning-узлов Eclair 2 и 5 октября добавили два исправления, призванных ограничить риск чрезмерных комиссий майнерам при финансировании каналов и их сплайсинге. Однако на 12 октября на странице релизов последней версией оставалась выпущенная в сентябре v0.14.3. Пока не подтверждено, что октябрьские изменения вошли в готовую сборку.
Eclair разрабатывает компания ACINQ. Исправления касаются комиссий при совместном финансировании каналов и сплайсинге, а также проверки транзакций в режиме Eclair-signer. Если уязвимость приводила бы к потерям, средства уходили бы майнерам в виде комиссии, а не напрямую злоумышленнику.
PR #3388 ограничивает рост комиссии при замене транзакции
Первое исправление, PR #3388, касается транзакций с заменой на версию с более высокой комиссией (RBF), которую предлагает контрагент. При открытии канала с совместным финансированием или изменении его финансирования через сплайсинг контрагент может предложить заменить транзакцию, повысив ставку комиссии. До исправления узел Eclair, вкладывающий средства, мог заплатить больше своей доли комиссии: в этом процессе не было явного лимита или бюджета.
Таким образом, недобросовестный контрагент мог добиться согласия финансирующего узла Eclair на произвольно высокую ставку комиссии, не оплачивая увеличение. Потери узла при этом получали бы майнеры в виде комиссии за транзакцию, а не сам контрагент.
Теперь Eclair отклоняет запросы, если ставка комиссии превышает рекомендованный программой предел для финансируемой транзакции. Ограничение не действует, если контрагент оплачивает ликвидность и покрывает комиссию за вклад Eclair либо если узел Eclair вообще не участвует в финансировании. В этих случаях расходы, на которые направлено исправление, не ложатся на узел.
PR #3390 проверяет фактическую комиссию в режиме signer
Второе исправление, PR #3390, относится к режиму Eclair-signer. В этой конфигурации биткоин-узел Bitcoin Core (bitcoind) выбирает монеты и формирует транзакцию, а Eclair хранит приватные ключи и подписывает её. Само по себе хранение ключей у Eclair не защищает от скомпрометированного узла: тот может сообщить комиссию в пределах бюджета, но составить транзакцию с более высокой оплатой, например удалив выход для сдачи.
В Bitcoin разница между суммой входов и суммой, направленной на выходы, становится комиссией майнерам. Поэтому удаление сдачи может привести к потере средств узлом, даже если деньги не отправляются на адрес злоумышленника.
Исправление рассчитывает реальную комиссию по стоимости расходуемых входов и запрашивает связанные транзакции по их идентификаторам, чтобы проверить эти суммы. Затем Eclair сопоставляет расчёт с комиссией, заявленной узлом Bitcoin Core, и применяет бюджет к фактической сумме, а не только к данным бэкенда. Кроме того, программа проверяет, что комиссия в части финансирования, которую восстанавливает Eclair, совпадает с подтверждённой, и отклоняет транзакции с неверным расположением выхода для сдачи.
В релизах октябрьские исправления пока не указаны
Два изменения вводят ограничения комиссий при совместном финансировании и сплайсинге каналов, а также проверку комиссий транзакций в режиме signer. Они не связаны с более ранней уязвимостью, касавшейся комиссий при совместном закрытии каналов, и с раскрытой 2 октября проблемой отказа в обслуживании, которая могла затрагивать узлы после перезапуска.
На 12 октября последней версией на странице релизов Eclair оставалась v0.14.3, выпущенная в сентябре. Внесение изменений в основную ветку не подтверждает их наличие в опубликованной сборке. Операторам узлов следует проверить, включены ли октябрьские исправления в используемую версию.