Lightning Development Kit (LDK), библиотека для создания кошельков и платежных приложений Bitcoin Lightning, исправила уязвимость, которая могла позволить злонамеренному узлу-партнеру украсть стоимость переведенного платежа, солгав после повторного подключения. Разработчикам затронутых приложений необходимо интегрировать исправление в развертываемое ими программное обеспечение.
Выпущенные 1 октября версии безопасности v0.2.7 и v0.1.13 устраняют уязвимость повторного подключения LDK в ветках 0.2 и 0.1 соответственно. Bitcoin Optech описал исправления в своем бюллетене от 9 октября.
Как уязвимость повторного подключения LDK могла стоить биткоинов
Атака начинается с того, что узел-партнер подтверждает обновление, затем повторно подключается и утверждает, что никогда его не получал. До исправления это ложное утверждение могло привести к тому, что LDK подпишет конфликтующую транзакцию обязательств.
Транзакция обязательств представляет собой согласованное состояние канала и может быть использована для его урегулирования в блокчейне Биткоина. В сценарии, описанном в PR 5057, вновь подписанная транзакция не была записана монитором каналов LDK — компонентом, отслеживающим претензии по каналу в сети.
Этот пробел мог превратить переведенный платеж в убыток. Злоумышленник мог подтвердить транзакцию в сети и позволить платежу урегулироваться со следующим получателем. Затем он мог отозвать входящий платежный контракт по истечении срока его действия, даже несмотря на то, что пересылающий узел знал секрет, обычно используемый для получения платежа.
Пересылающее приложение заплатило бы вниз по цепочке, не получив соответствующего входящего финансирования. Исправление разрешает повторную передачу только до тех пор, пока подтверждение узла остается непогашенным, и принудительно закрывает канал, когда узел заявляет, что пропустил уже подтвержденное обновление.

Наряду с исправлением уязвимости повторного подключения LDK, версия 0.2.7 устраняет другой путь кражи, связанный с платежами LSPS2 по мере необходимости, когда служба ликвидности открывает канал в рамках обработки платежа.
Перехваченный платеж мог исказить свою сумму, что привело бы к открытию каналов службой и пересылке большего количества биткоинов, чем было предоставлено входящим платежом. Служба покрыла бы разницу из собственных средств. PR 5042 устраняет эту проверку суммы.
Эта уязвимость касается потока обслуживания LSPS2. В примечаниях к v0.1.13 указано общее исправление повторного подключения без упоминания исправления LSPS2.
Эти дефекты отличаются от ошибок перенаправления комиссий за вставку и загрузки сохраненного состояния, освещенных в отчете CryptoSlate от 13 сентября об LDK v0.2.6. Core Lightning является отдельной реализацией, как описано в обновлении ниже.
В документации по архитектуре LDK объясняется, что SDK компилируется и выполняется внутри приложений. Разработчики должны интегрировать соответствующий исправленный код библиотеки в развернутое программное обеспечение. Для интеграций LSPS2 в пояснении к коммиту PR 5042 указано, что платежные контракты, поставленные в очередь предыдущей версией, сохраняют непроверенные суммы; командам необходимо учитывать эти ожидающие контракты, а также обновлять библиотеку.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Liam 'Akiba' Wright




