Skip to main content
Glama
ibrahimsaleem

MCP Security Lab

MCP Security Lab

실행 가능한 작은 실제 Model Context Protocol 설정으로, 일곱 가지 의도적인 취약점과 그 수정 사항을 포함하여 각 위험이 실제로 작동하는 모습을 문서로 읽는 대신 직접 확인할 수 있습니다. 현재 공식 MCP 사양(2026-07-28)과 보안 모범 사례 문서, 그리고 OWASP MCP Top 10을 기반으로 구축되었습니다.

모든 것은 로컬에서 실행됩니다. 여기 있는 어떤 것도 실제로 중요한 시스템과 통신하지 않습니다.

문서

아래의 모든 내용은 GitHub에서 바로 읽을 수 있습니다 — 서버가 필요 없습니다 — 그리고 각 문서는 다음 문서로 연결됩니다:

  • docs/owasp-mcp-top10.md — OWASP MCP Top 10의 모든 위험 범주에 대한 필드 참조, MCP 서버가 실제로 무엇인지, 종단 간 요청 경로와 그 세 가지 명명된 위험 영역, 그리고 각 범주에서 해당 취약점을 시연하는 익스플로잇 스크립트(또는 가장 가까운 것)로의 링크.

  • docs/mcp-stateless-rewrite.md — 2026-07-28 사양의 무상태 재작성에 대한 전후 아키텍처 다이어그램, 이로 인해 이제 더 중요해진 OWASP 범주의 우선순위 목록, 모든 사양/로드맵 변경을 특정 OWASP 범주에 매핑하는 표, 그리고 구체적인 실패 시나리오가 있는 다섯 가지 새로운 취약점 패턴.

동일한 두 페이지는 대시보드 내에서 라이브 대화형 HTML로도 존재합니다(guidelines.htmlrewrite.html, 아래 대시보드 참조) — 내용은 동일하며, 대시보드 버전은 소스 파일 대신 라이브 익스플로잇 실행기에 직접 연결됩니다.

Related MCP server: Damn Vulnerable Model Context Protocol (DVMCP)

다루는 내용

파일 도구

취약점

출처

run_diagnostics

명령 주입

OWASP MCP05

search_docs / get_secret_config

도구(설명) 중독

OWASP MCP03

get_cart

상태 핸들 하이재킹

MCP 보안 모범 사례

proxy_fetch_data

토큰 전달 / 혼동된 대리자

MCP 보안 모범 사례

read_user_file

불충분한 인증 + 감사 추적 없음

OWASP MCP07 / MCP08

read_calendar_events

범위 확장을 통한 권한 상승

OWASP MCP02

launch_from_config

클라이언트 실행 주입 (공급망 RCE)

OWASP MCP04 · 2026 연구

servers/vulnerable_server.py에는 일곱 가지 모두가 의도적으로 손상된 상태로 있습니다. servers/fixed_server.py에는 동일한 일곱 가지 도구가 패치된 상태로 있습니다 — 동일한 익스플로잇을 두 서버에 실행하고 결과가 뒤집히는 것을 확인하세요.

모든 OWASP MCP Top 10 범주는 이제 대시보드의 가이드라인 페이지에서 데모(또는 가장 가까운 실제 데모)로 연결됩니다 — MCP09(섀도우 MCP 서버)를 포함하여, 이는 단일 도구 호출 버그가 아닌 거버넌스 공백이므로 전용 익스플로잇 스크립트 대신 랩 자체로 설명됩니다.

최신 상태 유지

MCP는 빠르게 변화합니다 — 2026-07-28 사양 릴리스는 프로토콜의 가장 큰 재작성이었으며(완전히 무상태로 전환됨), 다음 릴리스를 다루는 새로운 로드맵이 불과 며칠 전인 2026-08-22에 게시되었습니다. 이 랩이 구축된 이후 변경된 사항과 그것이 위험 그림을 어떻게 바꾸는지 추적하는 두 곳이 있습니다:

  • docs/owasp-mcp-top10.md — "변경된 사항" 섹션, 또는 라이브 버전 http://127.0.0.1:8000/guidelines.html#2026-updates.

  • docs/mcp-stateless-rewrite.md — 전체 분석, 어떤 OWASP 범주가 이제 더 중요해졌는지와 그 이유를 포함, 또는 라이브 버전 http://127.0.0.1:8000/rewrite.html.

설정

python -m venv .venv
source .venv/bin/activate         # Windows: .venv\Scripts\activate
pip install -r requirements.txt

mcp SDK v1.26.0에 대해 검증됨 — 서버는 mcp.server.fastmcp에서 FastMCP를 가져옵니다(일부 튜토리얼은 mcp.server에서 직접 가져오거나, 이 SDK 라인에 존재하지 않는 mcp.server.mcpserver 모듈의 MCPServer 클래스를 참조하지만, API는 동일합니다). 설치된 버전이 다르면 pip show mcp를 실행하고 dir(mcp.server)에서 올바른 클래스 이름을 확인하세요 — 나머지(.tool() 데코레이터, .run(transport="stdio"))는 변경되지 않았습니다.

명령 주입 익스플로잇은 실제 ping 바이너리가 없어도 작동합니다 — 핵심은 셸 메타문자(;)가 해석된다는 것을 증명하는 것이며, "PWNED" 마커 파일이 이를 확인합니다.

사용하려는 키를 환경 변수로 설정하세요 — 절대 커밋하거나 채팅에 붙여넣을 수 있는 파일에 실제 키를 넣지 마세요:

