Разработчики XRP Ledger раскрыли критическую ошибку в движке платежей: специально подготовленная операция могла создать и затем потратить новые XRP сверх изначальных 100 млрд монет. Дефект закрыли 25 сентября в xrpld 3.4.1; признаков его использования в публичных сетях команда не обнаружила.

Для атаки нужно было открыть несколько сотен аккаунтов и выставить с каждого предложение продать крошечное количество токена за огромную сумму XRP. Один платёж выкупал все предложения разом. При сложении итоговая сумма не помещалась в 64-битное целое число и превращалась в небольшое значение: покупатель платил почти ничего, а аккаунты-продавцы получали полные суммы — уже не существовавшие до транзакции XRP.

Встроенная проверка запрета новой эмиссии использовала такое же сложение и пропускала подмену, а лимит отдельного аккаунта обходился распределением монет по множеству адресов. RippleX воспроизвела атаку на локальном сервере и подтвердила, что созданные XRP можно отправить дальше. Случайно попасть в уязвимый путь было нельзя; исследователи оценили подготовку в несколько сотен XRP для резервов, большую часть которых можно было вернуть, плюс обычные комиссии.

Исправление вошло в экстренный выпуск xrpld 3.4.1 без обычного двухнедельного голосования за поправку: открытый патч одновременно показал бы способ атаки, пока сеть ещё оставалась уязвимой. Это создало риск рассогласования старых и новых серверов, однако более 80% валидаторов из стандартного списка доверия обновились в день релиза. Теперь движок проверяет переполнение, а независимая контрольная сумма использует более широкий счётчик; исходный код версии опубликован после раскрытия.