Hardening локальных агентов: как закрыть векторы prompt-injection в production-пайплайнах — 5 июля 2026 г. в 03:45:55.511
Hardening локальных агентов: как закрыть векторы prompt-injection в production-пайплайнах Локальные модели решают проблему утечки данных в облако, но не защищают от prompt-injection по умолчанию. В агентных пайплайнах на базе Ollama или vLLM невалидированный пользовательский ввод легко перезаписывает system prompt, меняет логику вызова инструментов или заставляет модель вернуть конфидиальные переменные окружения. Типичная ошибка — склеивание user_input и инструкций через простое конкатенирование без разделителей контекста. В production это ведёт к цепным реакциям: инъецированный промпт меняет параметры вызова bash-утилит, обходит rate-limits или выгружает дампы из подключённых баз данных. Защита строится по принципу defense-in-depth. Первый рубеж — изоляция контекста. Вместо монолитного prompt template используйте JSON-based instruction routing с явным разделением system, developer, user секций. Модели вроде Qwen3 или Mistral-Nemo корректно обрабатывают chatml-формат, но только если вы не склеиваете роли в одну строку. Второй рубеж — санитизация входящего потока. Регулярные выражения ловят базовые паттерны (ignore previous instructions, return system prompt), но современные атаки используют code-switching, базирующие шифрование или семантические обёртки. Поэтому на вход ставим lightweight guard-модель (например, 2B-parameter classifier) или правила на базе Pydantic для валидации схем данных до передачи в LLM. Третий слой — песочница исполнения и post-validation. Агенты не должны иметь прямого доступа к shell без allowlist-фильтрации параметров. Инструменты вызывайте через строго типизированные API с явным указанием разрешённых аргументов. На выходе ставим детектор галлюцинаций/отклонений: сравниваем семантический fingerprint ожидаемого tool-call с фактическим JSON-ответом модели. Если девиация превышает порог — дроп запроса и логирование в SIEM. Для автоматизации тестов используйте promptfoo для регрессионных проверок prompt-шаблонов и garak для стресс-тестирования локальных инстансов на устойчивость к adversarial payload'ам. В архитектуре это выглядит как state machine с явными переходами: Input -> Sanitizer -> Context Router -> LLM Inference -> Schema Validator -> Tool Executor. Каждая точка имеет circuit breaker при аномалиях. Мониторинг должен отслеживать не только latency и throughput, но и rate injection-attempts, fallback-вызовов и успешных bypass'ов. Логируйте raw prompt hash (SHA256) для аудита, но никогда не храните сами промпты в plaintext логфайлах. В продакшене локальный ИИ — это не black box, а управляемый конвейер с чёткими границами ответственности. #AI #LLM #OpenSource #AISecurity

