
Anthropic, позиционирующий себя как "безопасность прежде всего", имел в своем основном инструменте разработки Claude Code сетевую песочницу, которая на протяжении последних пяти месяцев никогда не была по-настоящему безопасной.
Независимый исследователь безопасности Гуань Аонань (Aonan Guan) 20 мая опубликовал последнее исследование, раскрывшее вторую полную уязвимость обхода в сетевой песочнице Claude Code — атаку инъекции нулевого байта в протоколе SOCKS5, позволяющую процессам внутри песочницы получать доступ к любым хостам, явно запрещенным пользовательской политикой. Это означает, что с момента запуска функции песочницы в октябре 2025 года по настоящее время, примерно 5,5 месяцев, 130 выпущенных версий, каждая версия Claude Code содержала уязвимость, позволяющую полностью обойти защиту. Это уже второй раз, когда один и тот же исследователь полностью преодолел один и тот же защитный рубеж.
Ответом Anthropic на это стало молчание: не было никаких уведомлений о безопасности, не было присвоения номера CVE, не было оповещения пользователей. Уязвимость была тихо исправлена в версии от 1 апреля, в логе обновлений не упоминалось ничего, связанного с безопасностью. Иными словами, пользователь, все еще использующий старую версию, совершенно не знал, что настроенная им песочница с самого начала была бесполезной.
Два ключа к одной двери
Claude Code — это помощник по AI-программированию, выпущенный Anthropic в начале 2025 года, позиционируемый как "AI-инженер, живущий в вашем терминале". В отличие от традиционного чат-ориентированного дополнения кода, Claude Code имеет права на чтение и запись пользовательского репозитория кода и возможность выполнения команд, может автономно выполнять навигацию по коду, редактирование файлов, запуск тестов и ряд других операций. Такое глубокое вмешательство также означает высокие риски безопасности — если модель будет захвачена атакой инъекции подсказок, злоумышленник получит возможности, эквивалентные правам пользователя в терминале, включая чтение локальных переменных окружения, выполнение произвольных системных команд, доступ к ресурсам внутренней сети и т.д.
Чтобы сбалансировать безопасность и эффективность, Anthropic в октябре 2025 года представил функцию сетевой песочницы (v2.0.24), позволяющую пользователям через файл конфигурации устанавливать белый список доменов, ограничивающий внешний сетевой доступ среды выполнения AI. Например, после настройки allowedDomains: ["*.google.com"] Claude Code сможет обращаться только к Google и его поддоменам, остальной трафик будет полностью блокироваться. Официальная документация четко обещает: "Пустой массив равен запрету всего сетевого доступа".
Этот механизм реализован через прокси SOCKS5: низкоуровневая среда выполнения песочницы (@anthropic-ai/sandbox-runtime) запускает прокси-сервер, процессы внутри песочницы не инициируют сетевые подключения напрямую, а перенаправляют их через прокси, который выполняет фильтрацию доменных имен в соответствии с белым списком, настроенным пользователем в settings.json. Механизмы песочницы на уровне операционной системы — sandbox-exec в macOS и bubblewrap в Linux — корректно ограничивают агента локальными адресами (loopback), а решение о разрешении исходящих соединений полностью делегируется этому прокси SOCKS5.

Схема архитектуры песочницы Claude Code, представленная в официальном блоге Anthropic — пользовательские команды фильтруются через прокси SOCKS/HTTP перед попаданием в песочницу, файловые операции и сетевой доступ внутри песочницы строго контролируются.
Проблема заключалась в реализации этого прокси. Два независимых исследования безопасности доказали, что его можно полностью обойти.

