Обычный запрос к платному API мог закончиться списанием всего баланса криптокошелька, если оплатой управлял ИИ-агент без ограничений. Компания V12 обнаружила 25 уязвимостей в инструментах протокола x402 для автоматических платежей. Три ошибки признали критическими, ещё 13 получили высокий уровень опасности, девять отнесли к среднему и низкому.
Протокол x402 позволяет платить во время обращения к серверу. Вместо обычного ответа сервис возвращает код HTTP 402 с ценой, адресом получателя и вариантом оплаты. Клиент подписывает платёж и повторяет запрос. Механизм удобен для автономных агентов, но требует строгих правил расходования средств. Похожую опасность ранее выявляли в платёжных протоколах для ИИ.
Главная угроза для кошельков скрывалась в настройках клиента по умолчанию. Программа выбирала первое предложенное сервером условие оплаты без ограничения суммы. Злоумышленник с контролем над API мог запросить весь остаток подходящего токена. Если агент автоматически подписывал платежи, а приложение не задавало собственных лимитов, перевод мог пройти без отдельного подтверждения.
Другая уязвимость затрагивала платежи в сети Solana. Компонент на TypeScript принимал разрешение на списание токенов за реальный перевод, хотя деньги фактически не перемещались. При локальной проверке V12 получила подтверждение успешной оплаты без передачи средств. Продавец мог выдать платный ресурс бесплатно, а сервис проверки платежей ещё и оплатил бы сетевую комиссию.
Третья ошибка касалась входа на сайты с помощью криптокошелька. Клиент Sign-In-With-X подписывал сообщение сервера, не сравнивая указанный домен с адресом посещённого сайта. Подконтрольный атакующему сервис мог получить подпись для другого ресурса и попытаться захватить сеанс пользователя. Проверка подтвердила создание такой подписи, но не захват реальной учётной записи.
V12 передала сведения о трёх критических и 13 опасных ошибках разработчикам x402 12 августа. К 20 августа критические проблемы исправили, а 9 сентября компания направила ещё девять находок. Специалисты Orbis AppSec проверили изменения в исходном коде и связали исправления с выпусками от 18 августа. Подтверждённых атак на настоящие кошельки пока нет.
В версиях TypeScript 2.23.0, Python 2.20.0 и Go v2.23.0 ввели лимит в один доллар на платёж и разрешили только признанные долларовые стейблкоины. Общий бюджет расходов разработчики задают отдельно. Исправления не обозначили как устранение уязвимостей и не выпустили предупреждений. Для трёх критических ошибок не опубликованы баллы CVSS и версия шкалы.
V12 также предлагает автономную систему аудита кода. Сервис подключается к репозиториям, проверяет изменения, показывает опасный участок, тест для воспроизведения ошибки и вариант исправления. Проверки можно запускать при каждом обновлении проекта. Похожий автоматический аудит развивают другие компании, но предлагаемые исправления всё равно нуждаются в проверке разработчиков.
