← 최신 논문
🤖 AI

Exposed by Design: A Dynamic Security Assessment of Internet-Facing MCP Servers at Scale

이 논문은 Corvus 프레 lack워크 개발과 수백 개의 운영 인스턴스 분석을 통해 인증 누락 및 셸 실행 노출과 같은 광범위한 취약점을 밝혀냄으로써, 인터넷에 연결된 모델 컨텍스트 프로토콜(MCP) 서버에 대한 최초의 대규모 동적 보안 평가를 제시한다.

원저자: Nicolás Padilla

게시일 2026-08-04
📖 1 분 읽기☕ 가벼운 읽기

원저자: Nicolás Padilla

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

기술 요약: 설계부터 노출된 구조 (Exposed by Design)

문제 정의

2024년 11월 Anthropic이 출시한 Model Context Protocol (MCP)은 대규모 언어 모델(LLM)을 외부 도구 및 데이터 소스에 연결하는 에이전트형 AI 애플리케이션의 사실상 표준 통합 계층으로 빠르게 자리 잡았습니다. 채택률이 21,000개 이상의 공개적으로 접근 가능한 서버 인스턴스로 급증했음에도 불구하고, 이러한 배포 환경의 보안 태세는 여전히 규명되지 않은 상태로 남아 있습니다.

기존의 보안 연구는 이론적인 위협 모델링이나 레지스트리 항목 및 소스 코드의 정적 분석에 국한되어 있었습니다. 이러한 접근 방식은 실제 인터넷에 노출된 라이브 서버의 런타임 보안 태세를 포착하지 못합니다. 본 논문은 중요한 격차를 식별합니다. 즉, 자연어 도구 설명이 코드 실행과 구조적으로 결합된 MCP 프로토콜의 독특한 설계로 인해 발생하는, 배포된 MCP 서버 내 취약점의 유병률에 대한 실증적 데이터가 부족하다는 점입니다. 저자는 서비스를 MCP 엔드포인트로 노출하는 장벽이 매우 낮다는 점이 인증 부재, 셸 실행 능력 노출, 신속하고 일시적인 배포 주기와 같은 특성을 지닌, 기존 인터넷 서비스의 보안 기준선보다 낮은 수준의 배포 환경을 초래했다고 주장합니다.

방법론

본 연구는 수동적 발견(Passive Discovery)과 능동적 동적 행동 테스트(Active Dynamic Behavioral Testing)를 결합한 2단계 방법론을 채택합니다.

1. 수동적 발견 (Petrel)

저자는 MCP 생태계의 커버리지를 극대화하기 위해 11개의 이질적인 데이터 소스로부터 후보군을 수집하는 발견 파이프라인인 Petrel을 개발했습니다:

  • 인증서 투명성 로그 (Certificate Transparency Logs): MCP를 나타내는 하위 문자열을 포함하는 SSL/TLS 인증서를 위한 crt.sh.
  • 개발자 플랫폼: GitHub (토픽 검색, 파일명 매칭), HuggingFace Spaces, 그리고 npm/PyPI 레지스트리.
  • 특화된 레지스트리: Smithery, glama.ai, 그리고 pulsemcp.com.
  • 인터넷 스캐너: Censys, FOFA, 그리고 Shodan.

후보들은 실제 MCP 서버와 오탐(False Positive)을 구별하기 위해 능동적인 HTTP 핑거프린팅 과정을 거칩니다. Petrel은 현재의 Streamable HTTP 트랜스포트(JSON-RPC initialize 요청을 포함한 POST 방식)와 레거시 SSE 트랜스포트 모두를 프로브합니다. 유효한 프로토콜 핸드셰이크에 응답하는 서버만이 테스트 대상으로 확정됩니다.

2. 동적 보안 테스트 (Corvus)

저자는 동적 행동 평가를 위해 설계된 오픈 소스 프레임워크인 Corvus를 소개합니다. Corvus는 본 연구의 결과로부터 도출된 새로운 취약점 분류 체계인 **MCP 보안 Top 10 (MST-10)**을 다루는 34개의 테스트 모듈(정적 13개, 동적 21개)을 대상 서버에 적용합니다.

  • 실행 모델: Corvus는 JSON-RPC 요청을 파이프라이닝하기 위해 멀티플렉싱된 StdioTransport 리더 루프를 활용하여, 병렬 그룹 간의 고처리량 테스트를 가능하게 합니다.
  • 테스트 전략:
    • 도구 포이즈닝 (Tool Poisoning): 동적 변이(Rug-pull 공격)를 테스트하기 위해 섀도우 도구 정의를 주입합니다.
    • 인젝션 (Injection): SQL 인젝션, 커맨드 인젝션, 그리고 도구 출력을 통한 프롬프트 인젝션을 테스트하기 위해 정교하게 제작된 페이로드를 제출합니다.
    • SSRF 및 URI 조작: 경로 탐색(Path Traversal) 및 클라우드 메타데이터 서비스(예: AWS IMDS)에 대한 서버 측 요청 위조(SSRF)를 테스트하기 위해 리소스 URI와 페이지네이션 커서를 테스트합니다.
    • 스키마 우회 (Schema Bypass): 파서의 모호성을 식별하기 위해 JSON-RPC 메시지를 퍼징(Fuzzing)합니다.
  • 출력: 결과는 신뢰도(0–100)에 따라 점수가 매겨지며 SARIF 2.1.0 형식으로 출력됩니다. 높은 신뢰도의 발견 사항은 수동 트리아지(Triage)를 거치며, 90일간의 협력적 공개 엠바고(Embargo) 조건 하에 GitHub Security Advisories (GHSA)를 통해 보고됩니다.

