XRP Ledger подтверждает: 100 млрд XRP в безопасности после серьёзной уязвимости

XRP
обновление валидаторовцелочисленное переполнениецелостность эмиссиипроблема безопасностиXRP Ledgerbug bounty
1 час назадИсточник: crypto.news
XRP Ledger подтверждает: 100 млрд XRP в безопасности после серьёзной уязвимости

XRP Ledger исправил критическую уязвимость в системе безопасности, dating back to 2015, которая могла позволить злоумышленникам создать примерно 18 триллионов XRP с помощью одной специально разработанной транзакции, при этом более 80% доверенных валидаторов установили экстренное обновление 25 сентября.

Краткое содержание

  • Разработчики XRPL исправили критическую ошибку платежей, которая могла создавать расходуемые XRP сверх их предложения.
  • Исследователь Cayden Liao продемонстрировал, что с помощью одной специально созданной транзакции можно было выпустить примерно 18 триллионов XRP.
  • Команда безопасности не нашла доказательств того, что уязвимость переполнения была использована в публичных сетях.
  • Более 80% валидаторов по умолчанию обновились до xrpld 3.4.1 25 сентября, подтвердили разработчики.
  • Отдельное исправление валидации Batch было активировано 9 октября после того, как валидаторы отложили его первоначальный запланированный выпуск.

XRP Ledger Foundation и RippleX подтвердили уязвимость в раскрытии от 9 октября, объяснив, что ошибка в платежном движке сети могла привести к созданию расходуемых XRP сверх предусмотренного предложения в 100 миллиардов. Разработчики воспроизвели проблему во время тестирования и выпустили версию 3.4.1 для ее устранения. Их расследование не выявило доказательств того, что уязвимость была использована в публичной сети. Исследователь безопасности Cayden Liao и Veria AI получили максимальное вознаграждение программы bug bounty в размере 250 000 долларов после сообщения об уязвимости и демонстрации ее потенциального эффекта.

XRP Ledger исправляет ошибку, которая могла создать триллионы XRP

Уязвимость затронула платежный движок XRP Ledger, который обрабатывает переводы и транзакции, связанные со встроенной децентрализованной биржей сети.

Согласно официальному раскрытию, проблема возникла из-за целочисленного переполнения в программном обеспечении, написанном в 2015 году. Целочисленное переполнение происходит, когда вычисление дает число, большее, чем компьютерная система может представить с использованием выделенного количества битов.

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

Разработчики обнаружили, что злоумышленник мог создать сотни предложений со специальными ценами и организовать так, чтобы один платеж поглотил их. Когда рассчитанная сумма превышала максимальное значение целого числа, число могло обернуться к гораздо меньшей сумме. Система по-прежнему зачисляла отдельным продавцам полные amounts XRP, указанные в их предложениях, даже если покупатель платил только уменьшенную сумму, полученную в результате переполнения. Разница создавала XRP, которых ранее не существовало.

Согласно XRPL Foundation, полученная криптовалюта могла быть переведена на другие счета, продана или отправлена на биржи. В отчете описывался потенциальный результат: «Злоумышленник мог создать расходуемые XRP, намного превышающие общее предложение».

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

Между тем, отдельную проверку баланса счета можно было обойти, распределив вновь созданные XRP по нескольким кошелькам.

Исследователь обнаруживает потенциальную эксплуатацию на 18 триллионов XRP

Уязвимость привлекла внимание разработчиков после того, как исследователь безопасности Cayden Liao и Veria AI протестировали программное обеспечение XRP Ledger с открытым исходным кодом.

Veria Labs опубликовала свои выводы 10 октября, описав, как её автоматизированная система тестирования безопасности обнаружила проблему 21 сентября. На следующий день исследователи разработали рабочую концепцию доказательства на локальной тестовой сети.

По словам компании, демонстрация показала, что примерно 18 триллионов XRP могли быть созданы с помощью одной специально разработанной транзакции. Эта сумма была эквивалентна примерно 184-кратному предполагаемому общему предложению XRP, согласно расчётам исследователей. Эта цифра описывает результаты контролируемого тестирования безопасности, а не фактическое увеличение циркулирующего предложения криптовалюты. Ляо отправил информацию об уязвимости через официальную программу вознаграждения за обнаружение ошибок XRPL 22 сентября.

Инженеры RippleX воспроизвели проблему на отдельном сервере и подтвердили, что вновь созданные XRP могут быть потрачены в последующем платеже.

В первоначальном отчёте уязвимость была классифицирована как серьёзная, но разработчики повысили её уровень до критического после подтверждения потенциальных последствий. Veria Labs заявила, что уязвимость могла поставить под угрозу всю рыночную стоимость XRP, если бы злоумышленникам удалось её успешно использовать. Оценка компании была основана на рыночной капитализации XRP примерно в 94 миллиарда долларов на тот момент.

Однако цифра в 94 миллиарда долларов представляет собой оценку исследователем потенциального финансового риска, а не подтверждённые потери. Команда безопасности не обнаружила доказательств несанкционированного создания XRP в публичных сетях. 8 октября Veria AI получила максимальное вознаграждение в размере 250 000 долларов за выявление и ответственное раскрытие проблемы.

