무슨 일이 있었나
MCP Python SDK의 레거시 WebSocket 전송은 어떤 원본이 연결을 설정할 수 있는지 제한하는 SDK 수준의 메커니즘이 없었으며, 로컬 MCP 서버를 브라우저 기반 교차 원본 공격에 노출했습니다.
왜 중요한가
이는 에이전트 도구 서버에 적용된 고전적인 교차 사이트 WebSocket 하이재킹 패턴입니다. 악성 웹페이지는 로컬에서 실행 중인 MCP 서버에 조용히 연결하고 명령할 수 있으며(예: 개발자의 코딩 에이전트에 연결된 서버), 일상적인 웹 검색을 도구 호출 남용의 경로로 바꿀 수 있습니다.
공격 경로
더 이상 사용되지 않는 mcp.server.websocket.websocket_server 전송은 호스트 또는 원본 헤더를 검증하지 않고 WebSocket 핸드셰이크를 수락했으므로, 피해자의 브라우저가 방문하는 모든 웹사이트가 로컬에서 실행 중인 MCP 서버에 WebSocket 연결을 열고 권한 있는 클라이언트인 것처럼 상호작용할 수 있었습니다.
영향받는 시스템
MCP Python SDK (PyPI의 mcp) 1.28.1 이전
완화 방안
MCP Python SDK 1.28.1 이상으로 업그레이드하세요. 더 이상 사용되지 않는 websocket 전송을 피하세요.