export OPENAI_API_KEY="sk-..."
# and/or
export GEMINI_API_KEY="AI..."

익스플로잇 실행

일곱 가지 중 여섯 가지는 LLM이 전혀 필요 없습니다 — 결함이 모델 동작이 아닌 서버에 있음을 증명하기 위해 MCP 서버를 직접 호출합니다:

# Command injection
python exploits/exploit_cmd_injection.py servers/vulnerable_server.py
python exploits/exploit_cmd_injection.py servers/fixed_server.py

# State handle hijacking (guessing another user's cart ID)
python exploits/exploit_state_hijack.py servers/vulnerable_server.py
python exploits/exploit_state_hijack.py servers/fixed_server.py

# Token passthrough / confused deputy
python exploits/exploit_token_passthrough.py servers/vulnerable_server.py
python exploits/exploit_token_passthrough.py servers/fixed_server.py

# Insufficient auth + no audit trail (reading another user's file by ID)
python exploits/exploit_auth_audit.py servers/vulnerable_server.py
python exploits/exploit_auth_audit.py servers/fixed_server.py

# Privilege escalation via scope creep (redirecting a read-only tool's token)
python exploits/exploit_scope_creep.py servers/vulnerable_server.py
python exploits/exploit_scope_creep.py servers/fixed_server.py

# Client launch injection / supply chain RCE (untrusted config picks command/args)
python exploits/exploit_launch_injection.py servers/vulnerable_server.py
python exploits/exploit_launch_injection.py servers/fixed_server.py

도구 중독은 실제 모델이 필요합니다. 취약점은 모델이 도구 자체 설명의 숨겨진 지침을 따르는지 여부이기 때문입니다:

python exploits/exploit_tool_poisoning.py servers/vulnerable_server.py openai
python exploits/exploit_tool_poisoning.py servers/vulnerable_server.py gemini
python exploits/exploit_tool_poisoning.py servers/fixed_server.py openai

대시보드

로컬 웹 대시보드는 7가지 취약점을 카드로 표시하고, 각각에 대해 취약한 버전과 수정된 버전의 코드 차이를 볼 수 있으며, 버튼을 클릭하여 실제 익스플로잇 스크립트를 두 서버 중 하나에 실행할 수 있습니다 — 출력은 브라우저의 라이브 터미널 패널로 스트리밍되고 VULNERABLE/SAFE 판정으로 끝납니다.

pip install -r requirements.txt -r ui/requirements.txt
uvicorn ui.server:app --reload --port 8000

그런 다음 http://127.0.0.1:8000을 엽니다. 도구 중독 카드를 실행하려면 uvicorn을 시작하는 터미널에서 OPENAI_API_KEY / GEMINI_API_KEY를 설정하세요 — 대시보드는 자체적으로 키를 요청하지 않으며, 실행 중인 머신에 이미 설정된 환경 변수만 읽습니다.

직접 대화해 보기

agent.py는 범용 MCP 클라이언트 + 에이전트 루프입니다 — 두 서버 중 하나와 두 공급자 중 하나를 지정하고 대화형으로 채팅할 수 있습니다:

python agent.py servers/vulnerable_server.py openai
python agent.py servers/fixed_server.py gemini

문서 검색, 장바구니 확인, 호스트 진단 실행 등을 요청해 보고, [llm -> tool] / [tool -> llm] 줄을 관찰하여 무엇을 호출하기로 결정했는지와 무엇이 반환되었는지 정확히 확인하세요.

여기서 완전히 다루지 않는 것

현재 MCP 보안 문서의 두 가지 사항은 실제이지만 작은 로컬 랩에서 데모하기 어렵습니다. 구축하지 않더라도 읽어볼 가치가 있습니다:

  • OAuth 검색을 통한 SSRF — 악성 서버가 클라이언트의 메타데이터 가져오기를 169.254.169.254(클라우드 인스턴스 메타데이터)로 지정합니다. 실제 OAuth 흐름과 공격할 네트워크가 필요합니다.

  • 혼동 / localhost 리디렉션 URI 가장 — 의미 있게 시연하려면 실제 다중 인증 서버 설정이 필요합니다. 2026-07-28 사양은 이에 대한 구체적인 완화 조치를 추가했습니다(클라이언트는 이제 인증 코드를 교환하기 전에 iss 매개변수, RFC 9207을 검증해야 함) — 가이드라인 페이지의 "2026 업데이트" 섹션을 참조하세요.

둘 다 https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices에서 자세히 설명되어 있습니다.

확장하기

  • 동일한 패턴으로 다른 취약한 도구와 그 익스플로잇 스크립트를 추가하세요: 결함을 주석으로 달고, 익스플로잇을 작성하고, 수정 사항을 작성하세요.

  • 설치한 실제 타사 MCP 서버(허가를 받고 소유한 인프라에서)에 동일한 익스플로잇을 실행해 보세요 — 상태 하이재킹 및 인증 없음 패턴은 빠르게 구축된 서버에서 끊임없이 나타납니다.

  • fixed_server.pyAUDIT_LOG를 실제 로그 싱크에 연결하고 .denied 이벤트에 대한 작은 탐지 규칙을 구축하세요 — 이는 기본적으로 MCP08(감사/원격 측정)을 구체화한 것입니다.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

  • MEOK MCP Hardening MCP — automated security red-team for any MCP server. Maps OWASP LLM Top 10

  • Scans MCP servers for tool poisoning, prompt injection and supply chain risks.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ibrahimsaleem/mcp-security-lab'

If you have feedback or need assistance with the MCP directory API, please join our Discord server