>_toolkitbox

~/ / AI 기사 / 공개된 MCP 설정 파일에서 유효한 비밀 정보 2,117건: GitGuardian이 찾은 것과 내 파일을 확인하는 방법

공개된 MCP 설정 파일에서 유효한 비밀 정보 2,117건: GitGuardian이 찾은 것과 내 파일을 확인하는 방법

AI 애플리케이션이 어떤 MCP 서버를 실행할지 알려 주는 설정 파일에는 키가 필요한 경우가 많습니다. GitGuardian의 State of Secrets Sprawl 2026 보고서는 공개 GitHub의 MCP 관련 설정 파일에서 고유한 비밀 정보 24,008건을 집계했고, 그중 2,117건이 유효한 자격 증명이었습니다. 이 글은 보고서를 요약하고, 프로젝트 설정 파일에 대해 Claude Code 문서가 설명하는 내용을 정리하며, 내 파일을 직접 확인할 수 있게 해 줍니다.

게시: · 2026-10-24에 공식 자료와 대조해 확인했습니다. 이 글은 자료를 요약한 것이며 자료를 대신하지 않습니다.

보고서가 찾아낸 것

  • GitGuardian은 2026년 3월 17일에 State of Secrets Sprawl 2026 보고서를 발표했습니다. 데이터는 2025년을 다룹니다.
  • 공개 GitHub 전체의 MCP 관련 설정 파일에 노출된 고유 비밀 정보는 24,008건이었고, 그중 고유한 유효 자격 증명이 2,117건이었습니다.
  • 2025년 한 해에만 공개 GitHub 커밋에 하드코딩된 새 비밀 정보가 2,865만 건 추가되었으며, 보고서는 이를 전년 대비 34% 증가라고 합니다.
  • AI 서비스 비밀 정보는 1,275,105건에 이르러 전년 대비 81% 늘었습니다.
  • 보고서는 이 문제가 문서 자체에서 비롯되는 경우가 많다고 말합니다. API 키를 설정 파일, 명령줄 인수, 내장된 연결 문자열에 직접 넣도록 부추기는 안전하지 않은 패턴을 문서가 권한다는 것입니다.

프로젝트의 MCP 파일이 유출되기 쉬운 이유

Claude Code는 프로젝트 범위의 MCP 서버를 프로젝트 루트 디렉터리의 .mcp.json 파일에 저장하며, 문서는 이 파일이 버전 관리를 통해 공유된다고 설명합니다. 여기에 입력한 키는 저장소를 읽을 수 있는 모든 사람에게 보입니다.

범위저장 위치볼 수 있는 사람
로컬~/.claude.json의 프로젝트 경로 아래현재 프로젝트, 나만 볼 수 있음
프로젝트프로젝트 루트의 .mcp.json현재 프로젝트, 버전 관리를 통해 공유됨
사용자~/.claude.json내 모든 프로젝트

키를 파일 밖에 두기

  • Claude Code는 command, args, env, url, headers 안의 ${VAR}와 ${VAR:-default}를 확장하므로, 파일에 값 대신 변수 이름을 적을 수 있습니다. 문서의 예시는 헤더를 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을 읽습니다. Prompt Redactor와 같은 탐지기를 사용해 args, env, headers에 쓰인 비밀 정보처럼 보이는 값과, Claude Code가 빈 값으로 읽는 변수 참조를 표시합니다. 탐지는 휴리스틱이므로 비밀 정보를 놓치거나 무해한 값을 표시할 수 있습니다.

직접 해 보기: MCP Config Checker

2026-10-23에 문서를 기준으로 규칙을 확인했습니다.

문서: Claude Code / Model Context Protocol / VS Code

확인하지 않는 것: 명령이 존재하는지, 패키지가 설치되는지, 원격 서버가 응답하는지, 그리고 다른 애플리케이션이 다르게 읽는 설정.

모든 처리는 브라우저 안에서 이루어집니다. 설정은 업로드되지 않습니다.

설정을 AI 채팅에 붙여 넣기 전에

서버가 시작되지 않는 이유를 묻기 위해 설정 파일을 AI 채팅에 붙여 넣는 경우가 많습니다. Prompt Redactor는 텍스트 속의 API 키, 토큰, 비밀번호, 개인 정보를 가리고, 답변에서 다시 복원할 수 있으며, 모든 처리는 브라우저 안에서 이루어집니다.

직접 해 보기: Prompt Redactor

가릴 대상

문서로 공개된 형식 — 벤더나 RFC가 공개한 것

비밀처럼 보이는 패턴 — 모양이나 이름을 보고 추측한 것으로, 놓치거나 과하게 일치할 수 있음

개인 정보와 네트워크 정보 — 패턴으로 찾은 것

가려진 텍스트

가려진 텍스트가 여기에 표시됩니다.

이 도구는 알아볼 수 있는 형태의 텍스트를 찾습니다. 일반 문장으로 쓴 기밀 정보는 찾지 못하므로, 아무것도 발견되지 않았다고 해서 안전하다는 뜻은 아닙니다.

보내기 전에 가려진 텍스트를 읽어 보세요.

키 형식은 2026-10-23에 벤더 문서와 RFC로 확인했습니다.

모든 처리는 브라우저 안에서 이루어집니다. 텍스트도 복원용 대응표도 업로드되지 않습니다.

이미 비밀 정보를 커밋했다면

  • GitHub 문서는 첫 단계로 비밀 정보를 폐기(revoke)하거나 교체(rotate)해 더 이상 접근에 쓸 수 없게 하라고 설명합니다.
  • 교체한 뒤에는 비밀 정보를 폐기하는 것만으로 문제가 해결될 수 있으므로, 저장소 기록을 다시 쓸 필요가 없을 수도 있습니다.
  • 커밋이 포크에 존재한다면 포크에서는 계속 접근할 수 있습니다. GitHub는 포크 소유자의 연락처를 알려 줄 수 없습니다.
  • 커밋은 GitHub의 캐시된 화면에서 SHA-1 해시로 계속 접근할 수 있는 경우가 있습니다. 자격 증명을 교체해도 위험을 줄일 수 없는 민감한 데이터라면, GitHub Support가 캐시된 화면과 참조를 제거할 수 있습니다.

출처