# Как агенты OpenAI искали выход из песочницы

Как модель OpenAI вышла в интернет через DNS, что нашли агенты, которых попросили взломать сэндбоксы, как работает канал через кэш процессора и как изолировать своих агентов.

- Автор: Guide DAO
- Опубликовано: 2026-10-24
- Теги: Безопасность AI, AI-агенты
- Страница: https://www.guidedao.xyz/blog/agenty-openai-i-pesochnica

Чтобы модель научилась работать с кодом и браузером, ей дают рабочее окружение: терминал, файлы, поиск. Окружение заодно служит клеткой. Если модель ошибётся или начнёт добиваться цели в обход правил, последствия должны остаться внутри. 20 сентября клетка OpenAI не выдержала. Модель во время обучения нашла ошибку в настройке DNS и вышла в живой интернет, это описано в [отчёте об инциденте](https://alignment.openai.com/misalignment-reports/an-agent-used-dns-to-reach-an-external-chatbot/). Как компания [рассказала 23 октября](https://openai.com/index/securing-our-frontier-model-training-environment/), она остановила обучение самых сильных моделей на 11 дней и поручила командам AI-агентов взломать собственную инфраструктуру. Агенты нашли побеги из виртуальных машин и даже научились переговариваться через кэш процессора.

Для тех, кто запускает агентов у себя, из этого следует одно: сэндбокс должен выдерживать того, кто сам ищет в нём дыры.

## Офлайн-мир и дыра в DNS

Самые сильные модели OpenAI учатся без доступа к живому интернету. Вместо него компания построила «офлайн-мир», огромный проиндексированный кэш веб-страниц. Модель может искать, открывать сайты и работать с веб-приложениями, но все запросы уходят в кэш.

В тот день модель решала поисковую задачу: по подсказкам из чужого блога установить автора. Поиск не помогал. Модель попробовала напрямую обратиться к Google, Bing и DuckDuckGo и получила ошибки. Потом она проверила сеть и заметила, что DNS-резолвер окружения отвечает настоящими записями для реальных доменов. Резолвер оказался единственным путём наружу, который фильтровали недостаточно. Через публичный DNS-сервис модель стала передавать вопросы внешнему чат-боту и получать ответы. Задача ничего такого не требовала, поэтому OpenAI считает этот случай проявлением misalignment.

Монитор поднял тревогу через 12 минут после первого внешнего ответа, человек подтвердил её ещё через три минуты. А вот запуск остановили только спустя ещё два с половиной часа: автоматическая остановка не сработала, и команда не сразу поняла, нужно ли гасить запуск вручную. Детектор аномальной DNS-активности вообще не охватывал это окружение. Теперь DNS-запросы там ограничены списком разрешённых доменов и типов записей.

## Как OpenAI проверяла сэндбоксы агентами

Защита у OpenAI многослойная. Агент работает в ограниченном контейнере. Контейнер запущен внутри лёгкой виртуальной машины (microVM) со своим ядром, которую от хоста отделяет гипервизор. Вокруг работают мониторинг и сетевые правила облака, которые должны удержать агента, даже если он захватил хост.

Командам агентов дали три цели: отправить запрос на внешний сервер OpenAI, получить доступ к ресурсам за пределами своего окружения и обменяться данными с агентами, от которых их изолировали. В отдельных тестах заранее считалось, что внутренняя защита уже пала и агент управляет хостом. Агентам дали исходный код инфраструктуры, конфиги и документацию с описанием возможных слабых мест, чтобы условия были выгодны атакующему. Работали они на изолированных копиях инфраструктуры, среди моделей была готовящаяся GPT‑6 Astra Cyber. На кампанию ушли сотни миллиардов токенов.

Агенты собрали из нескольких уязвимостей цепочки побегов из microVM. Исправления OpenAI отправила в открытые проекты: Kata Containers ([CVE-2026-24834](https://github.com/kata-containers/kata-containers/security/advisories/GHSA-wwj6-vghv-5p64) и ещё две правки), gVisor и профили системных вызовов Docker, а также в ядро Linux. Часть уязвимостей ещё не раскрыта.

Попытки выйти в интернет оказались показательнее. После прошлых инцидентов у окружений остались узкие каналы к служебным сервисам: метрикам, логам, аутентификации. Почти в каждом из них агенты нашли способ получить ограниченный доступ наружу. В одном тесте агент воспользовался соединением, которое файрвол уже разрешил, добрался до закрытого эндпоинта сервиса метрик и заставил его скачать адрес, который подсунул сам. Ни одна отдельная деталь здесь не сломана, дыра возникает из сочетания штатных функций.

## Как агенты переговаривались через кэш процессора

Самый необычный эксперимент касался общения без сети. Агентов поместили в разные microVM на общих физических серверах и попросили обменяться синтетическими секретами без сетевых соединений и общих файлов. Агенты справились через кэш процессора.

Кэш хранит копии недавно прочитанных данных, и чтение из него заметно быстрее, чем из основной памяти. Кэш у виртуальных машин на одном процессоре общий. По описанию OpenAI, один агент кодировал биты, вытесняя из кэша выбранные данные. Второй замерял, сколько времени уходит на повторное чтение своих данных: быстро значит одно значение, медленно другое. Это тот же принцип, что в классической схеме prime+probe. Получатель заполняет кэш своими данными, отправитель в нужный момент их вытесняет или не трогает, получатель перечитывает и по задержке узнаёт, что произошло. Договорившись о кодировке, агенты передали секреты. На тех же замерах времени держались атаки Spectre и Meltdown.

Нашлись и другие каналы: общее хранилище, где один агент чередовал непрерывную запись и паузы, а второй мерил задержки, конкуренция за процессорное время в общем контейнере, кэш TLS-сертификатов офлайн-мира. В одном случае агентам дали только список известных уязвимостей инфраструктуры, и они сами превратили одну из них в канал связи. Свою стратегию один агент описал в рассуждениях как сигнал наподобие акустического модема.

Причина общая. Гипервизор разделяет адреса памяти, но не физические ресурсы. Кэш, диск и процессорное время остаются общими, и если один процесс может менять их состояние, а другой замерять, между ними возникает скрытый канал. Такие каналы медленные, и использовать их моделям трудно, но они пробивают границу, которую считали глухой. OpenAI добавила в мониторинг проверки на попытки так общаться.

## Почему обучение возобновили

Пути в интернет, которым агенты могли бы легко воспользоваться и при этом спрятаться от мониторов, кампания не нашла. Со временем находок становилось заметно меньше. OpenAI закрыла найденное и возобновила обучение и внутренний инференс 1 октября, через 11 дней после паузы. Компания отвела постоянные вычислительные мощности под непрерывный red teaming и сделала большую проверку сильнейшими моделями обязательной частью safety cases, обоснований безопасности, по которым решают, можно ли запускать следующее обучение. OpenAI прямо пишет, что ждёт от будущих моделей уязвимостей, о которых пока не знает.

## Что взять тем, кто запускает своих агентов

Ваш Claude Code не проходит RL-обучение и не ищет выход нарочно. Но промпт-инъекция из скачанной страницы или чужого репозитория может заставить агента делать то же самое по чужой указке. Атаки такого рода мы разбирали в статье [об отравлении памяти агентов](https://www.guidedao.xyz/blog/ataki-na-pamyat-ai-agentov). Сэндбокс решает, сколько вреда успеет нанести обманутый агент.

Первое: включите изоляцию. В Claude Code [сэндбокс](https://code.claude.com/docs/en/sandboxing) по умолчанию выключен, включается командой `/sandbox` или настройкой `sandbox.enabled`. Он ограничивает запись рабочей папкой, а сеть пускает только через прокси, где список `allowedDomains` изначально пуст. Чтение по умолчанию разрешено почти везде, включая `~/.ssh` и `~/.aws/credentials`, поэтому закройте лишнее через `sandbox.filesystem.denyRead`.

Второе: держите белый список сети узким. Документация предупреждает, что широкий домен вроде `github.com` сам становится каналом утечки, а фильтр смотрит только на имя хоста. История с DNS учит тому же: любой служебный сервис, который ходит наружу за агента, входит в периметр. Не открывайте агенту сокет Docker через `allowUnixSockets` и не добавляйте широкие шаблоны в `excludedCommands`, иначе агент запустит нужное ему вне сэндбокса. Настройка `allowUnsandboxedCommands: false` запрещает повтор упавшей команды без изоляции.

Третье: помните, где сэндбокс кончается. Файловые тулы Claude Code, хуки и локальные MCP-серверы работают вне его, и документация прямо говорит, что это не полная граница изоляции. Для рискованных задач запускайте агента в контейнере или виртуальной машине, а лучше на отдельном компьютере без ваших ключей, паролей и доступа к продакшену.

Четвёртое: ведите мониторинг и проверьте рубильник. OpenAI заметила выход за 12 минут, но остановила запуск через два с половиной часа. Журналируйте команды и сетевые запросы агента, настройте тревогу на обращения к неразрешённым хостам и заранее проверьте, что остановка работает без человека.

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

Изоляцию агентов, границы доверия и защиту от промпт-инъекций разбираем на курсе «Разработчик AI-агентов».

Курс Guide DAO: [Разработчик AI-агентов](https://www.guidedao.xyz/agents)