주요 기여

본 논문은 다섯 가지 주요 기여를 합니다:

  1. 최초의 동적 행동 평가: 인터넷에 노출된 MCP 서버에 대한 최초의 대규모 동적 보안 감사로서, 640개의 고유한 프로덕션 배포를 확인하고 그 중 414개를 감사했습니다.
  2. Corvus 프레임워크: 모든 MST-10 카테고리에 걸쳐 34개의 테스트 모듈을 구현하고 Streamable HTTP 및 SSE 트랜스포트를 모두 지원하는 오픈 소스 도구를 출시했습니다.
  3. 다중 소스 발견 방법론: 단일 데이터 소스만으로는 MCP 팝퓰레이션을 충분히 포착할 수 없으며, 포괄적인 커버리지를 달성하기 위해 11개의 소스를 아우르는 파이프라인이 필요함을 입증했습니다.
  4. 배포 변동성(Churn)의 특성화: 한 번의 측정 실행 후 72시간 이-내에 41.6%의 서버가 사라지는 현상을 입증하였으며, 이는 안정적인 운영 보안보다는 일시적인 실험에 의해 주도되는 배포 모델임을 나타냅니다.
  5. 책임 있는 공개 파이프라인: SQL 인젝션, SSRF, 프롬프트 템플릿 인젝션을 포함하여 68개의 취약점을 식별하였으며, 작성 시점에 19개는 공개되었고 49개는 엠바고 상태였습니다.

결과

2026년 7월에 수행된 4번의 측정 실행을 통해 다음과 같은 결과를 얻었습니다:

  • 인증 결함: 동적 감사를 받은 서버의 91.8%(380/414)가 OAuth 인증을 제공하지 않습니다. 대부분은 인증이 없거나 정적이고 예측 가능한 베어러 토큰(Bearer Token)을 사용합니다.
  • 인증 없는 셸 실행: 확인된 서버 풀 내에서 687개의 도구 인스턴스가 액세스 제어 없이 셸 실행 능력(예: bash_execute, run_command)을 노출하여, 네트워크 상의 어떤 공격자라도 원격 코드 실행(RCE)이 가능하도록 허용합니다.
  • 취약점 유병률: 연구를 통해 68개의 보고 가능한 취약점이 식별되었습니다. 주요 발견 사항은 다음과 같습니다:
    • SQL 인젝션: 코퍼스 검색 도구에서의 응답 크기 차이를 통해 확인되었습니다.
    • SSRF: AWS 인스턴스 메타데이터 서비스를 대상으로 했을 때 타이밍 오라클(11.9초 지연 vs 0.3초 베이스라인)을 통해 확인되었습니다.
    • 프롬프트 템플릿 인젝션: AI 어시스턴트의 시스템 지침을 무력화하는 제어 시퀀스를 주입함으로써 확인되었습니다.
    • 경로 탐색 (Path Traversal): 페이지네이션 프리미티브에서의 커서 조작을 통해 달성되었습니다.
  • 생태계 변동성 (Churn): 한 번의 측정 실행에서 확인된 서버의 41.6%가 72시간 후에 접근 불가능해졌습니다. 이러한 변동성은 많은 서버가 안정적인 운영 보안이 아닌 CI/CD 파이프라인이나 개발자 실험의 일시적인 산물임을 시사하며, 장기적인 모니터링과 패치 검증을 어렵게 만듭니다.

의의 및 주장

본 논문은 MCP 생태계의 보안 태세에 대한 최초의 경험적 기준선을 제공한다고 주장합니다. 그 의의는 MCP 보안에 대한 이해를 이론적인 위협 모델링에서 관찰된 현실로 전환했다는 데 있습니다.

저자는 보안 위험이 우발적인 것이 아니라 구조적이라고 주장합니다. 프로토콜은 본래 OS 프로세스 격리가 보안을 제공하는 로컬 stdio 트랜스포트를 위해 설계되었습니다. 이후 필수적인 보안 기본값(예: 강제적인 OAuth) 없이 HTTP 트랜스포트가 추가되면서, 인증되지 않은 인터넷 노출형 서버가 기본적으로 생성되는 "최소 저항 경로"가 만들어졌습니다.

연구는 결론적으로 MCP 생태계가 현재 일반적인 인터넷 서비스의 최소 운영 보안 기준선 아래에서 작동하고 있다고 밝힙니다. 인증되지 않은 셸 실행, 인증 계층의 부재, 그리고 신속하고 일시적인 배포 주기의 결합은 취약점이 단순히 흔할 뿐만 아니라 쉽게 악용될 수 있는 공격 표면을 형성합니다. 저자는 본 연구가 MCP 보안이 즉각적인 주의를 요하는 활발하고 악용 가능한 공격 표면임을 입증하며, SDK 개발자, 플랫폼 제공업체 및 레지스트리 운영자가 보안 기본값을 강제하고 공개 메커니즘을 개선해야 한다고 강조합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →