Перейти к содержанию

Claude Code

Песочница Claude Code сама убрала запрос разрешения

3 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →
Изображение: accomplish.ai

В Accomplish включили песочницу Claude Code, выставили самый строгий режим разрешений - «не спрашивать» - и отправили в открытом репозитории одно короткое сообщение. Команда из этого репозитория выполнилась у них на Mac: снаружи песочницы и без единого запроса на подтверждение. Дыру Anthropic закрыла в Claude Code 2.1.247.

Запроса не было как раз из-за песочницы, и это самое неожиданное в разборе Accomplish. Когда её включаешь, Claude заворачивает команды агента в Seatbelt - механизм изоляции macOS - и перестаёт спрашивать перед запуском: границы заданы заранее, остальное режет операционная система.

Но свои git-команды обвязка Claude Code запускает мимо песочницы. Она делает это в фоне, чтобы индексировать репозиторий. А у git есть настройка core.fsmonitor: git читает её из .git/config и выполняет как shell-команду каждый раз, когда заглядывает в рабочее дерево. Тот же вектор через конфиг недоверенного репозитория описывали в исследовании GitSpawn.

Значит, агенту, который хочет выбраться, нужно записать core.fsmonitor в какой-нибудь .git/config и заставить обвязку выполнить git-команду, которая эту настройку прочитает. Сама команда уже снаружи песочницы. Мешают четыре преграды, и каждую удалось обойти.

Четыре преграды

  • Git-команды укреплены: те, что Claude Code запускает снаружи, идут с флагами, которые гасят core.fsmonitor и прочие опасные опции. Но один вызов остался без них - git ls-files, обновляющий индекс файлов.
  • Папку .git защищают: файловые инструменты Claude не пишут внутрь неё, Seatbelt тоже блокирует запись, а свежий клон чужой .git/config не приносит. Переименовать другую папку в .git запрещено - но только в корне проекта. Правила Seatbelt для вложенной .git нет.
  • git в корне проекта видит чистую .git. На деле он запускается в том каталоге, где последний раз работал инструмент Bash, - скрипт просто переходит в подкаталог с отравленной .git.
  • Обвязка не перезапускает ту git-команду сама. Запустить её можно через автозагрузку навыков: когда Claude читает файл, он проверяет его папку на навыки и подгружает найденное, а загрузка навыка обновляет индекс файлов.

Цепочка складывается так: установочный скрипт собирает git-папку под другим именем, пишет в её конфиг core.fsmonitor, переименовывает в .git внутри подкаталога и последней строкой просит Claude прочитать там отчёт о сборке. Чтение подгружает навык, навык запускает обновление индекса - тот самый невычищенный git ls-files - и он выполняется в подкаталоге с отравленной .git. Запроса разрешения нет нигде. Запустить всё это можно и через непрямую инъекцию инструкций - вредоносный текст в данных, которые читает агент.

Граница пожёстче

Укрепление git закрывает именно этот путь, но оставляет принцип: песочница укрывает только shell-команды, а файловые инструменты, MCP-серверы и hooks работают снаружи. В документации Claude Code на этот случай советуют запускать сам процесс в контейнере или виртуальной машине - чтобы всё оказалось под одной границей.

Так устроен и собственный подход Accomplish: весь агент - Bash, git, все запущенные им процессы - сидит в виртуальной машине. Настоящие доступы в гостевую систему не попадают, у агента только заглушки, а его трафик уходит через прокси на хосте, который он не может перенастроить. Отравленный core.fsmonitor при этом всё равно срабатывает, но уже внутри виртуальной машины.

Как закрыли

В Accomplish сообщили о проблеме 13 июля 2026 года, Anthropic разобрала отчёт в тот же день. Первое укрепление вышло 6 августа в 2.1.223, но зацепило не все git-вызовы, и обход просто переехал на другой - исследователи прислали оставшиеся вызовы. Полное исправление приехало 26 августа, в 2.1.247.

Теперь каждая git-команда обвязки гасит core.fsmonitor, и конфиг репозитория ничего запустить не может.

Проекты сообщества

Шифр золотых слитков не вскрыли, потому что шифра нет

Из 200 000 смоделированных строк ни одна не вышла такой ровной, как «шифр» с золотых слитков 1933 года. В проекте с Claude буквы пересчитали: 21 из 26 встречается ровно по десять раз, а так не умеет ни один шифр.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.