Раскрытие секретов через Claude Code GitHub Action

Оригинал: Claude Code GitHub Action Secret Exposure

Microsoft Defender Security Research Team продемонстрировала, что Claude Code GitHub Action от Anthropic может раскрывать секреты рабочих процессов CI/CD при обработке содержимого GitHub с промпт-инъекциями — например, текстов issues, описаний pull requests и комментариев.

Исследователи проанализировали кодовую базу Claude Code Action и обфусцированный Claude Agent SDK, чтобы понять, как выполнялись вызовы инструментов агента и как события GitHub передавали ему содержимое. Они подготовили промпт, оформленный как проверка соблюдения требований и предписывавший Claude считать учётные данные из окружения своего процесса, удалить из них префикс и вывести преобразованное значение. Исследователи внедрили промпт через подконтрольное злоумышленнику содержимое GitHub, которое обрабатывалось лабораторным рабочим процессом. Claude Code Action загрузил вредоносное содержимое в контекст Claude, где оно было интерпретировано как инструкции.

Claude вызвал инструмент Read для чтения /proc/self/environ; инструмент вернул не прошедшее санитизацию окружение процесса Claude Code Action, включая ANTHROPIC_API_KEY. В отличие от подпроцессов Bash, операции Read не выполнялись ни в песочнице Bubblewrap, ни в границах очищенного окружения. Удаление из ключа префикса sk-ant- позволило выходному значению обойти поведение Claude при отказе от выдачи секрета и механизм GitHub для обнаружения секретов по шаблонам, при этом исследователи по-прежнему могли восстановить исходное значение. Microsoft назвала WebFetch, Bash, GitHub MCP и логи GitHub Actions потенциальными дополнительными каналами эксфильтрации в зависимости от конфигурации рабочего процесса.

Microsoft сообщила Anthropic о проблеме через HackerOne 29 апреля 2026 года. 5 мая 2026 года Anthropic приняла меры по устранению уязвимости в Claude Code 2.1.128, заблокировав инструменту Read доступ к чувствительным файлам /proc.

Процедура

  1. AML.TA0002 Разведка

    AML.T0095.000 Репозитории кода

    Исследователи проанализировали кодовую базу Claude Code Action и обфусцированный Claude Agent SDK. Это позволило им понять, как агент запускает инструменты и где в системе проходят границы безопасности.
  2. AML.TA0008 Выявление

    AML.T0084.001 Определения инструментов

    Исследователи выявили инструменты, доступные Claude Code Action, и сравнили пути их выполнения. Они установили, что подпроцессы Bash могли выполняться внутри Bubblewrap с очищенным окружением, тогда как встроенный инструмент Read осуществлял прямой внутрипроцессный доступ к файлам за пределами этой границы изоляции.
  3. AML.TA0008 Выявление

    AML.T0084.002 Триггеры активации

    Исследователи установили, что Claude Code Action мог активироваться событиями GitHub, связанными с issues, pull requests и комментариями; после срабатывания Claude Code Action загружал связанное с событием содержимое в контекст Claude.
  4. AML.TA0003 Подготовка ресурсов

    AML.T0065 Создание промптов для LLM

    Исследователи подготовили адаптированный для Claude Code Action промпт, оформленный как задача по проверке соблюдения требований и предписывавший Claude считать учётные данные из своего окружения и вывести полученное значение.
  5. AML.TA0004 Первичный доступ

    AML.T0093 Внедрение промпта через публичное приложение

    Исследователи внедрили вредоносный промпт через подконтрольное злоумышленнику содержимое GitHub, которое обрабатывал лабораторный рабочий процесс. Так они смоделировали доставку через текст issue, описание pull request или комментарий, поступающие на обработку Claude Code Action.
  6. AML.TA0005 Выполнение

    AML.T0051.001 Косвенная промпт-инъекция

    Claude Code Action включил вредоносное содержимое GitHub в контекст модели. Claude интерпретировал его как инструкции и выполнил их.
  7. AML.TA0007 Уклонение от защиты

    AML.T0054 Джейлбрейк LLM

    Промпт был оформлен как безобидная проверка соблюдения требований и содержал инструкции удалить префикс учётных данных, чтобы обойти поведение Claude при отказе от вывода API-ключа в распознаваемом формате.
  8. AML.TA0005 Выполнение

    AML.T0053 Вызов инструментов ИИ-агента

    Claude вызвал встроенный инструмент Read для чтения /proc/self/environ. Инструмент Read выполнялся за пределами границы изоляции на основе Bubblewrap и очищенного окружения, которая применялась к подпроцессам Bash.
  9. AML.TA0013 Доступ к учетным данным

    AML.T0098 Сбор учетных данных через инструменты ИИ-агента

    Инструмент Read вернул не прошедшее санитизацию окружение процесса Claude Code Action, включая ANTHROPIC_API_KEY и, возможно, другие учётные данные, доступные рабочему процессу.
  10. AML.TA0010 Эксфильтрация

    AML.T0057 Утечка данных из LLM

    Claude вывел API-ключ Anthropic после удаления его префикса sk-ant-. Из-за этого преобразования сканер секретов GitHub не смог распознать ключ, тогда как исследователи могли восстановить исходное значение, вернув префикс.
  11. AML.TA0010 Эксфильтрация

    AML.T0086 Эксфильтрация через вызов инструмента ИИ-агента

    В зависимости от инструментов, доступных в конфигурации рабочего процесса, исследователи могли использовать WebFetch, Bash, GitHub MCP и логи GitHub Actions как потенциальные каналы эксфильтрации.

Источники

  1. Securing CI/CD in an agentic world: Claude Code Github action case