Хронология выявляет более глубокую проблему: выпуск v2.0.55 от 26 ноября 2025 года исправил первый обход, но второй обход существовал с первого дня работы песочницы, и эта версия все еще содержала его. Две уязвимости пересекались во времени: с первого дня работы функции песочницы до исправления последней уязвимости ни одна версия не была безопасной. Anthropic в официальном блоге заявлял, что песочница "обеспечивает полную изоляцию последствий, даже если произойдет инъекция подсказок", но существование этих двух обходов прямо опровергает это обещание.
"Один внешний отчет — это удача. Два — это проблема качества реализации." — говорится в исследовательском отчете Гуань Аонаня.
Полный обход одним нулевым байтом
Технический принцип второго обхода не сложен, но целостность цепочки атаки заслуживает внимания.
Пользователь настроил белый список сетевых адресов, например, разрешив доступ только к *.google.com. Прокси SOCKS5 Claude Code при получении запроса на подключение использует метод JavaScript endsWith() для сопоставления суффикса имени хоста. Злоумышленнику достаточно вставить нулевой байт в имя хоста — создать строку вида attacker-host.com\x00.google.com. JavaScript рассматривает нулевой байт как обычный символ UTF-16, endsWith(".google.com") возвращает true, прокси разрешает доступ. Но когда та же самая строка передается в низкоуровневую функцию на C getaddrinfo() для разрешения DNS, нулевой байт рассматривается как терминатор строки, фактически разрешается attacker-host.com. Одна и та же последовательность байтов получила две разные интерпретации в двух слоях кода. Фильтр считает, что вы обращаетесь к Google, а DNS-резолвер знает, что вы подключаетесь к серверу злоумышленника.
Это классическая атака типа "различия в парсерах", относящаяся к той же технической категории, что и обнаруженный в 2005 году HTTP request smuggling (CWE-158 / CWE-436). Ее суть заключается в том, что когда один и тот же поток данных проходит через два компонента с разными правилами семантической интерпретации, злоумышленник может использовать это различие, чтобы один компонент принял "безопасное" решение, а другой выполнил "опасное" действие. Такие уязвимости повторяются в области кибербезопасности, ключевой урок всегда один и тот же: любая передача строк через границы доверия должна подвергаться строгой нормализации и проверке, а не полагаться на проверки, уже выполненные на верхнем уровне.
Гуань Аонань использовал два минималистичных скрипта на Node.js для воспроизведения уязвимости: контрольный скрипт инициировал подключение SOCKS5 с обычным именем хоста, возвращал BLOCKED; атакующий скрипт внедрял нулевой байт в имя хоста, возвращал BYPASSED rep=0x00 — последнее означало, что прокси успешно установил соединение, исходящий канал был открыт. Claude Code сам подтвердил этот результат.

Полное воспроизведение уязвимости в Claude Code v2.1.86 в четырех шагах, выделенных красным — подтверждение политики, обычная блокировка, обход через нулевой байт, подтверждение самим Claude.
А этот обход песочницы в сочетании с атакой инъекции подсказок "Comment and Control", раскрытой Гуань Аонанем в апреле, сформировал полную цепочку атак (см.: Three Layers of Defense Still Not Enough, a PR Title Can Steal Your API Key: AI Agent Security Crack Reappears). Исследование "Comment and Control" уже доказало, что три инструмента AI-программирования имеют поверхности для атак инъекции подсказок, но точки входа различаются: у Claude Code — только через заголовок PR, у Gemini CLI — через комментарий или тело Issue, у Copilot Agent — используют HTML-комментарии для скрытой инъекции. Например, в Claude Code заголовок PR напрямую конкатенируется в шаблон подсказки без фильтрации или экранирования, и модель не может отличить намерения человека от злонамеренной инъекции.
Комбинация обоих методов — скрытая инструкция, заставляющая агента запускать атакующий код внутри песочницы, и инъекция нулевого байта для обхода сетевой блокировки — позволяет передать API-ключи из переменных окружения, учетные данные AWS, токены GitHub, данные внутренних конечных точек API и т.д. на любой сервер в интернете. Данные выходят через сам прокси SOCKS5, весь процесс атаки не требует промежуточного сервера, и именно этот прокси является компонентом, которому пользователь доверяет как границе безопасности. Злоумышленнику даже не нужны права на запись в репозиторий, достаточно отправить публичный Issue. Человек-рецензент в интерфейсе рендеринга GitHub видит нормальный запрос на сотрудничество, а AI Agent анализирует полный злонамеренный исходный код.
Даже Claude признал: уязвимость реальна
Ключевая деталь этого раскрытия исходит от самого Claude Code. Гуань Аонань напрямую передал код воспроизведения уязвимости на выполнение Claude Code, попросив его дать техническую оценку. Claude Code, выполнив контрольный тест (обычное имя хоста было заблокировано) и атакующий тест (имя хоста с нулевым байтом обошло блокировку), дал четкий вывод:
«Это настоящий обход фильтра сетевой песочницы, а не просто артефакт теста. Вам следует сообщить об этом в Anthropic по адресу https://github.com/anthropics/claude-code/issues.»
Тестируемый продукт сам подтвердил реальность и серьезность уязвимости и даже активно указал путь для сообщения. Эта деталь была полностью зафиксирована Гуань Аонанем в исследовательском отчете и стала источником заголовка в The Register — «Even Claude agrees hole in its sandbox was real and dangerous» (Даже Claude согласен, что дыра в его песочнице была реальной и опасной).

