공식 MCP 서버의 은밀한 계약 변경 사항(및 이를 포착하는 방법)
요약
최근 MCP 서버를 이용한 공급망 공격 사례가 보고되었습니다. Deadbugz는 호출 횟수를 트리거로 사용하여 SSH 키, AWS 자격 증명 등을 탈취하도록 에이전트의 메타데이터를 변경했습니다. GhostSplice와 ChainDrop은 지시 분할 및 설정 파일 오염을 통해 보안 검사를 우회하며 민감 정보를 유출하는 새로운 공격 기법을 보여주었습니다.
핵심 포인트
- 공격은 코드 변경보다 호출 횟수(Call Counter)에 의존할 수 있습니다.
- 지시를 여러 조각으로 분할하여 단일 메시지의 악의성을 회피합니다.
- `.claude/settings.json` 등 에이전트 설정 파일 자체가 공격 표면이 됩니다.
1. Deadbugz — 세 번째 호출을 기다리는 서버 (2026년 8월)
Pillar Security가 악성 MCP(Multi-Agent Coordination Platform) 서버("productivity-suite"라고 스스로 명명함)를 이용한 활성 캠페인을 기록했습니다. 이 서버는 74분 동안 열린 23개의 GitHub pull requests (8월 10일)를 통해 전파되었습니다. 이 서버는 텍스트 서식 지정 및 요약이라는 두 가지 무해한 도구를 제공하며 처음에는 완벽하게 작동합니다. 정확히 세 번의 도구 호출 후에, 에이전트에게 반환하는 메타데이터를 재작성합니다: 이제 설명은 SSH private keys, AWS credentials, shell history, 그리고 Kubernetes config를 찾도록 지시하고 — 이를 사용자로부터 숨기라고 명시합니다.
결정적인 세부 사항은 다음과 같습니다: 트리거는 코드 변경이 아니라 호출 카운터입니다. 새로운 것이 설치되지 않았습니다. 검토할 업데이트 차이(update diff)도 없습니다. PR들은 포착되었고 (19개 닫힘, 4개 리뷰 대기), 야생 상태에서 도난은 확인되지 않았지만 — 이 유형의 공격은 "설치 시 검토"가 보안 통제 수단이 아님을 보여주는 가장 깨끗한 증거입니다.
Primary: Pillar Security, "Deadbugz: Currently Active MCP Supply-Chain Campaign"
2. GhostSplice — 지시를 분할하여 거부를 극복하다 (2026년 8월)
ASSET Research Group (UMKC): "11개의 최첨단 모델, 하나의 악성 MCP 서버. 이들에게 자격 증명을 유출하라고 요청하면 거부합니다. 요청을 여러 개의 무해한 조각으로 분할하세요..." — GhostSplice는 데이터 절도 지시를 도구 설명과 나중에 나오는 도구 결과에 걸쳐 분할하여, 단일 메시지가 악의적으로 보이게 하지 않습니다. 11개 모델 테스트 평균 준수율이 42%에서 82%로 급증했으며, 에이전트들은 SSH 키, 비밀 정보(secrets), 그리고 소스 코드를 유출했습니다. 메시지별 검사(키워드 스캐닝, 출력 필터)는 기회가 없었습니다 — 페이로드가 존재하는 것은 오직 메시지 전반에 걸쳐입니다.
Primary: ASSET Research Group + Bishop Fox "Spliced Instructions..." (Aug 21)
3. ChainDrop — Claude Code 자체를 오염시키는 벌레 (2026년 8월)
자가 전파되는 npm 벌레(Microsoft의 분석은 400개 이상의 패키지를 다루었으며, 나중 집계에서는 860개 이상으로 증가)는 가장 악랄한 움직임을 위해 사용자의 설치조차 필요하지 않았습니다. 이 벌레는 레포지토리에 .claude/settings.json (세션 시작 후크) 및 .vscode/tasks.json (runOn: folderOpen)을 커밋했습니다. 따라서 프로젝트를 열거나 — 또는 Claude Code 세션을 시작하는 것만으로도 페이로드가 실행되었습니다. 비밀 정보들이 CI 러너에서 유출되었으며, 이 스틸러는 Ethereum 컨트랙트를 통해 C2(Command and Control) 통신을 하는 728 KB의 난독화된 번들 형태였습니다.
여기서 특히 중요한 점은 다음과 같습니다: 사용자의 에이전트 설정 자체가 이제 실행 가능한 공격 표면(executable attack surface)이며, 이는 어떤 도구 설명만큼이나 조용하게 변경될 수 있습니다.
주요 출처: Microsoft Security Blog (8월 4일) + WorkOS 분석 (8월 6일)
4. FakeGit — 에이전트가 추천하는 800개 이상의 가짜 "MCP 서버" 및 스킬 (2026년 7월)
Island의 연구에 따르면 7,600개의 악성 GitHub 레포지토리와 약 6,600개의 가짜 계정이 발견되었으며, 이 중 800개 이상이 AI 스킬 및 MCP 서버로 위장하고 있었습니다. 사용자들이 코딩 에이전트(Claude Code 포함)에게 추천을 요청했을 때, 해당 에이전트들은 악성 레포지토리 자체를 추천했습니다. 이 캠페인의 배포 자산은 14백만 개 이상의 다운로드를 기록했으며, 600개 이상의 목록이 제거되기 전에 공개 MCP 레지스트리(LobeHub, Glama, MCP.so, MCP Market)에 올라와 있었습니다. 이 사슬은 개발자 머신, 브라우저 자격 증명, 클라우드 토큰을 목표로 하는 정보 탈취 도구인 StealC에서 끝났습니다.
주요 출처: [The Hacker News,
- 다중 버전 서버의 **51.1%**가 광고하는 내용을 변경했습니다.
- 이 중 **40.6%**는 이를 은밀하게(silently) 수행했습니다.
- **4.2%**는 레지스트리 식별자는 유지한 채 원격 엔드포인트를 다른 호스트로 리디렉션했으며, 이는 '프로토콜이 설치된 클라이언트에게 노출하지 않는 변경 사항'입니다.
- 은밀한 드리프트(Silent drift)는 심각도 높은 취약점 발견 확률을 약 3배 높이며, 별점이나 설치 횟수는 안전성을 나타내는 미미한 신호입니다.
CVE 흐름은 다음과 같습니다: CVE-2026-81486 (경로 탐색, CISA 주목), CVE-2026-87911 (AWS Labs의 postgres MCP 서버에서 CVSS 9.6 OS 명령어 주입), 그리고 Atlassian MCP 경로 탐색 취약점, ArcadeDB의 MCP 내 평문 클러스터 토큰 노출, facebook-ads-mcp-server에서의 SSRF 등입니다. 이들은 모두 8월과 9월에 발생했습니다. 특히 9월에는 CVE-2026-20176이 등장했는데, 악성 서버가 **공식 MCP Python SDK (1.9.1-2.1.1)로부터 클라이언트 시크릿(client secret), 승인 코드(authorization code), PKCE 검증기(PKCE verifier)**를 넘겨주게 할 수 있었습니다 (즉, 계정 탈취). 이는 1.30.0/2.2.0에서 수정되었습니다. 또한 인터넷에 노출된 MCP 서버에 대한 7월 동적 스캔(arXiv:2608.00150) 결과, 91.8%가 OAuth를 사용하지 않았고, 687개 도구 인스턴스가 접근 제어 없이 셸 실행을 노출했으며, 확인된 서버의 41.6%는 사흘 안에 사라졌습니다.
주요 자료: [arXiv:2609.14119,
MCP에만 국한된 이야기가 아니었습니다. 이번 여름은 에이전트 주변의 모든 신뢰 경계(trust boundary)를 시험했습니다. Hugging Face 침입 사건 (7월): 탈출한 에이전트 시스템이 격리되기 전에 약 17,600건의 악성 행위를 수행하고 **136개의 프로덕션 자격 증명(production credentials)**을 가로챘습니다 (OpenAI 계정). SharedRoot (7월 23일): 신뢰할 수 없는 콘텐츠가 쓰기 가능한 호스트 마운트(writable host mount)를 통해 Claude Cowork의 로컬 VM에서 탈출하여 Mac에 있는 SSH 키와 클라우드 자격 증명을 읽을 수 있었으며, 수정되기 전에는 약 50만 macOS 사용자가 영향을 받을 수 있었습니다 -- Anthropic은 이 보고서를
npx rugsnare scan-- 승인한 정확한 계약(설명(description), 스키마(schema), 행동 주석(behavioral annotations))을.rugsnare/pins.json파일에 고정합니다. 커밋하세요.npx rugsnare diff-- 어디에서든 (CI 게이트, 출시 전 등) 재검사합니다. 사일런트한 변경 사항이 감지되면 1을 반환하며 종료됩니다. 모델의 판단이 아닌 결정론적입니다.rugsnare canary replay-- 업그레이드하기 전에 실제 기록된 도구 호출을 새 버전에 다시 재생(replay)하고 (기본적으로 읽기 전용), 행동이 변경되면 "업그레이드하지 마십시오(DO NOT UPGRADE)"를 반환합니다.rugsnare run-- 라이브 서버를 감싸 정책을 강제하며 (예:~/.ssh또는~/.aws/credentials클래스의 읽기 호출 차단), 세션 중간의 교체는 격리시킵니다.- 또한, 동일한 적대적 신호(adversarial signals)로
SKILL.md스킬 파일을 검사합니다 -- ChainDrop 클래스입니다.
실제 릴리스에서 측정된 작동 증거: 우리는 네 개의 공식 @modelcontextprotocol/server-* 서버의 모든 안정화 버전을 고정했습니다 -- 총 66개의 릴리스 쌍이었으며, 140건의 사일런트 계약 변경을 계산했습니다 (스키마 파괴 43건, 행동 힌트 플립 28건, 신규 항목 37개, 제거 24개; 깨끗한 쌍 43개). 이 중 하나도 변경 로그(changelog)에 발표된 것이 없었습니다. 단 하나의 명령으로 약 30분이 소요되며, 사용자의 장비에서 재현 가능합니다.
도구를 절대 설치하지 않더라도, 다음 사항들을 수행하십시오:
- 버전을 고정하세요 (
[email protected]처럼, 절대로@latest를 사용하지 마십시오) -- 그리고 버전 증가는 코드 검토(code review)로 간주하십시오. - 고정된 버전을 커밋하고 모든 업데이트 후에 재차 비교(re-diff)하십시오.
- MCP 설정과
.claude/settings.json을 실행 가능한 코드로 취급하십시오. - 쓰기/파괴적인 도구에 대해 자동 승인하지 마십시오.
출처 (Sources)
- Pillar Security -- Deadbugz: 현재 활성화된 MCP 공급망 캠페인 (2026년 8월 12일)
- ASSET Research Group -- GhostSplice (2026년 8월); Bishop Fox podcast (2026년 8월 21일)
- Microsoft Security Blog -- ChainDrop npm worm (2026년 8월 4일); WorkOS (2026년 8월 6일); CyberScoop의 광범위한 캠페인 보도 (860개 이상의 패키지)
- The Hacker News -- FakeGit 캠페인, 7,600개의 리포지토리 (2026년 7월 20일); Island -- AgentBaiting
- arXiv:2609.14119 -- 같은 이름, 다른 서버: MCP 생태계의 조용한 표류에 대한 보안 센서스 (2026년 9월 12일)
- arXiv:2608.00150 -- 설계상 노출됨: 인터넷에 공개된 MCP 서버 감사 (2026년 7월)
- Cycode -- MCP Python SDK OAuth 계정 탈취; The Hacker News 보도 (2026년 9월)
- CVE-2026-81486 (mcp-file-context-server, CISA 주간 보고서 8월 24일~31일) - CVE-2026-87911 (awslabs postgres MCP, CVSS 9.6) - CVE-2026-73498 / CVE-2026-67357 / CVE-2026-19956 (Adversa 9월 정리)
TNW -- Claude Cowork SharedRoot 샌드박스 탈출; Accomplish AI 기술 보고서 (2026년 7월 23일~26일)
10. Hugging Face -- 보안 사고 공개; OpenAI 계정 (2026년 7월)
11. Sysdig -- JadePuffer 에이전트형 랜섬웨어 (2026년 7월)
12. RugSnare -- github.com/Paraphern/rugsnare - npm - rugsnare.com
참고 사항 / 한계: 저는 2026년 7월부터 9월까지의 공개적이고 문서화된 사고만 계산했습니다. 이 기간 동안 침묵하는 MCP 업데이트로 인해 최종 사용자 지갑이나 계정이 고갈되었다는 공개 보고는 없으며, 문서화된 피해는 연구 및 공급업체 조사에 의해 드러난 자격 증명 도용, 코드 실행 및 데이터 유출입니다. 헤드라인을 과장하기보다는 정확하게 말하는 편이 낫겠습니다.
공개: 저는 RugSnare(오픈 소스, Apache-2.0, 제로 의존성 -- 위의 고정/diff/재생 도구)를 유지합니다. 여기에 있는 모든 것은 실행 가능하고 재현 가능하며, 어떤 사례에 대해서든 질문에 답변할 준비가 되어 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기