Lightning Network ужесточил правила BOLT11 после атаки на вывод биткоина
Разработчики Lightning Network изменили стандарт счетов BOLT11, чтобы исключить двойное толкование платёжных полей. Поправка появилась после сообщения об атаке, из-за которой завершённые выводы биткоина выглядели неоплаченными.
19 октября разработчики Lightning Network обновили BOLT11 — стандарт формирования счетов в сети. Теперь спецификация требует ровно одно поле payment hash и ровно одно поле payment secret: если поле отсутствует или встречается повторно, платёж отклоняется.
Изменение связано с историей, которую 10 сентября описал разработчик Roasbeef. Он рассказал о взломе Telegram-бота для P2P-платежей: разные библиотеки по-разному обрабатывали счёт с несколькими хешами — одни брали первое поле payment hash, другие последнее. Дату инцидента и размер потерь разработчик не назвал.
Из-за этого сервис мог отслеживать вывод средств по одному хешу, а нода проводила платёж с другим. Завершённый вывод в итоге выглядел неоплаченным — это открывало возможность для повторных выплат. Проблема возникала на стыке между исполнением платежа и внутренним учётом сервиса.
23 сентября, ещё до изменения спецификации, разработчики ноды lnd добавили отклонение счетов с повторяющимся payment hash. Исправление вошло в релизы v0.20.5-beta и v0.21.4-beta. Отдельное предложение по проверке payment secret, включая запрет на повторное поле s, по состоянию на 27 октября оставалось открытым.
23 октября на изменение обратил внимание сервис Bitcoin Optech. Автор предложения отмечает: успешное декодирование счёта само по себе не гарантирует, что платёж пройдёт — часть проверок выполняется позже, на этапе обработки платежа.
Разработчики указывают операторам платёжных сервисов на два шага: отклонять счета с неоднозначными полями и следить, чтобы учёт вывода средств совпадал с тем payment hash, который использует нода.
Источник
- CryptoSlateLightning tightens invoice rules after reported attack made Bitcoin withdrawals look unpaid

