ВведениеИИ-агенты программирования — это уже не простые инструменты автозаполнения. Они читают репозитории, проверяют проблемы, редактируют файлы, запускают скрипты, вызывают инструменты, открывают сетевые соединения, а иногда вносят изменения, готовые к продакшену. Это делает их полезными, но также меняет модель безопасности.Ключевой вопрос больше не сводится к тому, может ли модель отказаться от вредоносного запроса. Более сложный вопрос — что агенту разрешено делать во время выполнения: какие файлы он может читать, какие скрипты выполнять, может ли выходить в интернет, подключены ли секреты, и оставляет ли каждое действие полезный след для аудита.Эта статья переосмысливает исходное обсуждение Дружественного огня и Агента-отступника в практическое руководство по безопасности для команд, использующих ИИ-агентов программирования в реальных рабочих процессах разработки.## Ключевой выводОбщий сигнал, стоящий за Дружественным огнем и Агентом-отступником, прост: непроверенный контекст может стать опасным, когда агент воспринимает его как источник полномочий.README репозитория, скрипт зависимости, архив, загруженный клиентом, или блок кода в чат-боте могут выглядеть как обычный ввод. Но если агент читает эти данные и затем действует на их основе, имея доступ к файловой системе, оболочке, сети или учетным данным, то эти данные фактически пересекают границу доверия.Для использования в продакшене агент не должен быть окончательным авторитетом в вопросе разрешения вызова инструментов. Он может предложить действие. Уровень разрешений, песочница, политика безопасности и человек-контролер должны решать, разрешено ли действие на самом деле.## Почему важен Дружественный огоньДружественный огонь фокусируется на реалистичном сценарии безопасности: поручение ИИ-агенту программирования проверить сторонний репозиторий с открытым исходным кодом на уязвимости. Этот сценарий привлекателен, потому что выглядит как оборонительная мера. Команда не просит агента атаковать что-либо. Она просит агента проверить код и предложить исправления.Проблема в том, что проверка безопасности требует чтения непроверенных материалов. Репозиторий может содержать документацию, скрипты, файлы сборки, двоичные артефакты и комментарии, которые являются не просто данными. Они могут также содержать инструкции, адресованные агенту.Важный урок — не паниковать по поводу инструментов ИИ-безопасности. Нужно отделять доказательства от авторизации.README может объяснять, как обычно тестируется проект. Он не должен автоматически давать агенту разрешение запускать этот тест. Скрипт зависимости может быть частью репозитория. Он не должен автоматически становиться доверенным. Сторонний пакет может включать команду, которая выглядит как обычная проверка безопасности. Агент может прочитать ее, но выполнение должно требовать более высокого уровня доверия.Рискованный шаблон выглядит так:```Bash
./security.sh
2. **Применение политик**: внешний уровень решает, какие действия разрешены.
3. **Изоляция выполнения**: песочница ограничивает ущерб, даже если было одобрено неверное действие.## Рекомендуемая архитектура###
1. Изолируйте рабочее пространствоСторонние репозитории, неизвестные проблемы, аудит зависимостей, клиентские архивы и загруженные пакеты следует открывать в одноразовых средах. Контейнер или виртуальная машина — хорошее решение по умолчанию.Изолированная среда не должна монтировать домашний каталог пользователя, облачные учётные данные, токены менеджера пакетов, SSH-ключи, профили браузера или производственную конфигурацию. Исходный код можно сделать доступным только для чтения. Права на запись следует предоставлять только после того, как агент составит чёткий план, а пользователь одобрит его объём.Хорошие настройки по умолчанию включают:- отсутствие монтирования личного домашнего каталога
- отсутствие долгоживущих облачных учётных данных
- отсутствие токена менеджера пакетов по умолчанию
- отсутствие неограниченного исходящего сетевого доступа
- временные кеши пакетов
- строгие ограничения по времени и ресурсам
- полное ведение журнала команд###
2. Разделите рабочий процесс агента на этапыНе позволяйте чтению, редактированию и выполнению сливаться в один автоматический поток. Разделите их.**Этап чтения:** агент может просматривать файлы, выявлять риски и составлять план.**Этап внесения изменений:** агент может генерировать diff или патч, в идеале без выполнения недоверенных скриптов.**Этап выполнения:** агент может выполнять только одобренные команды из узкого списка разрешений, с тайм-аутами и ограничениями ресурсов.Если предложенная команда получена из README, комментария к задаче, скрипта зависимостей или внешнего документа, интерфейс одобрения должен показывать этот источник.ясно. Команда, предложенная репозиторием, не равна команде, явно запрошенной пользователем.###
3. Выполняйте детерминированное сканирование до оценки моделиAI-агенты полезны для объяснения и сортировки, но детерминированные инструменты, где возможно, должны запускаться в первую очередь.Например:- сканирование на наличие секретов перед выполнением любой команды
- проверка уязвимостей зависимостей перед скриптами установки
- обнаружение бинарных файлов перед запуском инструментов репозитория
- статический анализ перед интерпретацией модели
- проверка diff-файла блокировки перед обновлением пакетов
- проверка жизненного цикла скриптов перед установкой зависимостейАгент может обобщать и ранжировать результаты. Он не должен заменять базовые сканеры.