Блог о безопасности FireAI

Автор FireAI Security & Research Team · Опубликовано

Мониторинг сетевого доступа OpenAI Codex CLI на Mac с FireAI

Мониторинг сетевого доступа OpenAI Codex CLI на Mac с FireAI

Codex CLI — агент для программирования от OpenAI, работающий в терминале. Он читает проект, предлагает изменения и выполняет команды, а OpenAI документирует для него двухуровневую модель безопасности, сочетающую песочницу с политиками одобрения. В статье кратко изложена эта модель применительно к macOS, объяснено, что она говорит и чего не говорит о сетевом трафике, и показано, как FireAI наблюдает за программой.

Что такое Codex CLI и как его установить

Репозиторий проекта описывает Codex CLI как лёгкого агента для программирования, работающего в терминале; его создала OpenAI, лицензия — Apache-2.0. Указаны три способа установки: npm install -g @openai/codex, brew install --cask codex и прямая загрузка через скрипт оболочки или страницу GitHub Releases. Он работает на macOS как на Apple Silicon, так и на Intel, а также на Linux и Windows.

Терминал
# the documented install routes
npm install -g @openai/codex
brew install --cask codex

Документированная модель песочницы и одобрений

Страница OpenAI об одобрениях и безопасности агента описывает режимы песочницы и политики одобрения, работающие совместно, и отмечает, что ни один из механизмов по отдельности не обеспечивает полной защиты. Режимы песочницы — read-only, workspace-write и danger-full-access. В режиме read-only действия за пределами ограниченной области требуют одобрения. В режиме workspace-write Codex может читать, редактировать и выполнять команды в активном рабочем пространстве, а доступ к сети и правки за его пределами требуют одобрения. Danger-full-access снимает ограничения и не рекомендуется.

Политики одобрения включают on-request — стандартный интерактивный режим; never, который отключает запросы на одобрение, сохраняя ограничения песочницы; и granular, интерактивный выборочно для отдельных категорий действий.

Доступ к сети в песочнице

Согласно той же странице, сетевое подключение по умолчанию отключено. Чтобы включить его в режиме workspace-write, нужно задать network_access = true в разделе [sandbox_workspace_write] файла конфигурации, а необязательная функция network_proxy может ограничить трафик настроенными списками разрешённых доменов. На macOS ограничения применяются через политики Seatbelt с помощью sandbox-exec; на Linux — через bwrap и seccomp.

config.toml
[sandbox_workspace_write]
network_access = true

Эта настройка управляет командами, выполняемыми внутри песочницы. Это полезное ограничение, и стоит прямо сказать, чем оно не является: это не журнал соединений, а собственное соединение агента с сервисом модели — отдельный вопрос. Статья не перечисляет собственные домены Codex, поскольку изученные страницы не дают документированного поставщиком списка.

Почему сетевой обзор всё же полезен

Если вы включаете доступ к сети, чтобы тесты могли загружать зависимости, или используете danger-full-access, песочница больше не ограничивает, куда подключаются команды. Тогда оставшейся проверкой становится обзор адресов, к которым программа действительно обращалась. Он же покрывает случай, когда вы забыли, что меняли эту настройку.

Наблюдение за Codex с помощью FireAI

FireAI — файрвол для macOS от HisnLabs, и начиная с версии 1.0.2 в нём есть функция Agent profile. Она распознаёт 19 ИИ-агентов, изучает, куда каждый из них обычно подключается, и отмечает необычное поведение для вашей проверки. Codex — агент командной строки, поэтому FireAI распознаёт его по имени программы.

Codex сопоставляется по имени программы, codex, поэтому FireAI помечает совпадение, но не верифицирует его по подписи разработчика. Так проверяются только Claude Code, Claude и Cursor.

FireAI также распознаёт дочерние процессы агента, например оболочку, git или curl, запущенные агентом, поднимаясь по цепочке родительских процессов до самого агента. Поэтому их соединения засчитываются как соединения агента.

Что отмечает FireAI

  1. В течение первых 3 дней FireAI изучает адреса, к которым агент обычно обращается, сгруппированные по доменам. В этот период обучения ничего не отмечается.
  2. После этого первое в истории обращение к адресу за пределами изученного базового набора отмечается для проверки.
  3. Отмечается и всплеск исходящего трафика: час, за который агент отправил как минимум в 4 раза больше, чем в свой самый загруженный час до этого, и не менее 25 МБ.

