За последние два-три года компании в РФ перестали воспринимать ИИ как «чудо-машину» и начали активно внедрять его в рабочие процессы — от поддержки в чатах до написания кода и создания продуктов. Сегодня использование ИИ стало must have для специалистов. В этой статье речь пойдёт о безопасной разработке с генеративными ИИ, особенно в контексте ИИ-агентов.
Что происходит на рынке
Крупные отчёты NIST, ENISA и других регуляторов фиксируют: генеративный ИИ уже используется в разработке, тестировании и эксплуатации систем. Его применяют в DevSecOps — от code review до генерации инфраструктурного кода и управления конфигурациями.
Особое внимание стоит уделить так называемому «vibe coding» и coding-агентам — ИИ, которые работают в IDE, терминале или CI, умеют писать и запускать код, управлять файловой системой и git'ом.
Каждый такой инструмент — не просто «ещё одна модель», а новый элемент инфраструктуры. Вместе они формируют новый ландшафт угроз, который не покрывается классическим OWASP Top 10.
Дополнение — OWASP Top 10 for LLM Applications — выделяет риски, ранее не характерные для веб-приложений: prompt injection, небезопасная обработка вывода модели, чрезмерные полномочия агента, утечки секретов через контекст и другие.
Многие команды безопасности сегодня работают в режиме: «появился новый агент — срочно разбираем его код». Такой подход не масштабируется и не успевает за развитием технологий. Нужно переходить к системному подходу, применимому ко всем ИИ-агентам.
Основные термины в новой ИИ-реальности
LLM (Large Language Model) — большие языковые модели, способные генерировать текст, код и другие форматы. В контексте безопасности важно, что они могут принимать текстовый ввод и выполнять действия: писать код, управлять файлами, вызывать API.
Основные функции LLM:
- анализ и генерация кода
- принятие решений по типу «какой следующий шаг»
- формирование запросов к инструментам (shell, git и др.) через прослойку
Типичные права моделей:
- доступ к исходникам (read, реже write)
- доступ к конфигам и логам
- доступ к секретам через переменные окружения
Ключевые риски:
- prompt injection — модель можно «переубедить» выполнить нежелательное действие
- небезопасная обработка вывода — текст модели без фильтрации может попасть в shell, SQL или CI
- утечки данных — модель может раскрыть секреты или слить конфиденциальные данные
MCP (Model Context Protocol) — протокол, стандартизирующий подключение внешних инструментов к модели. Он описывает:
- доступные tools (чтение файлов, вызов HTTP, работа с БД)
- их параметры и возвращаемые значения
- ограничения и политики (директории, домены, методы)
Функции MCP:
- связывает модель с внешним миром
- позволяет переиспользовать tools с разными моделями
- структурирует взаимодействие: модель вызывает именованные действия, а не просто генерирует текст
Права MCP:
- доступ к файловой системе
- доступ к git
- доступ к сетевым сервисам
- редко — доступ к конфигам
Риски MCP:
- небезопасный дизайн tools (слишком широкие полномочия)
- отсутствие scoping (один сервер видит несколько репозиториев)
- отсутствие явной политики использования tools
ИИ-агент — это связка модели и окружения, в котором она работает: читает файлы, пишет код, запускает команды, ходит в сеть. Coding agent — частный случай, заточенный под разработку.
Функции ИИ-агентов:
- автоматизация рутинных задач разработчиков и DevOps
- полуавтоматический рефакторинг и code review
- работа с баг-репортами и тикетами
- автономное выполнение сценариев
Права ИИ-агентов:
- read/write в репозиториях и директориях
- вызов shell-команд, доступ к git и тестовым раннерам
- доступ к облачным sandbox'ам
Риски:
- чрезмерная агентность (агент получает root-доступ)
- инъекции (командная, файловая, конфигурационная) в LLM-контексте
- утечки секретов при логировании, аналитике, prompt-инжекции
Sandboxes — контейнерные песочницы, ограничивающие права и scope ИИ-агентов.
Исследование ИИ-агентов: что показал исходный код
ИИ-агенты следует рассматривать как обычное ПО. Для анализа я использовал semgrep для open-source решений и grep для проприетарных, фокусируясь на паттернах из OWASP Top 10 и LLM Top 10.
Анализировал несколько агентов (Nymbalist, Serena, NanoClaw, GoClaw, VibeKit), которые работают как «обвязка» вокруг LLM. Подход:
- статический анализ по правилам OWASP и LLM Top 10
- ручной разбор реализации sandbox, работы с секретами, мостов между LLM и инструментами
- динамические тесты в лаборатории с honeypot-файлами
Чем «болеют» ИИ-агенты?
Картина однотипная:
- Bash / shell-доступ — все агенты могут вызывать shell через spawn/exec, docker exec, SSH и т.п.
- Доступ к git с широкими правами — создание веток, коммитов, pull-requests. MCP-инструменты могут вызывать git напрямую.
- Флаги bypassPermissions — режимы вроде
allowDangerouslySkipPermissions: true, дающие агенту root-доступ без ограничений. При включении по умолчанию это создаёт высокий риск бесконтрольной поставки кода.
Какие возникают риски?
Сопоставление симптомов с OWASP LLM Top 10:
- LLM01 (prompt injection) — через инъекцию можно заставить агента выполнить reverse shell
- LLM02 (insecure output handling) — вывод модели без проверки приводит к выполнению опасных команд
- LLM07 (insecure plugin/tool design) — MCP-инструменты с избыточными правами
При слабом контроле и высоком доверии возможны:
- выполнение произвольных команд (включая reverse shell)
- развёртывание криптомайнеров
- считывание и выгрузка SSH-ключей, токенов
- модификация кода с backdoor'ами
- обход sandbox через docker.sock
- боковое движение через git, CI/CD, внутренние API
- утечки секретов через логи и аналитику
Безопасность ИИ-агентов от разработчиков
Некоторые разработчики внедряют меры безопасности:
- Sandbox по умолчанию — например, VibeKit использует Docker/Podman-песочницу с ограниченным workspace, управляемой сетью и ужесточёнными правами
- Управление секретами — отдельные модули для хранения и маскировки секретов
- Наблюдаемость с фокусом на безопасность — логи и дашборды, показывающие, с какими файлами и tools работал агент
- Документация по безопасной эксплуатации — рекомендации по запуску в изолированных профилях, ограничению сети, запрету доступа к прод-секретам
Однако у многих компаний остаётся проблема: каждый новый агент приходится анализировать почти с нуля, и не все доверяют дефолтным песочницам.
Системный подход: убрать слово «ИИ»
Если исключить слово «ИИ», картина упрощается: перед нами просто сервис (blackbox) с широкими правами — чтение/запись файлов, выполнение команд ОС, сетевые запросы, push в git.
Такую систему нужно оценивать через классические домены безопасности:
- Идентификация, аутентификация, авторизация — актор (человек или сервис) должен быть аутентифицирован, его действия — залогированы, доступы — сопоставлены с правами в целевой системе
- Минимальные привилегии — чётко определить scope: один репозиторий или монорепо? read-only или запись? только тесты или миграции? Каждый ответ — правило в policy
- Изоляция — где работает агент: в контейнере, на dev-машине, в CI runner? Какие директории смонтированы? Есть ли доступ к docker.sock или Kubernetes API?
- Сетевой контроль — может ли агент вызывать внешние API? Только через прокси? Как отслеживаются обращения к доменам не из white-list?
- Логирование и мониторинг — что пишется в логи и как долго хранится?
Не нужен новый фреймворк — достаточно классического подхода с пониманием, что из себя представляет ИИ-агент под капотом:
- Статический анализ кода и конфигов (профиль под OWASP + LLM Top 10)
- Динамические тесты в лаборатории с honeypot-файлами и включённой песочницей
- Чёткие правила авторизации: какие директории, tools и сети доступны
- Обязательный аудит и алерты на нетипичные действия
Как — и не тормозить разработку
История повторяется: сначала появляется удобный инструмент, потом безопасность говорит «стоп». С ИИ-агентами это особенно остро: разработчики видят, как можно сэкономить дни на миграциях или автоматизации багов.
Главная задача безопасности — не тормозить внедрение, а сделать его управляемым.
- Вместе с разработчиками исследовать стек ИИ-агентов, декомпозировать на слои: модель, обвязка, tools, sandbox и т.д.
- Выявить общие черты и разработать единый профиль безопасности, который урезает лишние права, но сохраняет функциональность. Определить: какие права нужны, какие mounts недопустимы, какие сети разрешены, что логируется.
- Тестировать гипотезы в изолированной лаборатории с honeypot-файлами и фейковыми секретами. Сначала убедиться, что агент ничего лишнего не видит и не делает, только потом пускать к реальным репозиториям.
При системном подходе каждый новый агент не будет требовать дней на анализ. Внедрение ускорится, коммуникация упростится, а исключения — как всегда — согласуются.