API Relay Audit — локальный аудит прокси для LLM

· 2 мин чтения
security ai-safety prompt-injection llm cli
📂 Исходный код на GitHub

Локальный инструмент для проверки сторонних прокси и шлюзов для LLM: находит скрытые инструкции в промптах, подмену модели, правку команд установки пакетов, странности в потоке SSE, утечки в ответах с ошибками и риски для кошельков Web3.

API Relay Audit — локальный аудит прокси для LLM

API Relay Audit: локальный аудит прокси для LLM

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

Проверить такого посредника на своей машине позволяет API Relay Audit. Это один Python-файл без внешних зависимостей. Он отправляет ключ API только на тот адрес прокси, который вы сами указали в командной строке.

Что проверяет инструмент

Инструмент смотрит, меняет ли прокси что-то на пути между вами и моделью. Есть четыре направления проверок:

  • Безопасность промпта. Скрытая внедрённая инструкция, попытка извлечь системный промпт, переопределение инструкций, устойчивость к обходу ограничений.
  • Целостность работы прокси. Обрезка контекста, подмена команд установки пакетов, утечки в ответах с ошибками, целостность потока.
  • Идентичность модели. Утечки имён других моделей, сигналы подмены модели, поведение Claude-совместимых и OpenAI-совместимых прокси.
  • Безопасность кошелька Web3. Проверки переводов, отказ подписывать транзакцию, отказ отдавать приватный ключ.

Откуда взялся инструмент

Замысел подсказан научной статьёй Your Agent Is Mine от Liu и соавторов. В ней описаны вредоносные прокси, которые подмешивают полезную нагрузку в запросы и выносят чужие учётные данные.

Отдельный толчок дал отчёт Anthropic от 10 сентября 2026 года. В нём описаны мошеннические продавцы Claude, которые меняют модель и собирают учётные данные через свои клиентские инструменты. Соавтор статьи Chaofan Shou рассказал 11 сентября, что купил данные роутера с ключами пользователей.

Быстрый старт

Скрипт тянут по конкретной версии, а не по ветке master:

AUDIT_SCRIPT_REF=v2.4.0
curl -fsSL "https://raw.githubusercontent.com/toby-bridges/api-relay-audit/${AUDIT_SCRIPT_REF}/audit.py" -o audit.py

python audit.py --key <YOUR_KEY> --url <BASE_URL> --output report.md

# Web3 / wallet users
python audit.py --key <YOUR_KEY> --url <BASE_URL> --profile web3 --output report.md

Полный прогон занимает около двух минут и стоит примерно 0,2–0,5 доллара по тарифам вашего провайдера. Отчёт в Markdown появляется в текущем каталоге. Пример отчёта с обезличенными данными лежит в репозитории: sanitized audit report.

Ветку master стоит указывать только если вы намеренно проверяете ещё не выпущенные изменения.

Что происходит внутри: 14 шагов

Шаги Что делает
1–2 Разведка инфраструктуры: DNS, CDN, SSL-сертификат, панель управления, перечисление доступных моделей
3 Лишние токены: сравнивает фактический расход токенов с ожидаемым. Скрытая инструкция добавляет токены, и разница это показывает
4 и 6 Извлечение промпта: три приёма — дословное воспроизведение, попытка через перевод, продолжение JSON. Плюс проверки устойчивости к обходу ограничений
5 Согласованность идентичности: ищет в ответах имена GPT, DeepSeek, GLM, Qwen и других моделей там, где заявлен Claude
7 Обрезка контекста: пять маркеров-«канареек» и бинарный поиск находят настоящую границу окна контекста
8 Подмена команд установки пакетов: сверяет команды из ответа с теми, что были отправлены, чтобы поймать правку на уровне прокси
9 Утечки в ошибках: семь намеренно сломанных запросов проверяют, не утекают ли ключи, переменные окружения, пути к файлам и внутренности LiteLLM
10–11 Целостность потока: список разрешённых событий SSE, монотонность расхода токенов, корректность подписи рассуждений, идентичность модели в потоке. Плюс проверки кошелька Web3

Три режима и две формы поставки

