Защита агентов искусственного интеллекта и использования инструментов
Ограничение действий автономных агентов
«Защита агентов искусственного интеллекта и использования инструментов» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Почему агенты опасны
Агент ИИ — это LLM, подключённая к инструментам и циклу: она рассуждает, вызывает функции (поиск, выполнение кода, программные интерфейсы, доступ к файлам), анализирует результаты и повторяет эти действия, пока не будет достигнута цель. Такая автономность одновременно мощна и опасна.
Главное изменение с точки зрения безопасности: у обычного чат-бота плохой результат — это просто текст. У агента плохое решение превращается в реальное действие: удаление записи, отправка письма, трата денег или утечка секрета.
Поскольку недоверенное содержимое может попасть в цикл рассуждений, каждый инструмент агента становится поверхностью атаки для внедрения инструкций.
Минимальные привилегии для инструментов
Самая важная мера защиты — это принцип минимальных привилегий. Предоставляйте каждому инструменту настолько узкую область действия, насколько это возможно, сохраняя его способность выполнять задачу.
- Предпочитайте режим только для чтения режиму чтения и записи; ограничивайте чтение данными текущего пользователя.
- Разделяйте широкие инструменты на узкие (инструмент
get_invoice, а не инструмент выполнения произвольных запросов SQL). - Привязывайте учетные данные инструмента к личности конечного пользователя, а не к общей служебной учетной записи, чтобы агент наследовал только те полномочия, которыми обладает пользователь.
# Scope queries to the authenticated user, never raw SQL
def get_invoice(invoice_id: str, *, user_id: str):
return db.query(
"SELECT * FROM invoices WHERE id=%s AND owner=%s",
(invoice_id, user_id),
)Контрольные точки с участием человека
Для действий с серьёзными последствиями или необратимых действий требуйте явного одобрения человека перед выполнением. Агент предлагает действие, а человек подтверждает его.
- Отправка внешних писем или сообщений.
- Финансовые операции или покупки.
- Удаление или перезапись данных.
- Развертывание кода или изменение инфраструктуры.
Показывайте пользователю точное действие и его параметры простым языком, чтобы он мог обнаружить внедрённую или выдуманную команду до её выполнения.
Изоляция кода и команд
Агенты, выполняющие код или команды оболочки, должны делать это в изолированной среде, а не на хост-системе.
- Используйте временные контейнеры или microVMs без подключений к хост-системе.
- По умолчанию отключайте доступ к сети; разрешайте только явно указанные исходящие соединения.
- Устанавливайте ограничения на CPU, память и время, чтобы сдерживать неконтролируемый или вредоносный код.
- Запускайте код от имени пользователя без прав суперпользователя с минимальными привилегиями и с корневой файловой системой только для чтения.
docker run --rm \
--network none \
--read-only \
--user 1000:1000 \
--memory 256m --cpus 0.5 \
--pids-limit 64 \
agent-sandbox:latest python /work/task.pyРазрыв смертельной триады
Агент превращается в инструмент извлечения данных, когда одновременно получает доступ к закрытым данным, сталкивается с недовериным содержимым и может взаимодействовать с внешними системами. Это и есть смертельная триада.
Проектируйте каждый рабочий процесс так, чтобы удалить хотя бы один из этих элементов:
- Изолируйте сеансы, работающие с недоверенным содержимым, от сеансов, имеющих доступ к конфиденциальным данным.
- Ограничьте исходящие сетевые соединения строгим списком разрешений.
- Требуйте одобрения перед любой внешней отправкой, если в контексте присутствуют закрытые данные.
Недоверенный результат работы инструмента
Результаты работы инструментов снова попадают в контекст модели, поэтому результат работы инструмента является недоверенным вводом. Веб-страница, полученный файл или ответ сервиса могут содержать внедрённые инструкции, предназначенные для следующего шага рассуждений.
- Заключайте результат работы инструмента в понятные разделители и помечайте его как данные, а не команды.
- Удаляйте или нейтрализуйте скрытый текст (комментарии HTML, символы нулевой ширины, CSS, размещённые за пределами экрана).
- Ограничивайте размер внедрённого содержимого, чтобы уменьшить доступный объём для полезной нагрузки.
Никогда не позволяйте необработанному результату работы инструмента незаметно определять следующий вызов инструмента без проверок политик.
Списки разрешённых действий и применение политик
Не полагайтесь на способность модели контролировать саму себя. Разместите между агентом и каждым инструментом слой политик, реализованный в коде.
- Проверяйте каждый вызов инструмента по списку разрешённых действий и формам аргументов.
- Отклоняйте вызовы, выходящие за пределы области действия текущей задачи.
- Применяйте ограничения частоты и бюджеты отдельно для каждого инструмента и пользователя.
Этот детерминированный шлюз работает независимо от решения модели, поэтому даже успешное внедрение инструкций встретит непреодолимый барьер.
def authorize(call):
if call.name not in ALLOWED_TOOLS:
raise PolicyError("tool not allowed")
if not SCHEMA[call.name].validate(call.args):
raise PolicyError("bad arguments")
if exceeds_budget(call):
raise PolicyError("rate limit")Ограничение цикла
Автономные циклы могут выйти из-под контроля: бесконечные повторы, рекурсивные вызовы инструментов, неконтролируемые расходы (отказ в обслуживании из-за расходов). Ограничивайте их.
- Ограничивайте максимальное число шагов и общее количество токенов для каждой задачи.
- Устанавливайте ограничения времени выполнения для всего запуска.
- Отслеживайте совокупные расходы и прерывайте выполнение при достижении порога.
- Обнаруживайте циклы (повторяющиеся одинаковые вызовы) и прерывайте их.
Эти ограничения также ослабляют атаки типа отказа в обслуживании и атаки на неограниченное потребление ресурсов (OWASP LLM10).
Риски памяти и многоагентных систем
Постоянная память агента и многоагентные системы создают новые поверхности атаки:
- Отравление памяти: внедрение инструкций, записанное в долговременную память во время одного сеанса, влияет на последующие сеансы. Проверяйте и ограничивайте область данных, которые сохраняются.
- Межагентное доверие: один скомпрометированный агент может внедрить инструкции в другой. Считайте сообщения между агентами недоверенными.
- Ошибка привилегированного посредника: привилегированный агент действует по запросу агента с более низким уровнем доверия. Передавайте полномочия исходного субъекта по всей цепочке.
Журналирование и наблюдаемость
Невозможно защитить то, что Вы не можете увидеть. Оснастите журналированием всю трассировку агента:
- Записывайте каждый вызов инструмента, его аргументы и результат.
- Фиксируйте контекст рассуждений и всё полученное содержимое для криминалистического анализа.
- Настраивайте оповещения об аномалиях: неожиданных исходящих соединениях, использовании привилегий, повторных отказах, резких скачках расходов.
- Храните неизменяемый журнал аудита, связанный с пользователем, выполняющим действие.
Хорошая телеметрия превращает незаметную компрометацию в обнаруживаемый инцидент, который можно расследовать.
Многоуровневая архитектура агента
В итоге защищённая архитектура агента выглядит так:
- Идентификация: действия выполняются от имени конечного пользователя с минимально необходимыми полномочиями.
- Шлюз политик: детерминированный список разрешений и проверка схемы для каждого вызова инструмента.
- Изолированная среда: изолированное выполнение с ограничениями на сеть и ресурсы.
- Контрольные точки с участием человека: одобрение необратимых действий.
- Ограничения: бюджеты шагов, токенов, времени и расходов.
- Наблюдаемость: полное журналирование аудита и оповещения об аномалиях.
Предполагайте, что модель может быть захвачена, и обеспечьте, чтобы даже в этом случае масштаб последствий оставался небольшим.
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете средства контроля безопасности агентов.
Итоги
Защита ИИ-агентов и использования инструментов:
- Агенты превращают небезопасные выходные данные в реальные действия, поэтому каждый инструмент является потенциальной поверхностью атаки.
- Применяйте минимальные привилегии для каждого инструмента и привязывайте учетные данные к конечному пользователю.
- Требуйте подтверждения человеком для необратимых действий и выполняйте код в песочнице.
- Разорвите смертельную триаду; считайте результаты работы инструментов ненадежными входными данными.
- Реализуйте детерминированный шлюз политики (списки разрешений, проверка схемы) в коде, а не в подсказке.
- Ограничивайте цикл (числом шагов, токенов, временем и затратами) и заносите в журнал каждый вызов инструмента для обнаружения атак.
Часто задаваемые вопросы
Урок «Защита агентов искусственного интеллекта и использования инструментов» бесплатный?
Да — полный текст урока «Защита агентов искусственного интеллекта и использования инструментов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Защита агентов искусственного интеллекта и использования инструментов»?
Ограничение действий автономных агентов Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Защита агентов искусственного интеллекта и использования инструментов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Инъекция подсказок и джейлбрейки
- Топ-10 рисков LLM по версии OWASP
- Защита агентов искусственного интеллекта и использования инструментов
- Риски моделей, данных и цепочки поставок