Разработчик запускает AI-инструмент командной строки для анализа проекта. Инструмент читает файлы, вывод команд, описания задач и фрагменты внешних данных. Среди этих данных может оказаться скрытая инструкция: вывести переменные окружения, прочитать конфигурацию или переслать фрагмент секрета. Если инструмент имеет слишком широкие права, такая инструкция становится не просто текстом, а началом утечки.
Опасность AI CLI в том, что он находится рядом с самым чувствительным контекстом разработчика: ключами, токенами, локальными конфигурациями, приватными репозиториями и историей команд. Даже если модель не должна действовать вредно, она может спутать недоверенные данные с задачей пользователя.
Практическая защита строится вокруг изоляции: инструмент не должен видеть домашний каталог целиком, рабочие секреты, производственные ключи и сеть без контроля. Нужно считать, что любой прочитанный файл может содержать враждебную инструкцию.
Такой подход не запрещает AI-инструменты разработки, а делает их безопаснее: они получают ровно тот контекст, который нужен для задачи, и оставляют журнал действий.

Откуда приходит внедрённая инструкция
Внедрение не обязательно находится в очевидном вредоносном файле. Инструкция может попасть в описание задачи, комментарий, внешний отчёт, файл примера, зависимость или вывод теста. AI-инструмент видит этот текст и может принять его за часть рабочей цели.
Поэтому важно разделять источник данных и уровень доверия. Файл из внешнего отчёта не должен иметь такую же силу, как команда пользователя или системная политика.
- помечать недоверенные источники;
- запрещать действия по тексту из файлов;
- не давать доступ к секретам по умолчанию;
- проверять вывод перед отправкой;
- отделять анализ от выполнения команд;
- логировать прочитанные пути;
- блокировать вывод похожий на ключи.
Безопасный профиль запуска
Самый простой контроль — запускать AI CLI в контейнере или изолированном окружении с пустым домашним каталогом. Внутрь монтируется только нужная папка проекта, а токены заменяются фиктивными значениями. Сеть либо отключается, либо ограничивается разрешёнными адресами.
Для критичных репозиториев полезно иметь отдельный профиль: только чтение, запрет записи за пределами рабочей ветки, запрет запуска произвольных команд и обязательное подтверждение перед сетевым запросом.
- пустой домашний каталог;
- монтаж только нужного проекта;
- фиктивные переменные окружения;
- запрет доступа к ключам SSH;
- ограничение сети;
- журнал всех команд;
- ручное подтверждение рискованных действий.
Детектирование утечки
Если секрет всё же попал в вывод или сетевой запрос, нужно быстро определить масштаб. Для этого проверяют историю команд, журналы прокси, события репозитория и изменения токенов. Сам факт запуска AI CLI после чтения недоверенных файлов должен быть сигналом повышенного внимания.
Команда должна заранее знать, какие ключи ротировать первыми: облачные токены, ключи AI API, токены репозитория, учётные данные пакетов и доступы к средам сборки.
- искать вывод похожий на секрет;
- проверять сетевые обращения CLI;
- сравнивать время чтения файлов и запросов;
- ротировать ключи AI API;
- отзывать токены репозитория;
- проверять журналы сборки;
- создавать задачу на исправление профиля запуска.
Журналирование и доказательства
Контроль работает только тогда, когда его можно проверить после инцидента. Для AI-системы важно хранить не только итоговый ответ, но и источник данных, роль пользователя, версию политики, решение фильтра и действие человека. Иначе расследование превращается в спор о том, почему модель ответила именно так.
Команде безопасности нужен единый минимум полей. Он должен попадать в SIEM или отдельный журнал, но с ограничением доступа, потому что сами запросы и ответы могут содержать чувствительные сведения.
- идентификатор пользователя;
- роль и группа доступа;
- источник данных;
- идентификатор документа или объекта;
- решение политики;
- причина блокировки;
- следующее действие;
- владелец исключения.
Порядок внедрения
Начинать нужно с ограниченного сценария, а не со всей компании. Команда выбирает один поток данных, задаёт ожидаемые права, проводит негативные тесты и только затем расширяет область. Такой подход снижает риск скрытой утечки и позволяет быстро исправлять схему доступа.
Для каждого правила нужен владелец. Он отвечает за исключения, срок действия, качество сигнала и связь с рабочим процессом разработки или SOC.
- выбрать критичный сценарий;
- описать роли пользователей;
- подготовить запрещённые примеры;
- включить подробный журнал;
- проверить ложные срабатывания;
- назначить владельца правила;
- повторять тест после каждого изменения.
Метрики качества
Успех нельзя измерять числом красивых ответов модели. Важно считать, сколько запросов было корректно заблокировано, сколько утечек обнаружено тестами, сколько исключений выдано вручную и как быстро владелец данных исправляет неправильные права.
Если метрики показывают рост ручных исключений, значит политика доступа слишком грубая или модель получает данные раньше, чем проверяются права.
- доля заблокированных запрещённых запросов;
- доля ошибочных разрешений;
- время расследования;
- число ручных исключений;
- число повторных нарушений;
- покрытие негативных тестов;
- срок ротации ключей.
Рабочий пример контроля
Команда может начать с простой таблицы проверок. В ней для каждого критичного действия указаны роль, объект, ожидаемый отказ, журнал и владелец правила. Такая таблица удобна тем, что её понимают разработчики, SOC и владелец продукта. Она превращает общую фразу «проверить безопасность AI» в конкретный набор условий.
Пример не должен содержать реальные секреты или производственные данные. Для проверки создаются синтетические пользователи, фиктивные документы, тестовые токены и отдельная среда. Если AI-инструмент не проходит такой тест, его нельзя подключать к рабочему потоку без ограничения прав.
- создать тестовые роли;
- создать разрешённые и запрещённые объекты;
- запустить одинаковые запросы от разных ролей;
- проверить отказ для чужих данных;
- сохранить журнал источников;
- назначить владельца исправления;
- повторить проверку после изменения политики.
Что делать после найденной ошибки
Ошибка в AI-сценарии редко исправляется одной правкой текста запроса. Нужно понять, где именно нарушилась граница: в источнике данных, в индексе, в правах роли, в кэше, в командной среде или в тестах. После этого команда фиксирует не только симптом, но и корневую причину.
Если найденная проблема могла раскрыть данные, нужно считать её полноценным инцидентом низкой или средней тяжести до завершения проверки. Это означает ротацию затронутых ключей, ограничение доступа, уведомление владельца данных и повторный прогон негативных тестов.
- зафиксировать исходный сигнал;
- выделить затронутые роли;
- проверить журналы доступа;
- отключить рискованное исключение;
- ротировать затронутые секреты;
- обновить тесты;
- проверить отсутствие повторов.








