>_toolkitbox

~/ / Статьи об ИИ / 2,117 действующих секретов в публичных файлах конфигурации MCP: что нашла GitGuardian и как проверить свои

2,117 действующих секретов в публичных файлах конфигурации MCP: что нашла GitGuardian и как проверить свои

Файлу конфигурации, который сообщает ИИ-приложению, какие серверы MCP запускать, часто нужен ключ. В отчёте GitGuardian State of Secrets Sprawl 2026 в файлах конфигурации, связанных с MCP, в публичном GitHub насчитали 24,008 уникальных секретов, и 2,117 из них оказались действующими учётными данными. В статье изложен отчёт, объяснено, что сказано о файлах конфигурации проекта в документации Claude Code, и дана возможность проверить свой файл.

Опубликовано: · Сверено с официальными источниками 2026-10-24. Статья излагает их содержание и не заменяет их.

Что обнаружил отчёт

  • GitGuardian опубликовала отчёт State of Secrets Sprawl 2026 17 марта 2026 года. Его данные охватывают 2025 год.
  • В нём подсчитано 24,008 уникальных секретов, открытых в файлах конфигурации, связанных с MCP, в публичном GitHub, в том числе 2,117 уникальных действующих учётных данных.
  • Только за 2025 год в коммиты публичного GitHub было добавлено 28.65 million новых секретов, прописанных прямо в коде, что отчёт называет ростом на 34% по сравнению с прошлым годом.
  • Секретов сервисов ИИ стало 1,275,105, что на 81% больше, чем годом ранее.
  • В отчёте сказано, что проблему нередко порождает сама документация, которая подталкивает к небезопасным приёмам: записывать ключи API прямо в файлы конфигурации, аргументы командной строки или встроенные строки подключения.

Почему файл MCP проекта легко утекает

Claude Code хранит серверы MCP уровня проекта в файле .mcp.json в корневом каталоге проекта, и в его документации этот файл описан как общий через систему контроля версий. Ключ, записанный в него, виден всем, кто может читать репозиторий.

ОбластьГде хранитсяКто видит
Локальная (Local)~/.claude.json, под путём проектаТекущий проект, виден только вам
Проектная (Project).mcp.json в корне проектаТекущий проект, общий через систему контроля версий
Пользовательская (User)~/.claude.jsonВсе ваши проекты

Не храните ключ в файле

  • Claude Code раскрывает ${VAR} и ${VAR:-default} в command, args, env, url и headers, поэтому в файле можно указать имя переменной вместо самого значения. В собственном примере документации заголовок записан как Authorization: Bearer ${API_KEY}.
  • Если переменная не задана и не имеет значения по умолчанию, конфигурация всё равно загружается. Claude Code показывает предупреждение и использует текст ${VAR} как написано.
  • В url и headers удалённого сервера некоторые переменные с учётными данными читаются как пустые, даже если они заданы. В документации в качестве примеров названы ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, AWS_BEARER_TOKEN_BEDROCK, HTTPS_PROXY и NPM_TOKEN, и сказано, что переменная с именем API_KEY раскрывается как написано.
  • Значение, записанное в args или url, тоже сохраняется в файле, поэтому предупреждение отчёта об аргументах командной строки и встроенных строках подключения относится и к этим случаям.

Проверьте свой файл

Приведённая ниже проверка читает .mcp.json или claude_desktop_config.json в вашем браузере. Она отмечает значения, похожие на секреты, записанные в args, env и headers, с помощью тех же детекторов, что и Prompt Redactor, а также ссылки на переменные, которые Claude Code читает как пустые. Обнаружение основано на эвристике, поэтому она может пропустить секрет или отметить безвредное значение.

Попробовать: MCP Config Checker

Правила проверены по документации 2026-10-23.

Документация: Claude Code / Model Context Protocol / VS Code

Не проверяется: существует ли команда, устанавливается ли пакет, отвечает ли удалённый сервер, а также настройки, которые другие приложения читают по-своему.

Всё выполняется в вашем браузере. Конфигурация не загружается на сервер.

Прежде чем вставлять конфигурацию в чат с ИИ

Файл конфигурации часто вставляют в чат с ИИ, чтобы спросить, почему не запускается сервер. Prompt Redactor маскирует в тексте ключи API, токены, пароли и персональные данные и может вернуть их на место в ответе; всё это происходит в вашем браузере.

Попробовать: Prompt Redactor

Что маскировать

Описанные форматы — опубликовано производителем или в RFC

Шаблоны, похожие на секреты — определяется по форме или имени; может пропустить или сработать лишний раз

Персональные и сетевые данные — находится по шаблону

Замаскированный текст

Здесь появится замаскированный текст.

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

Прочитайте замаскированный текст, прежде чем отправлять его.

Форматы ключей сверены с документацией производителей и RFC 2026-10-23.

Всё выполняется в вашем браузере. Ни ваш текст, ни таблица восстановления никуда не загружаются.

Если секрет уже попал в коммит

  • В документации GitHub сказано, что первым шагом нужно отозвать секрет или заменить его, чтобы им нельзя было получить доступ.
  • После замены переписывать историю репозитория, возможно, не требуется, потому что отзыва секрета может быть достаточно для решения проблемы.
  • Если коммит есть в форках, он остаётся там доступным. GitHub не может сообщить вам контактные данные владельцев форков.
  • Коммиты могут оставаться доступными по своим хешам SHA-1 в кэшированных представлениях на GitHub. Служба поддержки GitHub может удалить кэшированные представления и ссылки для конфиденциальных данных, риск которых нельзя снизить заменой учётных данных.

Источники