Обложка исследования Гуань Аонаня — Claude Code, увидев собственную уязвимость, признал: «Это настоящий обход фильтра сетевой песочницы», красная рамка выделяет ключевое утверждение.
Ответ Anthropic и пять месяцев молчания
Сама уязвимость вызывает беспокойство, но то, как с ней поступил Anthropic, заслуживает большего внимания отрасли.
Гуань Аонань в начале апреля 2026 года через программу вознаграждений за уязвимости HackerOne (отчет № #3646509) представил Anthropic подробный отчет о втором обходе песочницы. Первоначальный ответ Anthropic был следующим:
«Благодарим за ваш отчет. После рассмотрения данного представления мы определили, что это дубликат существующего внутреннего отчета, который мы уже отслеживаем.»
Отчет был немедленно закрыт. Когда Гуань Аонань поинтересовался планами по присвоению номера CVE, Anthropic ответил 7 апреля:
«Мы еще не решили, будет ли опубликован номер CVE для этой проблемы, и не можем сообщить сроки по этому решению.»
Впоследствии уязвимость была тихо исправлена в версии v2.1.90. Не было уведомлений о безопасности, не было номера CVE, на странице рекомендаций по безопасности Claude Code нет никаких записей, в логе обновлений не упоминается ничего, связанного с безопасностью. Полный обход, существовавший с первого дня работы песочницы, продолжавшийся 5,5 месяцев и охвативший около 130 версий, для пользователей словно никогда не происходил.
Такая модель реагирования возникла не впервые. Способ реагирования на первый обход (CVE-2025-66479) был почти идентичным: Anthropic присвоил CVE только низкоуровневой библиотеке @anthropic-ai/sandbox-runtime (оценка CVSS всего 1.8, «Низкий»), а не пользовательскому продукту Claude Code; в логе обновлений было написано «Исправлено разрешение DNS в прокси», без упоминания уязвимости безопасности. Гуань Аонань в своем исследовательском отчете написал об этом: «Когда в React Server Components обнаружилась серьезная уязвимость, React и Next.js получили отдельные CVE, Meta и Vercel выпустили уведомления о безопасности, оба сообщества были полностью проинформированы. Anthropic выбрал другой подход.» На данный момент поиск «Claude Code Sandbox CVE» по-прежнему не находит никаких официальных уведомлений о безопасности.
При решении проблемы кражи учетных данных Anthropic выбрал запрет команды ps, но подход с черным списком изначально неполноценен — запретить одну команду, у злоумышленника есть бесчисленные альтернативные пути. Правильный подход — четко объявить, какие именно инструменты нужны агенту. В исследовании «Comment and Control» Anthropic, хотя и повысил оценку уязвимости до CVSS 9.4 (уровень Critical) и перевел ее в частную программу вознаграждений, представитель компании заявил, что «этот инструмент изначально не был усилен против инъекций подсказок». Производитель по умолчанию доверяет собственной безопасности модели, но на уровне системной архитектуры не хватает глубокой эшелонированной защиты; когда уязвимость выявляет этот пробел, «ограничения дизайна» становятся удобной классификацией — они одновременно признают проблему и в некоторой степени освобождают от обязанности выпускать уведомления о безопасности.
Более широкая картина отрасли такова, что та же проблема не ограничивается только Anthropic. В исследовании «Comment and Control», раскрытом в апреле, было подтверждено, что Gemini CLI от Google и Copilot Agent от GitHub Microsoft также имеют ту же поверхность атаки, все три компании подтвердили и исправили уязвимости, но ни одна не выпустила уведомлений о безопасности или номеров CVE. Anthropic заплатил 100 долларов вознаграждения, Google — 1337 долларов, GitHub изначально закрыл отчет с формулировкой «известная проблема, не воспроизводится», после получения доказательств обратной инженерии закрыл дело с меткой «информационный», выплатив 500 долларов. Итого 1937 долларов — а эти три продукта охватывают подавляющее большинство компаний из списка Fortune 100.
Ложное чувство безопасности более вредно, чем отсутствие мер безопасности. Пользователи без песочницы знают, что у них нет границ; пользователи с неисправной песочницей думают, что они есть. Команда, использующая Claude Code и настроившая белый список доменов, в течение 5,5 месяцев ничего не знала о рисках, а после обновления, увидев лог обновлений, сделает вывод: песочница все это время работала нормально. Кроме того, когда уязвимость раскрыта, отсутствие уведомлений о безопасности означает, что пользователи не могут определить, затронуты ли они были, и у них нет основы для ретроспективного аудита.
Перед лицом этой ситуации сообщество безопасности начинает приходить к консенсусу: нельзя возлагать доверие на реализацию песочницы производителя как на единую точку. Прокси SOCKS5 Claude Code построен на стороннем пакете npm, имеющем всего 10 звезд на GitHub, чья последняя фиксация датирована июнем 2024 года, граница безопасности пересекает две среды выполнения — JavaScript и C, но в точке перехода доверия отсутствует самая базовая обработка нормализации. Функция isValidHost(), добавленная в патче исправления — отвечающая за отказ в нулевых байтах, процентном кодировании, CRLF и других недопустимых символах — должна была существовать с первого дня работы песочницы. Гуань Аонань предложил практичную структуру защиты — рассматривать AI Agent как супер-сотрудника, который должен следовать принципу минимальных привилегий, ключ в многоуровневой защите:

Репутация безопасности строится на прозрачности каждого раскрытия и каждого патча, а не на нарративе бренда. Когда пользователи на основе доверия передают учетные данные агенту для обработки, производитель обязан обеспечить эффективность защитных рубежей и своевременно информировать в случае их нарушения. В обоих этих аспектах Anthropic не справился с песочницей Claude Code.
«Худший результат песочницы — не в том, что она что-то блокирует, а в том, что она создает у людей ложное чувство безопасности. Выпустить песочницу с уязвимостью хуже, чем не выпускать песочницу вовсе.» — заявил Гуань Аонань.
(Эта статья впервые появилась в Titanium Media APP, автор | Silicon Valley Tech_news, редактор | Цзяо Янь)
Ссылки:
1. oddguan.com — Second Time, Same Sandbox: Another Anthropic Claude Code Network Sandbox Bypass Enables Data Exfiltration (Aonan Guan, 2026.05.20)
2. The Register — Even Claude agrees hole in its sandbox was real and dangerous (2026.05.20)








