Рынок

В XRP Ledger закрыли критическую уязвимость десятилетней давности

В XRP Ledger (XRPL) закрыли критическую уязвимость, которая позволяла выпускать новые XRP в обход правил эмиссии. По данным разработчиков, ошибка существовала

5 мин чтенияИсточник: ForkLog
В XRP Ledger закрыли критическую уязвимость десятилетней давности
TelegramВКонтактеWhatsApp

В XRP Ledger (XRPL) закрыли критическую уязвимость, которая позволяла выпускать новые XRP в обход правил эмиссии. По данным разработчиков , ошибка существовала в коде платежного механизма с 2015 года.

Изначально проблему обнаружили специалисты Veria Labs. Сооснователь компании Кейден Ляо отметил, что ошибку нашел ИИ-агент — он же создал действующий эксплойт.

Our AI found a bug that let anyone mint infinite XRP, with $94B at risk. It had been hiding in one of the most audited codebases in crypto for nearly a decade, and earned us the maximum $250K bounty. Here’s how it went unnoticed, and how we found it. https://t.co/m7rSD8mKS5

В основе уязвимости — целочисленное переполнение в расчетном механизме. Когда одна транзакция исполняла сразу много ордеров из книги заявок, итоговая сумма могла быть посчитана неверно.

Для атаки злоумышленнику потребовалось бы создать несколько сотен аккаунтов и выставить с них заявки на продажу небольшого количества токенов за непропорционально большие суммы в XRP. Крупный стартовый капитал ему не понадобился бы: он потратил бы лишь несколько сотен монет на резервы и обычные комиссии.

Затем он отправил бы транзакцию, которую специально составил так, чтобы она исполнила все заявки одновременно. Из-за переполнения покупатель заплатил бы всего несколько сотен дропов и комиссию, а продавцы получили бы полную стоимость ордеров. На разнице он фактически получил бы новые XRP, которые мог бы переводить и продавать.

Защитный механизм, который должен был блокировать выпуск монет из ниоткуда, опирался на ту же арифметику и потому не фиксировал нарушение.

По оценке Ляо, одной такой транзакции хватило бы, чтобы создать около 18 трлн XRP — примерно в 180 раз больше совокупного предложения криптовалюты (при общем предложении 100 млрд XRP).

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

Исправление без голосования валидаторов

Veria Labs сообщила о проблеме 22 сентября. Через три дня вышла версия серверного ПО xrpld 3.4.1 с исправлением.

Обычно изменения правил обработки транзакций в XRPL проходят процедуру поправок. Новое правило включается, только если его две недели поддерживают более 80% доверенных валидаторов.

На этот раз от стандартного механизма отказались: исправление начинало действовать на каждом узле сразу после обновления. Так поступили впервые за более чем десять лет существования системы поправок.

Причиной стала критичность уязвимости. Код xrpld открыт, поэтому любой релиз с патчем указывает и на саму ошибку. При обычной процедуре исправление несколько недель оставалось бы публичным, но еще не действовало. За это время злоумышленники могли бы найти баг и воспользоваться им.

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

Тем не менее команда сочла этот сценарий менее опасным, чем бесконтрольный выпуск новых XRP.

Более 80% валидаторов из списка по умолчанию установили новую версию в день релиза, 25 сентября. Исходный код обновления опубликовали лишь спустя примерно две недели.

По словам Ляо, Ripple выплатила Veria Labs максимальное вознаграждение по программе поиска уязвимостей — $250 000. Исследователь назвал его крупнейшей известной ему выплатой за баг, полностью найденный ИИ-агентом.

Обновление 3.4.1 также устранило отдельную ошибку в функции Batch. Она позволяет объединять до восьми транзакций в одну операцию.

Сервер не проверял, в какое поле обернута каждая вложенная транзакция. Из-за этого злоумышленник мог записать в реестр некорректную структуру. Такая запись осталась бы в истории навсегда и могла нарушить работу обозревателей блокчейна, индексаторов и SDK.

Кроме того, узлы с разными версиями ПО обработали бы такую операцию по-разному. При определенных условиях это грозило остановкой подтверждения новых реестров.

На момент обнаружения ошибки Batch еще не работала в основной сети, поэтому средства пользователей не пострадали.

В отличие от исправления платежного механизма, эту ошибку устранили через стандартное голосование валидаторов. Поправка fixBatchV1_2 вступила в силу 9 октября, незадолго до активации самой функции.

После инцидента команда XRPL введет обязательное повторное тестирование исправленных уязвимостей перед каждым релизом. Глава инженерного направления RippleX Дж. Айо Акинеле также заявил , что команда расширит поиск багов с помощью ИИ и применение формальной верификации кода.

Напомним, в середине августа злоумышленник вывел $200 000 из кроссчейн-моста XRP.

Подписывайтесь на ForkLog в социальных сетях

Поделиться новостью

TelegramВКонтактеWhatsApp