RippleX выпускает экстренное исправление без обычного процесса одобрения

После подтверждения уязвимости инженеры RippleX разработали исправление в период с 22 по 23 сентября. Патч был включён в версию xrpld 3.4.1, выпущенную 25 сентября.

Согласно официальному раскрытию, разработчики добавили проверки, которые не позволяют платёжному движку принимать вычисления, превышающие допустимый целочисленный диапазон. Обновлённое программное обеспечение отклоняет затронутые вычисления и возвращает обычную ошибку платежа вместо создания дополнительных XRP. Инженеры усилили проверку предложения сети, заменив существующую арифметику на более широкий счётчик, предназначенный для обнаружения подобных ошибок. Дополнительные расчёты баланса были проверены в качестве меры предосторожности.

Однако решение о развёртывании исправления создало необычную ситуацию для управления XRP Ledger. Обычно изменения в обработке транзакций должны проходить через систему поправок сети. Поправка требует поддержки более 80% доверенных валидаторов в течение двух последовательных недель перед активацией.

Для уязвимости переполнения платежа разработчики решили применить исправление немедленно при обновлении валидаторами своего программного обеспечения. XRPL Foundation объяснил, что обычный процесс подверг бы уязвимость риску, оставив её эксплуатируемой в течение периода одобрения.

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

Разработчики пришли к выводу, что ожидание обычного процесса внесения поправок могло создать дополнительные риски безопасности. Экстренный подход нёс отдельную проблему: валидаторы, работающие с разными версиями программного обеспечения, могли разойтись во мнениях о том, как обрабатывать вредоносную транзакцию.

В экстремальном сценарии разногласие могло временно помешать сети подтверждать новые реестры. Фонд заявил, что решение было принято по согласованию с RippleX, операторами валидаторов и другими участниками XRPL. К 25 сентября более 80% валидаторов в стандартном списке уникальных узлов обновились до версии 3.4.1.

Публичный исходный код был впоследствии выпущен после немедленного реагирования на угрозу безопасности. Записи о выпуске XRPL Foundation описывают версию 3.4.1 как экстренное обновление, устраняющее чувствительные к безопасности проблемы протокола.

XRP Ledger устраняет вторую уязвимость безопасности до активации Batch

Раскрытие от 9 октября охватывало ещё одну уязвимость, связанную с функцией пакетных транзакций XRP Ledger. Batch позволяет разработчикам объединять до восьми транзакций в одну операцию. Функция поддерживает различные режимы выполнения, включая схемы, в которых каждая транзакция должна быть успешной, чтобы вся операция была принята.

Во время тестирования безопасности исследователи обнаружили ошибку валидации, связанную с тем, как отдельные транзакции упаковывались внутри Batch. Протокол требовал, чтобы каждая транзакция использовала определённое поле с именем RawTransaction.

Однако программное обеспечение могло принимать альтернативные имена полей при определённых условиях. Исследователи обнаружили, что разные версии серверов могут по-разному обрабатывать такие неправильно отформатированные транзакции.

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

Разработчики отреагировали, представив поправку fixBatchV1_2. Поправка требует, чтобы каждая Batch-транзакция использовала утверждённый формат полей и отклоняла неправильно упакованные транзакции. Валидаторы временно отозвали поддержку более раннего графика активации BatchV1_1, пока разработчики завершали исправление.

И fixBatchV1_2, и BatchV1_1 активировались в основной сети XRP Ledger 9 октября. Активация XRP Ledger Batch получила поддержку 30 валидаторов, пять выступили против обновления, согласно данным XRPScan, включённым в проверенный отчёт сети.

Более раннее исследование обзора безопасности Batch подробно описывало экстренный выпуск 25 сентября и меры защиты, необходимые до активации функции. Первоначальная версия ранее сталкивалась с проблемами безопасности, включая вопросы авторизации транзакций, выявленные в ходе проверок разработчиками.

Отдельный аудит безопасности XRP Ledger в августе задокументировал 96 подтверждённых уязвимостей, выявленных в ходе конкурса Sherlock, охватывающего предложенные функции протокола.

Что касается последней уязвимости Batch, XRPL Foundation подтвердила, что затронутые поправки не были активны в основной сети на момент обнаружения проблемы. Никакие средства пользователей не были потеряны, никакие приватные ключи не были скомпрометированы, и никакой сбой консенсуса не произошёл из-за этого конкретного дефекта. Активация 9 октября означает, что серверы, работающие на старых версиях программного обеспечения, теперь заблокированы поправкой и должны обновиться до версии 3.4.1 или более поздней, чтобы оставаться синхронизированными.

XRPL Foundation заявила, что вводит дополнительное требование к верификации для будущих выпусков программного обеспечения: ранее сообщённые проблемы безопасности должны быть повторно протестированы на кандидатах на выпуск, прежде чем они будут классифицированы как исправленные.

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