Уязвимость действия GitHub Claude Code позволила захват репозитория
TL;DRA Уязвимость в GitHub Action Claude Code от Anthropic позволила злоумышленникам обойти проверки разрешений через фальшивую учетную запись бота и использовать инъекцию команд для кражи OIDC токенов, получая права на запись в любой уязвимый репозиторий. Anthropic устранила уязвимость в течение четырех дней после раскрытия.
Атака начинается с проблемы на GitHub. Не сложной. Просто проблема, открытая учетной записью бота с тщательно сформулированным текстом, который выглядит как сообщение об ошибке. Когда GitHub Action Claude Code подбирает ее для триажа, он следует скрытым инструкциям, читает переменные окружения процесса и записывает их обратно в проблему для сбора злоумышленником.
Эти переменные содержат учетные данные, необходимые для запроса OIDC токена, который можно обменять на токен установки приложения Claude GitHub с полными правами на запись в код репозитория, проблемы и рабочие процессы. Направьте атаку на собственный репозиторий claude-code-action от Anthropic, который использовал тот же уязвимый рабочий процесс, и вы могли бы отравить действие, которое используют тысячи downstream проектов.
Исследователь безопасности RyotaK из GMO Flatt Security сообщил об уязвимости Anthropic в январе. Компания исправила основное обходное решение в течение четырех дней, с дополнительным укреплением весной. Исправления находятся в claude-code-action v1.0.94. Anthropic оценила проблемы в 7.8 по шкале CVSS v4.0 и выплатила вознаграждение в размере 4,800 долларов.
Как работал обход
💜 технологий ЕС Последние новости из технологической сцены ЕС, история от нашего мудрого основателя Бориса и немного сомнительного ИИ-арта. Это бесплатно, каждую неделю, в вашем почтовом ящике. Подпишитесь сейчас! GitHub Actions Claude Code предоставляет Claude права на чтение и запись кода репозитория, проблем, запросов на слияние, обсуждений и файлов рабочих процессов по умолчанию. Чтобы ограничить, кто может активировать эти возможности, действие проверяет, имеет ли актер права на запись в репозиторий.
Проверка имела уязвимость. Она автоматически доверяла любому актеру, чье имя заканчивалось на [bot], исходя из предположения, что приложения GitHub являются доверенными инструментами, установленными администраторами. Но любой может зарегистрировать приложение GitHub, установить его в репозиторий, которым он управляет, и использовать его токен для открытия проблемы в любом публичном репозитории. Действие увидело имя бота и пропустило содержимое. Режим агента не имел дополнительной проверки человеческого актера, которую выполнял режим тегов, оставляя его полностью открытым.
Пройдя через ворота, злоумышленник использует косвенную инъекцию команд, внедряя инструкции в содержимое, которое Claude читает как данные, но выполняет как команды. RyotaK создал текст проблемы, замаскированный под сообщение об восстановлении после ошибки. Claude «восстановился», выполнив команды, скрытые внутри, прочитав /proc/self/environ, несмотря на встроенные защитные механизмы Claude Code против этой операции, и опубликовав значения в проблему.
Второй путь, не требующий бота
RyotaK также выявил более мягкий путь, который полностью обошел трюк с ботом. Пример рабочего процесса триажа проблем от Anthropic поставлялся с настройкой allowed_non_write_users: “*”, которая позволяет любому активировать действие. Документация Anthropic уже отметила это как рискованное, но многие репозитории скопировали пример и унаследовали конфигурацию.
Хуже того, Claude публиковал сводки задач в публично видимой панели сводки выполнения рабочего процесса, создавая готовый канал для эксфильтрации. Третий вариант нацеливался на условия гонки: отредактируйте проблему доверенного пользователя после запуска рабочего процесса, но до того, как Claude ее прочитает, и злонамеренный полезный груз пройдет как доверенный ввод.
Не теоретически
Та же схема, AI-триаж проблем в сочетании с широкими разрешениями и инъекцией команд, уже нанесла реальный ущерб. В феврале заголовок проблемы с инъекцией команд против рабочего процесса триажа claude-code-action от Cline позволил злоумышленникам украсть токен публикации npm и запустить несанкционированную версию [email protected]. Неправильная версия принудительно установила отдельного AI-агента под названием OpenClaw на примерно 4,000 систем разработчиков в течение восьми часов, прежде чем была удалена.
Автономный бот под названием HackerBot-Claw затем провел конец февраля, исследуя неправильные конфигурации GitHub Actions в проектах Microsoft, Datadog и CNCF. Когда он попытался внедрить инъекцию команд через отравленный конфигурационный файл, Claude поймал его и отказал. Это одновременно обнадеживает и беспокоит: защиты модели достаточно непоследовательны, чтобы один и тот же класс атаки иногда срабатывал, а иногда нет.
Пятьдесят обходов и продолжается
RyotaK говорит, что он теперь сообщил примерно о 50 отдельных способах обойти систему разрешений Claude Code и выполнить команды. Это открытие является частью более широкой волны атак на цепочку поставок, нацеленных на инструменты разработки с поддержкой ИИ, от отравленного расширения VS Code, которое нарушило собственные репозитории GitHub, до злонамеренных пакетов npm, предназначенных для сбора учетных данных от помощников по программированию на ИИ.
Устранение проблемы простое: обновите до claude-code-action v1.0.94 или более поздней версии, проверьте любой рабочий процесс, который позволяет пользователям без прав на запись или ботам активировать Claude, удалите ненужные секреты из окружения и уберите инструменты и разрешения, которые могут быть использованы для эксфильтрации.
Глубокая проблема структурная. Инъекция команд остается нерешенной. AI-агент с реальными инструментами и реальными токенами может быть использован в пределах своих разрешений, а разрешения, которые большинство организаций предоставляет по умолчанию, гораздо шире, чем поверхность атаки, которую они готовы защищать.
Другие статьи
Уязвимость действия GitHub Claude Code позволила захват репозитория
Уязвимость в GitHub Action Клода Коде позволила злоумышленникам обойти проверки разрешений с помощью поддельных ботов и украсть OIDC токены через инъекцию команд.
