Фонд Radix 17 сентября сообщил, что уязвимость, появившаяся при рефакторинге кода Radix Engine в 2023 году, была использована 31 августа. Злоумышленники вывели около $1,26 млн из нескольких хранилищ. Поскольку дефект затрагивал Radix Engine — компонент, который исполняет транзакции и проверяет право собственности на активы, — валидаторы Radix временно остановили достижение консенсуса, а операции в блокчейне не проводились более 10 дней.
Последствия инцидента не ограничились активами, которые удалось украсть напрямую. Расследование показало, что теоретически уязвимость могла быть использована против любого хранилища в сети, включая токены на пользовательских счетах, в приложениях и пулах ликвидности. Для торговых платформ и поставщиков ликвидности ключевой проблемой стало нарушение на уровне исполнения транзакций: система не обеспечила предусмотренные границы доступа к активам в хранилищах.
26 транзакций переместили несколько активов
Реконструкция публичного реестра сообщества показала, что 31 августа с 16:02 до 16:57 по UTC атакующий провел 26 эксплуатирующих транзакций. В результате были перемещены примерно 458 915 USDC, 72 420 USDT, 61,08 ETH, 6,35 Wrapped Bitcoin, 536,16 SOL и 32,91 BNB. По рыночным котировкам на 31 августа совокупная стоимость этих активов составляла около $1,26 млн, причем на два стейблкоина приходилось примерно $531 300.
Кроме того, атакующий вывел 13 000 XRD из одного хранилища для оплаты комиссий за транзакции. Затем похищенные активы перевели через Hyperlane в Ethereum, BNB Chain и Solana, где их обменяли на ETH. Фонд Radix заявил, что мост Hyperlane работал штатно: сначала активы были получены с помощью уязвимости в Radix Engine, и только после этого использован межсетевой сервис для их перемещения. Признаков компрометации приватных ключей на данный момент нет.
Сумма переведенных средств может не отражать полный экономический ущерб. По данным расследования, дефект не ограничивался активами, которые атакующий непосредственно вывел через межсетевую инфраструктуру. Такой же угрозе могли подвергаться другие токены и активы, находившиеся в хранилищах по всей сети.
Дефект появился после рефакторинга кода в 2023 году
Фонд Radix сообщил, что ошибка была внесена командой разработчиков RDX Works в июне 2023 года во время очистки кода Radix Engine. Уязвимость сохранялась в сети более трех лет, прежде чем была использована 31 августа 2026 года.
Проблема касалась обработки ссылок на хранилища. Транзакция могла использовать внутренний адрес для указания на хранилище другого пользователя и передавать эту ссылку определенному смарт-контракту. После этого Radix Engine разрешал вызвать стандартную функцию вывода средств, не выполняя надлежащую проверку права собственности на хранилище, то есть не отклонял несанкционированный запрос.
Согласно первоначальной архитектуре, вывести активы из хранилища мог только его владелец либо авторизованная транзакция. Из-за дефекта атакующий потенциально получал доступ к средствам на пользовательских счетах, в приложениях и пулах ликвидности без подписи владельца активов.
Код также проходил независимую проверку безопасности. Компания Zellic провела аудит протокола Radix в 2024 году, включая ядро движка, где находился дефект, однако не выявила уязвимость в механизме авторизации. Поскольку проблема возникла еще при более раннем рефакторинге, инцидент показал, что обычные изменения в коде могут менять заложенные предположения о безопасности и оставаться незамеченными при стандартном аудите.
Валидаторы остановили консенсус, чтобы прекратить операции
После того как расследование подтвердило, что проблема находилась в уровне исполнения транзакций, а не в отдельном приложении, валидаторы Radix согласовали совместные меры. Они добровольно вывели из работы достаточный объем стейка, чтобы сеть не могла достичь консенсуса и обрабатывать новые транзакции.
Остановка продолжалась более 10 дней. Обновление протокола добавило проверки, запрещающие использовать ограниченные ссылки на хранилища вместе со стандартными функциями вывода средств. Согласно реконструкции реестра сообщества, пользовательские транзакции возобновились 11 сентября.
Инцидент также вызвал вторичные потери в пулах ликвидности. После того как атакующий вывел активы из одной стороны нескольких торговых пар, соотношение цен в пулах исказилось. Другой аккаунт воспользовался аномальными котировками и вывел из затронутых пулов миллионы XRD. Этот эпизод показал, что после ухода первоначально украденных активов из сети уязвимость на уровне исполнения может продолжать создавать убытки через искажение цен и изменение условий ликвидности.
Radix расширит регрессионное тестирование и аварийные процедуры
Фонд Radix сообщил, что последующие меры будут включать расширение регрессионного тестирования, усиление процедур проверки безопасности и формализацию экстренных действий, которые валидаторы предприняли для восстановления безопасности сети. Работа будет направлена не только на закрытие использованного участка кода, но и на проверку всех изменений, затрагивающих логику авторизации.
Фонд также заявил, что в будущей работе по безопасности необходимо учитывать развитие инструментов анализа кода с использованием ИИ. По его мнению, такие инструменты могут помочь атакующим находить давно существующие дефекты. При этом раскрытая информация не подтверждает, что злоумышленник применял какой-либо конкретный инструмент.
Для разработчиков и валидаторов первоочередной задачей остается контроль за тем, чтобы техническое обслуживание не меняло модель разрешений без достаточного тестирования и проверки. Пользователей и поставщиков ликвидности прежде всего интересует, будет ли сеть стабильно проверять право собственности на хранилища и насколько быстро в аналогичной ситуации удастся задействовать обновленные аварийные процедуры. От этого зависят восприятие безопасности активов Radix и стабильность самой сети.