Agent profile использует только метаданные, то есть имена хостов и объёмы в байтах. FireAI никогда не читает содержимое соединения и не может заглянуть внутрь зашифрованного соединения.

Настройка для Codex

  1. Установите FireAI и завершите настройку, затем продолжайте пользоваться Codex как обычно. Трёхдневный период обучения начинается с того, что видит FireAI.
  2. Откройте Suggestions и посмотрите на карточку AI agents. В ней перечислены агенты, которых распознал FireAI, и то, что он узнал о каждом из них.
  3. Когда Codex обращается к адресу, с которым никогда раньше не связывался, отметка появляется в карточке AI agents и в Quick Review. Смахните влево, чтобы заблокировать, или вправо — «It’s fine».
  4. Блокировка создаёт правило для подключившегося процесса. «It’s fine» добавляет адрес в базовый набор агента, и он больше не отмечается.
  5. Если вы хотите, чтобы агент оставался в пределах уже используемых им адресов, выберите Agent profile в меню режима безопасности рядом с Home, Coffee shop, Paranoid и Under attack. Когда агент завершит обучение, соединение с адресом за пределами его базового набора будет блокироваться, а не только отмечаться.
  6. Заблокированный адрес отображается в карточке AI agents с кнопками Allow и Keep blocked. Allow добавляет его в базовый набор, и агент сразу получает к нему доступ. Keep blocked создаёт правило блокировки, и адрес остаётся заблокированным во всех режимах.

Ограничения

  • FireAI не предотвращает внедрение промптов (prompt injection). Промпт, скрытый на веб-странице или в файле, по-прежнему может управлять агентом. FireAI может отметить путь, по которому данные покинули бы ваш Mac, и дать вам его заблокировать.
  • FireAI не видит промпты, содержимое MCP-инструментов и то, какие файлы читает Codex, например ~/.ssh. TLS скрывает содержимое, а FireAI не находится внутри агента.
  • Очень быстро завершающиеся дочерние процессы могут быть пропущены, а дочерние процессы сопоставляются по пути, а не по подписи.
  • В течение трёхдневного периода обучения ничего не отмечается.
  • В режиме Agent profile соединение с голым IP-адресом без имени хоста сопоставляется по адресу. Если служба, которой агент обычно пользуется, отвечает с нового адреса, она блокируется, пока вы её не разрешите.
  • Объяснение отметки простыми словами FireAI составляет на основе измеренных им фактов. Он никогда не утверждает, что адрес безопасен или опасен. Решение остаётся за вами.

Связанные руководства

Тот же подход применим к другим агентам, которых распознаёт FireAI: Claude Code, настольное приложение Claude, Cursor, приложение ChatGPT для Mac, OpenClaw, Hermes Agent, Gemini CLI, GitHub Copilot CLI, Amp, Qwen Code, opencode, Aider, Goose, Crush, Windsurf, Kiro, Trae, Muse от Meta, любой другой ИИ-агент, запускаемый через Python или Node. Полное описание функции — в документации Agent profile.

Какое место здесь занимают FireAI и HisnLabs

Codex по умолчанию отключает сеть в собственной песочнице. FireAI следит за остальной картиной.

FireAI — это собственный продукт HisnLabs: ИИ-файрвол, работающий прямо на вашем Mac. Он показывает простым языком каждое соединение, которое устанавливают ваши приложения, и позволяет вам решать, что покидает ваш Mac, — его ИИ работает локально, поэтому ваш трафик никогда не отправляется ни нам, ни кому-либо ещё. Команда исследователей безопасности HisnLabs — это те, кто поддерживает точность этих решений: они каталогизируют, какие домены являются обычной телеметрией, а какие — реальным сервисом, отслеживают страну и сеть, стоящие за соединением, и обучают локальную модель (функцию FireAI Pilot) на реальных шаблонах трафика — и ничего из этого не покидает ваш Mac.

Вы можете прочитать о технических решениях, лежащих в его основе, или попробовать FireAI в течение 17 дней на странице FireAI от HisnLabs.

Источники