Защита агентов на клиентских конечных точках Perplexity с помощью Numbat
Numbat — это набор инструментов безопасности для ИИ-агентов с открытым исходным кодом от Perplexity. Он обнаруживает, предотвращает и расследует рискованное поведение ИИ-агентов на macOS, Linux и Windows.
Чтобы ИИ-агенты были полезными, они должны быть защищены. По мере расширения возможностей моделей и систем возрастает и бдительность, необходимая для защиты пользователей.
Ранние исследования безопасности агентов фокусировались на инъекциях промптов и других формах состязательных входных данных. Однако недавние успехи в автономности агентов приводят к инцидентам безопасности, для которых не требуется наличие состязательных входных данных — или даже самих злоумышленников-людей.
Скорее, агенты, ориентированные на достижение высокоуровневых целей без предписанных указаний о том, как именно их достигать, могут стать источником угрозы. Это происходит, когда агент в ответ на заданную пользователем цель выбирает курс действий, который пользователь не подразумевал и не одобрил бы. Хотя такие инциденты еще несколько месяцев назад считались теоретическими, они быстро стали вопросом практической значимости.
Поскольку подобные модели поведения невозможно полностью устранить на уровне самой модели, надежная защита должна быть реализована в окружающей системе, включая среду выполнения (agent harness), которая служит интерфейсом модели для внешнего мира. Мы открываем исходный код Numbat — нашего набора инструментов для обеспечения безопасности агентов, который помогает специалистам по защите предотвращать, обнаруживать и устранять инциденты, связанные с агентами. Numbat распознает и напрямую интегрируется со средами выполнения агентов, обычно используемыми на клиентских конечных точках предприятий, обеспечивая соблюдение правил безопасности и позволяя оперативно обнаруживать инциденты и реагировать на них.
Введение
Внедрение агентов создает новые проблемы безопасности для разработчиков, пользователей и специалистов по защите. Это особенно актуально, когда предприятия развертывают агентов непосредственно на клиентских конечных точках с привилегированным доступом к корпоративным системам и данным.
Развертывание агентов на клиентских конечных точках, например, агентов для написания кода на базе CLI или настольных приложений, сопровождается различным уровнем изолированности и использования песочниц. Пользователи задействуют этих агентов для бесчисленных сценариев использования, каждый из которых имеет собственное рабочее пространство, способное повлиять на саму конечную точку или другие системы, доступные с нее. Всё чаще от агентов ожидается автономная работа в течение часов или даже дней. Для таких рабочих процессов многие пользователи предпочитают делегировать одобрение действий агента классификаторам или полностью обходить проверки с помощью вызывающих беспокойство флагов конфигурации, таких как --dangerously-skip-permissions и --yolo. Множество сценариев использования и конфигураций агентов в сочетании с широтой действий, которые агенты для написания кода могут выполнять на привилегированных конечных точках, создают профиль риска, требующий проактивного управления со стороны команд по безопасности.
Сегодня мы выпускаем Numbat — набор инструментов для обеспечения безопасности агентов с открытым исходным кодом, созданный нами для обнаружения, расследования и предотвращения опасной активности ИИ-агентов. По мере того как всё больше компаний внедряют передовые агентские продукты, Numbat позволяет командам по безопасности не отставать от возникающих проблем. Он интегрируется в каждую из наиболее широко используемых клиентских сред выполнения агентов, предоставляя единообразный интерфейс для всех них. Таким образом, Numbat избавляет команды по безопасности от необходимости создавать пользовательские средства защиты и инструменты мониторинга для каждого отдельного агента, на которого полагаются их пользователи. Numbat доступен для сообщества специалистов по защите в рамках членства Perplexity в альянсе Open Secure AI Alliance совместно с NVIDIA и другими организациями.
Эта статья начинается с обсуждения проблем безопасности, которые послужили стимулом для создания Numbat. Затем мы представляем проект и архитектуру Numbat, а также делимся уроками, извлеченными из развертывания Numbat на тысячах собственных конечных точек Perplexity.
Оценка ландшафта уязвимостей
Ландшафт инцидентов безопасности, связанных с ИИ-агентами, стремительно развивается. Большая часть существующей литературы по безопасности агентов фокусируется на атаках типа «инъекция», при которых вредоносная полезная нагрузка внедряется в промпты или контекст модели, чтобы запутать агентов и спровоцировать их на некорректное поведение. Атаки через инъекции и способы защиты были детально изучены, и разработчики агентов, включая Perplexity, разработали всё более надежные средства защиты против таких атак.
Но ИИ-агенту не нужна вредоносная полезная нагрузка для создания инцидента безопасности. На самом деле, не нужно даже предполагать наличие злоумышленника. Доверенный агент, работающий в доверенной среде с утвержденными администратором инструментами, может совершить вредоносные действия просто потому, что слишком старается выполнить свою задачу.
Исследователи описывают этот режим сбоя как «случайный критический сбой»: вредоносное поведение агента, вызванное не состязательными входными данными, а обычной ошибкой окружающей среды. Отсутствующий файл, неудачный запрос к API, истекший срок действия учетных данных или отказ в разрешении могут заставить агента искать обходной путь. В процессе выполнения исходной, заданной пользователем цели, агент может нарушить границы безопасности посредством несанкционированной разведки, изменения управления доступом, обнаружения секретов или эксфильтрации данных. Вместо того чтобы агент был захвачен злоумышленником, агент сам становится злоумышленником. Более того, атака может быть направлена на внутренние системы, внешние системы или и то, и другое, причем узнать об этом невозможно до тех пор, пока атака уже не начата.
Первый широко освещенный «случайный критический сбой» произошел в этом месяце с раскрытием информации OpenAI об атаке, инициированной агентом, которая скомпрометировала производственную инфраструктуру Hugging Face. Во время оценки предварительной версии модели GPT модель обнаружила, что не может продвинуться в выполнении оценки с предоставленным контекстом. Чтобы преодолеть это препятствие, модель нашла способ выйти из своей тестовой «песочницы» и эксфильтровать ответы оценки из Hugging Face. Модель использовала свою среду выполнения, чтобы обойти предназначенные сетевые ограничения, повысить привилегии за пределами границ песочницы, получить секреты и получить доступ к защищенным системам Hugging Face — и всё это ради узкой цели решения задачи оценки.
Критические сбои также включают непреднамеренные мутации и удаления системных данных. Хотя это может показаться менее значительным, чем взлом внешней системы, такие случаи происходят чаще и более заметны для любого опытного пользователя агентов для написания кода. Удаление производственных баз данных или домашних каталогов — худший кошмар любого разработчика, и агенты должны быть способны избегать подобных действий на протяжении всего процесса выполнения.
ИИ-исследователи работают над смягчением таких моделей поведения внутри самих моделей. Хотя эти усилия, безусловно, ценны, многие в исследовательском сообществе видят фундаментальное противоречие между обучением моделей с сильными свойствами безопасности и обучением тех же моделей выполнению всё более сложных задач. Мы считаем маловероятным, что средства защиты, сфокусированные исключительно на уровне модели, снизят риск критических сбоев до приемлемого уровня.
Обеспечение безопасности агентов для написания кода через нативные интеграции со средами выполнения
Вывод заключается в том, что безопасность агентов не может опираться исключительно на средства защиты на уровне модели, пользователя или задачи. Вместо этого команды по безопасности нуждаются в видимости того, что именно агенты делают на клиентских конечных точках, а также в элементах управления, способных остановить опасные действия до их выполнения. Это средства управления системного уровня, которые должны быть тесно интегрированы со средой выполнения агента.
Numbat предоставляет эти элементы управления в виде легковесного статического Go-бинарного файла, который бесшовно подключается к ведущим клиентским средам выполнения агентов. Он предлагает мониторинг в реальном времени, обеспечение соблюдения политик и криминалистическую реконструкцию событий в различных средах выполнения агентов и операционных окружениях.
Ключевыми точками интеграции между Numbat и средой выполнения агента являются хуки, артефакты сеанса и телеметрия OTLP. Мы обсудим каждый из них по очереди.
Хуки
Практически все агенты для написания кода обладают подсистемой хуков. Хуки позволяют агентам детерминированно выполнять подпрограммы в заранее заданных точках жизненного цикла выполнения агента. Пользователи агентов обычно настраивают хуки, чтобы предоставлять моделям дополнительный контекст предсказуемыми способами, внедрять циклы тестирования и верификации, а также вносить другие улучшения в возможности агента.
Те же детерминированные свойства, которые делают хуки привлекательными для этих целей, также делают их привлекательными для обнаружения и реагирования. Обычно недостаточно поймать большинство случаев потенциально тревожного события. Скорее, необходимо охватить все такие случаи для обеспечения обнаружения и реагирования. Numbat настраивает несколько типов хуков, позволяя командам по безопасности и ИТ-администраторам реализовывать богатую логику обнаружения.
В большинстве агентов для написания кода определенные типы хуков (обычно называемые «пре-экшн» хуками) также способны блокировать выполнение следующего действия агента. Используя эти пре-экшн хуки, Numbat способен реализовать не только логику обнаружения, но и превентивные правила безопасности, чтобы предотвратить критический сбой еще до его начала.
Артефакты сеанса
Хуки — это мощное средство реализации логики обнаружения и предотвращения в реальном времени. Однако эта логика должна быть определима в коде. Часто инцидент безопасности агента принимает форму, которую невозможно было предвидеть заранее, не говоря уже о сведении к исходному коду. Поэтому Numbat также обладает способностью получать доступ к артефактам сеанса и анализировать их ретроспективно.
Артефакты сеанса включают множество типов логов и диагностических данных. Пожалуй, самым важным типом лога является транскрипт сеанса, который записывает разговоры с LLM, определяющие последовательность действий агента. Опытные пользователи агентов для написания кода уже привыкли экспортировать транскрипты сеансов для дальнейшего анализа с помощью команд, предоставляемых средой выполнения. Но эти экспорты обычно имеют формат обычного текста, который плохо подходит для команд по безопасности, нуждающихся в машинно-читаемых логах с последовательной, предсказуемой схемой.
Таким образом, Numbat извлекает артефакты сеанса непосредственно из самой файловой системы. Поскольку большинство клиентских сред выполнения агентов хранят исходные артефакты в файловой системе (обычно внутри специфического для агента точечного каталога в $HOME), обращение к файловой системе обеспечивает наиболее прямой доступ к этим данным в их наиболее удобном и первозданном виде. Команды по безопасности, использующие Numbat, могут собирать эти артефакты в нормализованном формате временной шкалы NDJSON через numbat scan как для локальной обработки на клиентской конечной точке, так и для асинхронного удаленного анализа. Поскольку артефакты сеанса являются статическими, самодостаточными записями, Numbat способен реконструировать эти временные шкалы даже для сеансов, происходивших задолго до установки Numbat.
Телеметрия OTLP
Большинство клиентских сред выполнения агентов предлагают обширную телеметрию через протокол OpenTelemetry (OTLP). Эта телеметрия обычно предоставляет множество сигналов, выходящих за рамки тех, что доступны через хуки или артефакты сеанса.
Numbat может функционировать как приемник OTLP через команду numbat collect. Эта команда запускает сервер, на который агенты для написания кода отправляют телеметрию OTLP для последующего анализа. Важно отметить, что этот сервер является локальным и по умолчанию прослушивает только localhost, что означает, что вся телеметрия по умолчанию остается на устройстве. Администраторы безопасности затем могут определить, что делать с записанной телеметрией, будь то реализация легковесной обработки на устройстве, удаленная обработка через numbat ship или более глубокий анализ на аналитических платформах, таких как ClickHouse.
Развертывание Numbat внутри Perplexity
Внутри Perplexity мы используем Numbat для защиты использования нашими инженерами клиентских агентов для написания кода, включая Claude Code, Codex, OpenCode и Pi.
Как наши усилия по предотвращению, так и по обнаружению активно используют правила Numbat, которые реализуются через подсистему хуков каждого агента. Мы сформулировали несколько основных правил для наших собственных нужд, многие из которых мы включили в состав 52 встроенных правил Numbat. Эти правила организованы по 11 категориям поведения и набору детекторов многошаговых последовательностей, таких как доступ к секретам, эксфильтрация, повышение привилегий и латеральное перемещение. Правила используют выражения CEL для нормализованных событий, и операторы могут добавлять свои собственные правила и тесты, не меняя код Numbat.
Например, встроенное правило privilege.sudoers_tamper обнаруживает попытки записи в политику sudoers, использование visudo и попытки предоставления прав NOPASSWD. Это действия с высоким сигнальным значением, которые могут превратить ограниченный процесс агента в постоянный доступ с правами суперпользователя.
# privilege.sudoers_tamper (simplified for readability)
id: privilege.sudoers_tamper
severity: high
expr: |
(
event.event_type == "file.write" &&
event.file_path.matches("(^|/)etc/sudoers$|(^|/)etc/sudoers\\.d/[^/]+$")
) || (
event.event_type == "command.exec" &&
event.command.matches("\\bvisudo\\b|\\bNOPASSWD\\s*:")
)Отдельные команды не всегда выглядят вредоносными сами по себе, поэтому Numbat также коррелирует последовательности в рамках сеанса агента. Встроенное правило chain.secret_manager_read_then_egress обнаруживает момент, когда агент считывает значение из стандартного инструмента управления секретами, а затем пытается выполнить передачу данных запросом curl или wget. Чтение секрета может быть легитимным. Исходящий запрос может быть легитимным. Но их последовательное выполнение требует расследования.
# chain.secret_manager_read_then_egress (simplified for readability)
id: chain.secret_manager_read_then_egress
severity: high
sequence:
within_events: 64
steps:
- expr: |
event.event_type == "command.exec" &&
event.command.matches("secretsmanager|get-secret|vault read")
- expr: |
event.event_type == "command.exec" &&
event.command.matches("curl.*(--data|--upload-file)|wget.*--post")Управление и мониторинг Numbat в масштабах парка устройств
Как и Bumblebee, наш сканер с открытым исходным кодом для выявления уязвимостей цепочки поставок на конечных точках разработчиков, Numbat развертывается в нашем парке устройств через MDM. Каждый Numbat записывает активность агентов локально и отправляет структурированную телеметрию в наши централизованные системы безопасности.
Оттуда Perplexity Computer на регулярной основе просматривает последние находки Numbat и аудиторские логи на предмет подозрительного или вредоносного поведения. Он расследует обнаружения, реконструирует соответствующие сеансы агентов и подвергает дополнительной проверке действия, которые Numbat заблокировал.
Computer также ищет пробелы в нашем охвате. Он анализирует новое поведение, предлагает улучшения для механизмов обнаружения Numbat, тестирует эти изменения и открывает пулл-реквесты для проверки человеком. После одобрения и развертывания эти правила улучшают мониторинг во всем парке и предоставляют лучшие доказательства для следующего расследования.
Это создает самосовершенствующийся маховик безопасности: агенты генерируют активность, Numbat превращает эту активность в нормализованные временные шкалы и телеметрию, Computer расследует и улучшает правила, а обновления, проверенные человеком, укрепляют элементы контроля, защищающие будущие сеансы агентов.
Заключение
В Perplexity мы верим, что ИИ-агенты будут работать во всех типах сред: локальных, облачных и гибридных. Каждая комбинация среды выполнения агента и операционного окружения создает уникальные проблемы безопасности, причем комбинаторная сложность угрожает перегрузить команды по безопасности с ограниченной пропускной способностью. Критические сбои агентов и другие новые уязвимости еще больше усложняют картину безопасности.
Средства защиты, встроенные в саму агентскую систему, могут улучшить состояние безопасности пользователя независимо от того, где выполняется агент. Именно это и предоставляет Numbat: тесно интегрированные средства защиты агентов, которые позволяют специалистам по защите предотвращать, обнаруживать и реагировать на вызывающее беспокойство поведение в режиме реального времени. Сочетание Numbat с Perplexity Computer создает мощную платформу безопасности агентов, которая дает специалистам по защите возможность всегда быть на шаг впереди.
Numbat доступен сегодня как проект с открытым исходным кодом для macOS, Linux и Windows. Наши собственные клиентские конечные точки защищены Numbat, что позволяет членам команды Perplexity уверенно использовать агентов для широкого спектра задач и на длительных горизонтах планирования. Мы приглашаем команды по безопасности повсюду использовать системный подход Numbat к обеспечению безопасности и защите своих развертываний агентов.
Цитата
@online{perplexity2026SecuringAgentsAcrossPerplexitySClientEndpointsWithNumbat,
author = {{Perplexity} and Adel Karimishiraz and Bex Brooker and Phi Hoang and Jerry Ma},
title = {{Securing agents across Perplexity's client endpoints with Numbat}},
date = {2026-07-29},
url = {https://perplexity.coolkeypoint.com/hub/blog/securing-agents-across-perplexity-s-client-endpoints-with-numbat}
}