
보안 연구팀이 공개 GitHub 저장소에서 약 8만 2,000개의 MCP(AI 에이전트가 외부 서비스에 연결할 때 쓰는 설정 규격) 설정 파일을 분석한 결과, 약 12%의 인증 정보 항목에 비밀번호나 API 키가 평문 그대로 저장된 것을 발견했습니다. 특히 이 가운데 24%는 만료 기한이 없고 광범위한 권한을 가진 자격증명으로, 한 번 유출되면 조직 전체의 시스템에 지속적으로 접근할 수 있습니다. 파일에서 비밀 값을 삭제해도 Git 커밋 기록에는 남아 있어 단순 삭제만으로는 완전한 제거가 불가능합니다. 유출이 확인된 경우에는 해당 서비스 제공자 측에서 자격증명을 직접 무효화·교체해야 합니다. AI 에이전트가 소스코드, 데이터베이스, 클라우드 인프라에 접근하는 사례가 늘면서 비인간 계정(머신 아이덴티티) 관리가 기업 보안의 새 과제로 떠오르고 있습니다.
보안 연구팀이 공개 GitHub에서 수집한 8만 2,000개의 MCP 설정 파일을 분석하여 약 12%의 인증 슬롯에 하드코딩된 자격증명(API 키, 베어러 토큰, DB 비밀번호 등)이 존재함을 확인했다.
조직 전체 범위의 액세스 권한을 가진 장기 유효 자격증명이 외부에 노출되어, 소스코드·DB·클라우드 인프라에 대한 무단 접근 위험이 발생한다. 파일을 수정·삭제해도 Git 커밋 이력에 잔류하여 피해가 지속될 수 있다.
개발자가 MCP 설정 파일에 자격증명을 평문으로 저장한 뒤 공개 저장소에 커밋하는 관행이 원인이다. 55%는 벤더 인식 형식이 없는 불투명 토큰이어서 자동 탐지도 어렵다.
유출된 자격증명은 서비스 제공자 측에서 즉시 무효화 및 교체(rotate)해야 한다. 설정 파일 커밋 전 시크릿 스캔 도입, 환경 변수 또는 시크릿 매니저 참조 방식으로의 전환이 필요하다.
MCP 설정 파일을 .gitignore로 제외하거나, 자격증명은 반드시 환경 변수·Vault 등 시크릿 매니저로 분리 관리해야 한다. 기존 저장소는 Git 이력 전체를 대상으로 시크릿 스캔을 수행하고, 발견 시 단순 삭제가 아닌 자격증명 교체를 우선해야 한다.
본문
API 키 하드코딩,
해당 업체는 약 8만 2,000개의 설정 파일을 분석한 결과, 자격증명 슬롯의 12%에 하드코딩된 자격증명 리터럴이 포함되어 있어 연결된 서비스와 시스템의 자격증명이 노출될 가능성이 있음을 발견했다.
노출된 자격증명의 식별 방법
연구진은 주요 코딩 에이전트가 사용하는 설정 파일명을 공개 GitHub 저장소에서 검색했다. 환경 값과 인증 헤더를 조사하고, 인증 정보가 어떻게 저장되었는지에 따라 자격증명 슬롯을 분류했다.
각 자격증명 슬롯이 값을 획득하는 방식 (출처: Hush Security)
분류 항목에는 하드코딩 값, 환경 변수 참조, 클라이언트 관리 프롬프트, 시크릿 매니저 참조, 플레이스홀더, 빈 필드가 포함되었다. 연구진은 공급자별 패턴과 무작위성을 측정하는 Shannon 엔트로피를 활용해 하드코딩 값에서 유력한 시크릿을 식별했다.
GitHub 코드 검색은 기본 브랜치만 색인하고 포크를 제외하며 개별 쿼리 결과를 제한한다. 따라서 Hush는 보고된 수치를 정확한 노출 자격증명 수가 아닌 하한 추정치로 간주한다.
연구에 포함된 일부 파일은 MCP 설정을 선택적으로 포함할 수 있는 일반 설정 파일이었다. 이 경우 연구진은 MCP 서버를 선언한 샘플 파일만 집계했다. 발견된 값을 사용해 실제로 서비스 인증을 시도하지는 않았다.
일부 자격증명은 커밋 이후 이미 폐기되거나 교체되었을 수 있다. 하드코딩된 시크릿 중 55%는 벤더가 인식할 수 있는 토큰 형식이 없었으며, 그 중 31%는 내부 MCP 서버용 불투명 베어러 토큰으로 분류되었다.
인식 가능한 공급자별 형식이 없는 값에 대해서는 키 이름, 길이, 엔트로피, 문자 패턴을 활용해 자격증명일 가능성을 평가했다. 분석 결과 이 값들은 주로 벤더 API 키, 베어러 토큰, 데이터베이스 비밀번호로 구성되었으며, 비밀이 아닌 식별자의 비중은 무시할 만한 수준이었다.
원시 시크릿 값은 보관하지 않았다. 개별 저장소나 작성자가 특정되지 않도록 결과는 집계 및 익명화 처리되었다.
삭제된 시크릿은 Git 이력에 남을 수 있다
파일의 최신 버전에서 민감한 정보를 제거하더라도 저장소에서 완전히 사라지지 않을 수 있다. Git은 이전 버전을 보관하기 때문에 삭제된 값도 커밋 이력을 통해 접근 가능한 상태로 남는다.
연구진은 자격증명이 포함된 설정 파일 7,681개의 이력을 조사하면서 현재 버전 이전 최대 7개 리비전을 검토했다. 그 결과 243개의 설정 파일에서 현재 파일에는 시크릿이 제거되었지만 이전 커밋에는 여전히 남아 있는 것을 확인했다.
현재 설정에서 삭제해도 Git 이력에서는 제거되지 않으므로, 노출을 종료하려면 해당 공급자에서 자격증명을 교체하는 것이 반드시 필요하다.
Hush Security의 CEO Micha Rave는 이렇게 말했다. "수년간 보안팀이 훈련해 온 직관 — 시크릿을 스캔하고, 커밋을 차단하고, 유출된 것을 교체하는 것 — 은 이제 충분하지 않습니다. 이 파일들은 원래 커밋되도록 설계된 것이고, 시크릿이 들어가서는 안 됩니다. 시크릿이 포함되면, 그 중 위험도가 가장 높은 자격증명은 알려진 패턴과 일치하지 않으며, 그 배후의 아이덴티티에는 소유자도 만료 기한도 없습니다. 이것은 아무도 감시하지 않는 공개 Git에 액세스 토큰이 그대로 노출되어 있는 상황입니다."
하드코딩된 자격증명 리터럴 중 24%는 광범위한 범위를 가지며 설계상 만료되지 않는 유형이었다.
분류된 범위를 가진 자격증명 중 53%는 조직·계정·워크스페이스·데이터베이스 전체 수준의 접근 권한을 제공했다. 만료 정책이 정의된 자격증명 중 80%는 기본적으로 만료되지 않았다.
광범위한 권한을 가진 장기 유효 자격증명은 단일 자격증명으로 여러 리소스나 민감한 기능에 접근할 수 있기 때문에 노출 시 피해를 키울 수 있다.
MCP는 머신 아이덴티티 문제를 심화시킨다
MCP 연결은 AI 에이전트에게 사용자나 조직을 대신해 소스코드, 데이터베이스, 클라우드 인프라 및 기타 서비스와 상호작용할 수 있는 권한을 부여할 수 있다.
이 에이전트들은 비인간 아이덴티티(non-human identity)로 동작하며, 매번 사람이 직접 로그인하지 않고도 자격증명을 사용해 시스템과 인증한다. 사용이 증가함에 따라 조직은 어떤 에이전트가 어떤 접근 권한을 갖고 있는지, 누가 책임자인지, 언제 접근이 종료되어야 하는지를 추적해야 할 필요가 있다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






