Дубли payment hash в BOLT11-инвойсах: расхождение библиотек уже привело к краже средств у LN-сервиса
Инвойс BOLT11 мог содержать несколько payment hash, и разные библиотеки брали разные из них: одни первый, другие последний. Если в системе сочетались обе трактовки, она считала выплату несостоявшейся после фактической оплаты, что позволяло вычерпывать баланс повторными выводами. По описанию в посте, именно так был взломан популярный Telegram P2P-бот и потеряны средства. Предложено изменение спецификации, отклоняющее инвойсы с более чем одним payment hash; обновлены тест-векторы.
Проверьте, как ваш стек парсит BOLT11: сравните поведение всех используемых библиотек и узла на инвойсе с несколькими payment hash. Отклоняйте такие инвойсы на входе и всегда сверяйте оплаченный хеш с тем, который ожидали, прежде чем считать выплату неуспешной. Проверьте логи автоматических выводов на расхождения между заявленными и реально проведёнными платежами. Подробности изменения спецификации — по ссылкам ниже.
Источники:
Оповещение оказалось полезным? Поддержи проект!
Не пропусти следующее оповещение.