Сеть XRP Ledger обнаружила уязвимость в механизме делегирования полномочий, из-за которой делегат с правом PaymentBurn мог в определённых условиях не только уничтожать токены, но и выпускать новые. Официальная документация XRPL уже рекомендует эмитентам не делегировать PaymentBurn до активации поправки fixCleanup3_4_0.
Делегирование полномочий было запущено в основной сети 8 октября. Оно позволяет аккаунту передавать отдельные задачи второму аккаунту, который подписывает транзакции собственными ключами. По замыслу, рутинные операции выполняются на «горячих» ключах, а ключи с полным контролем остаются офлайн. Из двенадцати детализированных разрешений два связаны с предложением токенов: PaymentMint покрывает платежи, создающие взаимозаменяемые токены или Multi-Purpose Tokens (MPT), а PaymentBurn — платежи, которые их уничтожают. Согласно документации, сжигание должно останавливаться на нулевом балансе, но именно на этой границе находилась ошибка.
До исправления burn-only делегированный платёж мог в некоторых обстоятельствах пересечь нулевой баланс и выпустить новые токены на доверительной линии или MPT. Поправка fixCleanup3_4_0 отклоняет такие платежи, если у делегата одновременно нет права PaymentMint. Остальные одиннадцать полномочий не затронуты. Уязвимость нельзя использовать для создания новых XRP, однако она ослабляет контроль над эмиссией токенов — именно ту функцию, ради которой эмитенты держат основные ключи офлайн.
Риск усугубляется тем, что холодное хранение основных ключей эмитента не защищает от компрометации ключей делегата. Делегированные транзакции подписываются мастер-ключом, регулярным ключом или списком мультиподписи самого делегата. Если делегат с правом PaymentBurn скомпрометирован или действует за пределами мандата, у фиатного токена может возникнуть расхождение между количеством единиц в обращении и фактическими резервами.
Это вторая проблема в функции делегирования XRPL. Первоначальная версия была отозвана в 2025 году после того, как тестировщик обнаружил на devnet возможность списывать комиссии с аккаунтов, которые не подписывали транзакции; до основной сети она так и не дошла. Замена — PermissionDelegationV1_1 — была активирована 8 октября, в то время как исправление PaymentBurn ещё набирало поддержку валидаторов. Поскольку каждый грант публично фиксируется в записях Delegate, риску подвержены только эмитенты, делегировавшие PaymentBurn после запуска. На момент публикации пострадавшие эмитенты или случаи злоупотребления не выявлены.
Согласно правилам XRPL, поправка требует супербольшинства доверенных валидаторов в течение двух непрерывных недель. При 35 отслеживаемых валидаторах порог составляет 29 голосов. Поддержка уже один раз падала: 21 октября она опускалась до 26 валидаторов, что отложило активацию. К 2 ноября за исправление высказались 33 из 35 валидаторов. Самое раннее окно активации — 4 ноября около 14:46 UTC, если поддержка не опустится ниже 29. fixCleanup3_4_0 объединяет 25 изменений, включая хранилища, кредитование, AMM, NFT, эскроу и спонсорство, а исправление PaymentBurn — последний пункт в списке.
Эмитентам рекомендуется до активации поправки прекратить делегировать PaymentBurn, пересмотреть все записи Delegate, отозвать уже выданные разрешения через новый DelegateSet и отдельно проверить прошлые платежи делегата. Возобновлять делегирование PaymentBurn стоит только после того, как fixCleanup3_4_0 будет отображаться как активированная в основной сети.