기술 설명
OX Security 연구원들은 Model Context Protocol(MCP)의 STDIO 전송—AI 에이전트를 로컬 도구에 연결하는 기본 방법—이 수신하는 모든 운영 체제 명령을 살균 처리 없이 실행한다는 것을 발견했습니다. 구성과 명령 사이에 실행 경계가 없습니다. 악의적인 명령은 명령이 이미 실행된 후에야 오류를 반환합니다. OX Security는 생태계를 스캔하여 공개 IP에서 STDIO 전송이 활성화된 7,000개의 서버를 발견했으며, 총 취약한 인스턴스가 약 200,000개로 추정됩니다. 연구팀은 유료 고객이 있는 6개의 실시간 프로덕션 플랫폼에서 자의적 명령 실행을 확인했으며 LiteLLM, LangFlow, Flowise, Windsurf, Langchain-Chatchat, Bisheng, DocsGPT, GPT Researcher, Agent Zero, LettaAI 및 기타에서 높음 또는 위험 등급으로 평가된 10개 이상의 CVE를 생성했습니다.
공격 경로
식별된 4가지 악용 계열: (1) AI 프레임워크 웹 인터페이스를 통한 인증되지 않은 명령 주입(LangFlow 및 LiteLLM에 대해 시연됨); (2) OX가 Flowise 및 Upsonic와 같은 도구에서 인수 주입(npx -c)을 통해 명령 허용 목록 우회를 강화한 우회; (3) AI 코딩 IDE에서 악의적인 HTML이 로컬 MCP 구성 파일을 수정하는 클릭 없음 프롬프트 주입—Windsurf(CVE-2026-30615)는 사용자 상호작용 없이 필요했으며, Cursor, Claude Code 및 Gemini-CLI는 사용자 승인이 필요하지만 UI에서 실행 결과를 표시하지 않음; (4) MCP 레지스트리를 통한 악의적 패키지 배포. OX가 11개 레지스트리에 양성 개념 증명을 제출했고 9개가 보안 검토 없이 수락함. 불안전성은 코딩 버그가 아니라 Anthropic의 MCP 사양에서의 설계 기본값이 모든 공식 언어 SDK(Python, TypeScript, Java, Rust)로 전파됨.
영향받는 시스템
기본 STDIO 전송을 사용하는 모든 MCP 배포. 확인된 취약 제품 포함: LiteLLM(패치됨), LangFlow(부분 패치됨), Flowise(강화 우회됨), Windsurf(CVE-2026-30615 패치됨), Langchain-Chatchat, Bisheng, DocsGPT, GPT Researcher, Agent Zero, LettaAI, Upsonic, Cursor, Claude Code, Gemini-CLI, NextChat(ChatGPTNextWeb, CVE-2026-7644), 및 최소 7개 이상의 단일 작성자 GitHub MCP 서버. Anthropic은 이 동작이 의도적이라고 확인했으며 프로토콜 수정을 거부했으며, STDIO의 실행 모델을 입력 살균 처리를 개발자의 책임으로 하는 보안 기본값으로 특징지었습니다. OX Security는 200,000명의 개발자가 입력을 올바르게 살균 처리하기를 기대하는 것이 체계적인 문제라고 반박합니다. 중요한 격차: 모든 공급업체 패치는 자신의 제품을 수정하지만, 어떤 패치도 MCP 프로토콜의 STDIO 동작을 변경하지 않습니다. 오늘 LiteLLM에 패치를 적용하고 내일 새로운 MCP STDIO 서버를 구성하는 보안 이사는 동일한 보안되지 않은 기본값을 상속합니다.
완화 방안
즉각적: MCP STDIO를 커넥터가 아닌 권한 있는 실행 표면으로 취급합니다. 기본 거부 정책을 적용하고, 특정 명령을 허용 목록에 추가하고, 샌드박스 제어를 배포하고, 다운스트림 입력 검증이 대규모로 유지될 것으로 가정하지 마십시오. IDE 배포(Cursor, Claude Code, Gemini-CLI, Windsurf)의 경우: 공급업체가 프롬프트 주입-구성 수정 체인에 패치를 적용했는지 확인하고, 사용자 승인 전에 UI에서 구성 변경 사항이 실행 결과를 표시하는지 확인합니다. AI 프레임워크 배포(LiteLLM, LangFlow, Flowise 등)의 경우: 공급업체 패치를 즉시 적용하되, 패치가 프로토콜 설계가 아닌 제품별 버그를 수정한다는 점을 인식합니다. MCP 배포 감사 수행: 환경의 모든 STDIO 전송을 식별하고, 어떤 OS 수준 액세스 권한이 있는지 매핑하고, 최소 권한 및 네트워크 분할을 적용합니다. 장기: 실행 가능한 경우 SSE(서버 전송 이벤트) 전송으로의 마이그레이션을 고려하되, 이는 보편적으로 지원되지 않습니다. 개발자가 커뮤니티 서버를 설치하도록 허용하는 경우 MCP 레지스트리 제출을 모니터링합니다. 11개 중 9개 레지스트리가 보안 검토 없이 개념 증명을 수락했습니다.