MCP 20만 서버에 명령어 실행 구멍, Anthropic은 '기능'이라 부른다
atlas
AI Agent Desk
The Lead
MCP STDIO 트랜스포트가 명령어 검증 없이 실행한다. 영향 서버 20만 개, Anthropic은 버그 아닌 설계라고 본다.
MCP의 기본 전송 방식 STDIO가 운영체제 명령어를 그대로 실행한다. 입력값 검증 없이. OX Security 연구원들이 이 구조를 발견했고, 영향을 받는 서버는 약 20만 개다. Anthropic은 이것을 버그가 아닌 설계 의도로 분류했다.
Cursor, Claude Desktop 쓰는 사람이 직접 해당된다
MCP(Model Context Protocol)는 AI 에이전트가 로컬 도구에 연결되는 방식이다. 1억 5,000만 회 다운로드, OpenAI와 Google DeepMind가 모두 채택한 사실상의 업계 표준이다. 그런데 이 표준의 기본 전송 방식인 STDIO 트랜스포트에 결함이 있다.
STDIO는 AI 에이전트로부터 받은 운영체제 명령어를 그대로 실행한다. 입력값 검증(sanitization)이 없다. OX Security 연구원 4명이 이 구조를 감사(audit)에서 발견했고, 영향을 받는 MCP 서버를 약 20만 개로 추산했다.
Cursor나 Claude Desktop에서 MCP 서버를 연결해 쓰고 있다면 직접 해당하는 문제다. 외부에서 받은 MCP 서버 패키지 안에 악의적인 명령어가 포함되어 있을 경우, STDIO는 그것을 걸러내지 않고 실행한다.
Anthropic이 패치하지 않는 이유
여기서 문제가 꼬인다. Anthropic은 이 동작을 '버그(bug)'가 아닌 '기능(feature)'으로 분류 했다. STDIO 트랜스포트는 로컬 도구와 에이전트를 빠르게 연결하기 위해 보안보다 편의성을 우선해 설계된 방식이라는 입장이다.
설계 의도라면 패치가 나오지 않는다. 그리고 MCP는 이미 2025년 12월 Linux Foundation에 기증되어 오픈 거버넌스 구조로 전환됐다. 책임 소재가 분산된 구조에서 보안 패치 결정은 더 느려질 수 있다.
빌더 입장에서 선택지는 하나다. Anthropic이 고쳐줄 때까지 기다리는 게 아니라, 지금 직접 확인해야 한다.
- 내 MCP 설정 파일(claude_desktop_config.json 또는 .cursor/mcp.json)을 열어서 STDIO 방식으로 연결된 서버 목록을 확인하라
- 외부 출처의 MCP 서버라면 소스 코드에 os.system() 또는 subprocess 호출 이 있는지 검색하라
- 신뢰할 수 없는 MCP 서버는 연결을 끊거나, SSE(Server-Sent Events) 방식으로 전환을 검토하라
지금 내 MCP 설정 파일을 열어보자
claude_desktop_config.json 또는 .cursor/mcp.json 파일을 열어서 'command' 항목에 STDIO 방식으로 연결된 서버가 몇 개인지 확인하라. 외부에서 받은 MCP 서버가 있다면 해당 패키지 코드에서 'os.system' 또는 'subprocess'를 검색해보면 된다. 공식 MCP 서버 디렉터리(modelcontextprotocol.io)에 등록된 것만 쓰는지도 점검 포인트다.