Шутки кончились, пошли эксплойты: Владельцы веб-серверов учатся обманывать нейросети за секунду до парсинга
Веб-сайт может оставить для ИИ-агента команду там, куда человек почти никогда не смотрит. Signals Corps проверила 217 097 223 HTTP-ответа из сентябрьского среза Common Crawl и нашла 30 сайтов с попытками непрямой prompt injection через служебные заголовки ответа. Такие строки не видны на самой странице, но могут попасть прямо в контекст модели.
Всего 7 959 сайтов передавали в HTTP-заголовках данные, адресованные ИИ-системам. Подавляющее большинство лишь указывало на llms.txt, MCP-серверы и другие ресурсы для агентов. Из 30 сайтов с попытками навязать команды 22 отправляли безобидные розыгрыши, а 24 использовали для инструкций поле X-AI. Массовой вредоносной кампании в выборке не обнаружили.
Механика опирается на слабое место техники prompt injection: модель получает пользовательское задание и внешний контент в одном контексте и может принять чужой текст за инструкцию. HTTP-заголовок сработает только тогда, когда инструмент агента передаст его модели. Обычный браузер подобные строки пользователю не показывает, поэтому ручная проверка страницы может ничего не выявить.
Риск зависит от конкретного инструмента. Команда curl с параметром -i отдаёт модели все заголовки, экспериментальный directWebFetch в Gemini CLI может передавать их при ошибочных ответах, а Playwright MCP возвращает полные заголовки через browser_network_request. Инструмент, который забирает только тело страницы, полностью отсекает подобный канал передачи команд.
Signals Corps проверила Claude Opus, Sonnet и Haiku в Claude Code на тестовом сервере. При обычных заданиях модели видели внедрённую строку, но не выполняли её. Когда пользовательский промпт прямо давал сайту право диктовать инструкции, агенты подчинились в 7 из 9 запусков. Авторы подчёркивают, что каждый сценарий проверяли лишь один раз на модель и промпт.
Среди найденных заголовков были не только шутки. Два сайта подсовывали ИИ-системам вымышленную оценку кандидата в 94%, ещё один просил сообщить название модели на внешний адрес. Отдельная исследовательская ловушка AgentPwn предлагала агенту запустить команду npx, что при переносе приёма на вредоносный пакет могло бы привести к выполнению чужого кода.
Более неприятным сценарием Сара Эндрюс считает маскировку контента под конкретного ИИ-клиента. В выборке 136 сайтов уже определяли CCBot как ИИ-бота, что показывает готовность серверов различать машинных посетителей. Сервер способен показать агенту одни данные, а человеку при ручной проверке другие. Похожая проблема уже проявлялась в браузерных агентах, где внешний контент превращался в команду.
Signals Corps советует по умолчанию передавать модели только тело страницы, не разрешать сайтам задавать агенту правила через системные промпты и требовать подтверждение перед запуском команд из загруженного контента. Текущую угрозу HTTP-инъекций компания оценивает как низкую, однако рекомендует отдельно отслеживать маскировку и действия агента после веб-запросов.