Ошибка в коде 2015 года позволяла потенциальному злоумышленнику обойти жесткое ограничение на общее предложение XRP, зафиксированное на уровне 100 млрд токенов, и выпустить бессчетное множество новых монет. Эти монеты затем можно было бы тратить как обычные. Разработчики связали уязвимость с ошибкой переполнения при обработке массовых сделок на встроенной децентрализованной бирже XRP Ledger.

Как уязвимость работала в XRP Ledger: когда система обрабатывала одну транзакцию, закрывавшую сразу несколько сотен заявок на продажу, она спрашивала, сколько XRP списать с покупателя. Если сумма получалась слишком большой и выходила за рамки максимально допустимого значения, система сворачивала сумму в маленькое число. В итоге система платила продавцам столько, сколько те просили, а с покупателя брала лишь эту странную маленькую сумму плюс комиссию. А разница — большие деньги — как будто создавалась из воздуха и становилась новыми токенами XRP, которых вообще не должно было появиться.

Для успешной атаки хакеру требовалось создать несколько сотен аккаунтов, разместить на каждом ордер на продажу крошечного объема какого‑либо токена за очень большое количество XRP, а затем одним платежом купить все эти ордера сразу. Затраты на атаку составляли лишь несколько сотен «дропов», минимальной единицы XRP, плюс стандартные комиссии и резервы за создание аккаунтов плюс ордеров — эти средства возвращаются при удалении объектов. При этом новонапечатанные XRP можно было свободно перемещать, обменивать или отправлять на биржи.

Разработчики блокчейна заявили, что исправили уязвимость. По утверждению команды RippleX, свидетельств эксплуатации уязвимости ни в одной публичной сети нет.

Несколько месяцев назад в блокчейне приватной криптовалюты Zcash обнаружили ошибку, которая позволяла создавать неограниченное количество поддельных токенов ZEC внутри пула. Причем эта уязвимость существовала с мая 2022 года.