RippleX и XRP Ledger Foundation раскрыли детали критической уязвимости в платежном движке сети. Ошибка переполнения позволяла с помощью специально составленной транзакции создать XRP сверх фиксированного предложения и потратить их как обычные монеты. Баг существовал в коде с 2015 года.
Схема была дешевой^ Атакующий создавал несколько сотен аккаунтов, каждый выставлял ордер на продажу копеечного количества токена за огромную сумму XRP, а затем одним платежом выкупал их все разом. Сумма этих ордеров превышала предел 64-битного числа и "обнулялась" до крошечного значения. В итоге продавцы получали полные суммы, а покупатель платил копейки. Встроенная проверка на создание новых XRP считала так же и ничего не замечала. Атака стоила лишь несколько сотен XRP на резервы аккаунтов и комиссии.
Уязвимость нашел исследователь Кейден Ляо с командой Veria AI. По его словам, их доказательство концепции позволяло выпустить около 18 трлн XRP за одну транзакцию, в 184 раза больше максимального предложения в 100 млрд. Он получил максимальное вознаграждение по программе, $250 тыс.
Исправление вышло 25 сентября в версии xrpld 3.4.1, и уже в тот же день его установили больше 80% валидаторов основного списка. Впервые за десять лет изменение в обработке транзакций выпустили в обход обычного голосования валидаторов, из-за тяжести уязвимости. Следов эксплуатации бага в публичных сетях не нашли.