Проект существует в двух видах:

  • audit.py — один файл без зависимостей, удобно для быстрой проверки;
  • api_relay_audit/ и scripts/ — модульная версия для разработки, с тестами.

Режимы выполнения задают, что именно проверять:

  • general — обычные проверки прокси и LLM-прокси, режим по умолчанию;
  • web3 — проверки кошелька для агентных сценариев Web3;
  • full — общие проверки плюс проверки кошелька.

Плагин для DeepSeek Harness

Репозиторий — это ещё и устанавливаемый пакет dsh-api-relay-audit для DeepSeek Harness. Пакет ставится и на веб-версию, и на сторонние терминалы, которые пользуются официальным реестром @deepseek-ai/dsh-commands. Версию нужно зафиксировать:

DSH_PLUGIN_REF=v2.4.0
dsh plugin --profile web add "github:toby-bridges/api-relay-audit#${DSH_PLUGIN_REF}"

# dsh-cc-tui and other compatible profile-based clients
dsh plugin --profile cc-tui add "github:toby-bridges/api-relay-audit#${DSH_PLUGIN_REF}"

Команда /relay-audit берёт у текущего провайдера в DSH адрес baseURL, модель и ссылку на учётные данные. Сам ключ остаётся в хранилище DSH и передаётся процессу аудита через переменную окружения. В аргументах команды и в журнале сессии его нет.

/relay-audit
/relay-audit --connectivity
/relay-audit --profile web3 --fast-context
/relay-audit --url <URL> --model <claude-model> --credential-ref <DSH_CREDENTIAL_REF>

Запуск без аргументов означает полный аудит и может израсходовать заметное число токенов. Для дешёвой проверки есть --connectivity. Плагин не расширяет список моделей: проверяемая линия должна называться Claude, хотя сам интерфейс прокси может быть совместим с Anthropic или с OpenAI.

Подробности о поставке для агентов собраны в docs/skill-distribution.md.

Файлы навыков для агентов

В репозитории остались файлы навыков для OpenClaw и Hermes. В OpenClaw аудит запускается перед тем, как агент отдаст свой трафик стороннему прокси. В Hermes те же 14 шагов запускаются как навык агента прямо в рабочем процессе. Это вспомогательные способы доставки. Основной сейчас — плагин для DSH.

Границы доказательств

Если модель в ответе называет себя Qwen, DeepSeek, GPT или Claude, это сигнал о расхождении. Это не доказательство подмены. Чтобы утверждать что-то о провайдере, нужны подтверждения: сырой JSON ответа, идентификаторы запросов, метаданные провайдера и модели, подписи потока, хеши прозрачного журнала и повторяемый прогон.

GitHub Actions проверяет форму сообщений о находках, но публикация всё равно идёт через поддерживающего автора. О чувствительных находках нужно сообщать по инструкции из SECURITY.md.

Чего инструмент не делает

  • Не выдаёт прокси сертификат безопасности.
  • Не заменяет ручную проверку и наблюдение за системой в работе.
  • Не считает результат inconclusive чистым. Заблокированные пробы и неоднозначные ответы остаются в отчёте видимыми.

Сравнение с веб-сервисами

Инструменты решают разные задачи:

Инструмент Чем занимается
hvoy.ai Поиск репутации прокси
cctest.ai Проверка в один клик и распознавание канала
API Relay Audit Локальный открытый аудит с повторяемым отчётом в Markdown

Состояние проекта

Метрика Значение
Версия v2.4
Шагов аудита 14
Матрица рисков 6D
Тестов pytest 808
Флагов командной строки 22

Лицензия и цитирование

Лицензия AGPL-3.0-only, текст лежит в LICENSE. Она требует, чтобы сетевой сервис с изменениями оставался с открытым кодом. Тот же принцип проект применяет к экосистеме прокси, которую проверяет.

Для научных работ и отчётов есть файл CITATION.cff. В нём записаны две работы, на которые опирается модель аудита: Liu et al., Your Agent Is Mine (arXiv:2604.08407) и Zhang et al., Real Money, Fake Models (arXiv:2603.01919).

Где читать дальше

Источник: https://github.com/toby-bridges/api-relay-audit