http://127.0.0.1:port 에 도는 로컬 MCP server 가 무해해 보임. 안 무해. 명시적 방어 없으면 — 어떤 브라우저 탭의 웹페이지가 — 로컬 MCP server 와 대화해 데이터 빼갈 수 있어. DNS rebinding, 악의적 origin header, sloppy CORS 통해.
MCP spec 명시: localhost 에 bound 된 server 는 모든 request 의 Origin header 검증 MUST, allowlist 외 거 거절. Default allowlist 비어있음. 없으면 https://evil.example.com 페이지가 fetch('http://127.0.0.1:1234/mcp', {…}) 할 수 있고 — server 가 user install 한 모든 tool 충실히 제공.
DNS rebinding 이 더 정교한 공격. 공격자가 — DNS response 가 외부 IP (초기 페이지 로드용) 와 127.0.0.1 (낮은 TTL 후) 사이 깜빡이는 — 도메인 등록. 브라우저 cached origin 은 여전히 'evil.example.com' 인데 네트워크 호출은 user 의 로컬 server 에 도착. Host header 를 — allowlist (e.g. localhost 와 127.0.0.1 만) 에 — 검증하면 막힘; Origin 만 의존해선 안 막힘.
로컬 server 는 명시적으로 127.0.0.1 에 bind, 절대 0.0.0.0 X. 모든 request 에 Origin 과 Host 검증. CORS preflight 아닌 path 에 Origin 빠진 거 거절. 대략 6 줄 middleware 고 그 중 어느 것도 optional 아님.