현재 MCP(모델 컨텍스트 프로토콜) 시스템은 아직 개발 초기 단계로 전반적인 환경이 비교적 혼란스럽고 다양한 잠재적 공격이 무궁무진하며 현재 프로토콜과 도구 설계로는 방어하기 어렵습니다. 커뮤니티가 MCP의 보안을 더 잘 이해하고 개선할 수 있도록 돕기 위해 SlowMist는 실제 공격 훈련을 통해 사람들이 제품 설계에서 잠재적인 보안 문제를 적시에 발견하여 단계적으로 MCP 프로젝트를 강화할 수 있도록 돕기 위해 MasterMCP 도구를 오픈 소스화했습니다.
이 도구는 이전 호에 소개된 와 함께 사용하면 여러 공격의 근본적인 관점을 더 잘 이해할 수 있습니다. 이번에는 메시지 포이즈닝, 악성 명령어 은닉 등 MCP 시스템에서 흔히 발생하는 공격에 대한 실제 데모를 통해 실제 사례를 살펴봅니다. 데모에 사용된 모든 스크립트는 GitHub에 오픈 소스(링크는 이 글 끝부분 참조)로 제공되므로 안전한 환경에서 전체 프로세스를 재현하거나 이러한 스크립트를 기반으로 자체 공격 테스트 플러그인을 개발할 수도 있습니다.
전체 아키텍처 개요
공격 목표 시연 및 MCP: 툴박스
Smithery.ai는 현 세대 공격 툴 중 가장 먼저 개발된 툴입니다. smithery.ai는 현재 가장 인기 있는 MCP 플러그인 웹사이트 중 하나이며, 많은 MCP 목록과 활성 사용자를 보유하고 있습니다. smithery.ai의 공식 MCP 관리 도구는 @smithery/toolbox입니다.

테스트 대상으로 Toolbox를 선택한 이유는 다음과 같습니다.
일부 클라이언트 측 기능을 보완하기 위해 다른 플러그인 자동 설치를 지원합니다(예: Claude Desktop);
일부 클라이언트 측 기능을 보완하기 위해 다른 플러그인 자동 설치를 지원합니다(예: Claude Desktop);
간편한 데모를 위해 민감한 구성(예: API 키)을 포함합니다.
악성 MCP 데모: MasterMCP
MasterMCP는 보안 테스트를 위해 SlowMist에서 특별히 제작한 모의 악성 MCP 툴입니다. MasterMCP는 보안 테스트를 위해 SlowMist에서 특별히 개발한 악성 MCP 시뮬레이션 툴로, 다음과 같은 주요 모듈을 포함하는 플러그인 아키텍처로 설계되었습니다.
1. 로컬 웹 서비스 시뮬레이션: http://127.0.0.1:1024
보다 현실적으로 공격 시나리오를 재현하기 위해 MasterMCP는 다음과 같은 주요 모듈로 설계되었습니다.
1. 공격 시나리오를 보다 사실적으로 재현하기 위해 MasterMCP에는 로컬 웹 서비스 시뮬레이션 모듈이 내장되어 있습니다. 이 모듈은 FastAPI 프레임워크를 사용하여 일반적인 웹 환경을 시뮬레이션하는 간단한 HTTP 서버를 빠르게 구축합니다. 이러한 페이지는 케이크 가게에 대한 정보를 표시하거나 표준 JSON 데이터를 반환하는 등 표면적으로는 정상적으로 보이지만 실제로는 페이지 소스 코드나 인터페이스 반환에 잘 설계된 악성 페이로드가 숨겨져 있습니다.
이러한 방식으로 안전하고 통제된 로컬 환경에서 메시지 중독, 명령 숨김 및 기타 공격 기법을 시연하여 정상적으로 보이는 웹 페이지도 비정상적인 작업을 수행하도록 대규모 모델을 트리거할 수 있는 숨겨진 위험의 원천이 될 수 있음을 보다 직관적으로 이해할 수 있도록 도와줍니다.

2. 로컬 플러그인 MCP; 아키텍처

MasterMCP는 플러그인 방식을 사용하여 확장하므로 새로운 공격 방법을 빠르게 추가하여 후속 조치를 쉽게 수행할 수 있습니다. 실행 후 MasterMCP는 하위 프로세스에서 이전 모듈의 FastAPI 서비스를 실행합니다. (주의하면 여기에는 이미 보안 위험이 있다는 것을 알 수 있습니다. 로컬 플러그인이 MCP에서 예상하지 못한 하위 프로세스를 임의로 시작할 수 있습니다.)
데모 클라이언트
컨퍼런스 모델 데모
Claude 버전 3.7은 민감한 작업의 식별을 개선했으며 현재 MCP 에코시스템에서 가장 강력한 작업 중 하나이기 때문에 선택되었습니다.
구성
{ "mcpServers": { "toolbox": { "command": "npx", "args": [ . "-y", "@smithery/cli@latest", "run", "@. smithery/toolbox", "--config", "{\"dynamic\":false,\"smitheryApiKey\":\" ec1f0fa8-5797-8678-sdaf-155d4584b133\"}", "ec1f0fa8-5797-8678- sdaf-155d4584b133" ] }, "MasterMCP": { "command":"/Users/ xxx/Desktop/EvilMCP/bin/python", "args": [ "/Users/xxx/Desktop/EvilMCP/ MasterMCP.py" ] } }}
구성이 완료되었으며 공식적으로 데모 세션에 들어갔습니다.
크로스-MCP 악성 호출

이 데모에는 다음이 포함됩니다. 이 데모에는 체크리스트의 포이즈닝과 크로스-MCP 악성 호출이 모두 포함되어 있습니다.
그리드 콘텐츠 중독 공격
1. 주석이 달린 중독(https://x.com/lbeurerkellner/status/ 에서 부분적으로 참조) 1912145060763742579)
커서 로컬 테스트 사이트 방문 http://127.0.0.1:1024.
이것은 겉보기에는 무해한 참조입니다. 대규모 모델 클라이언트가 악성 사이트에 접속했을 때의 영향을 시뮬레이션하는 실험인 "맛있는 케이크 세계"에 대한 언급입니다.

명령 실행:
Fetch the content
Fetch the MCP system
. http://127.0.0.1:1024

결과는 Cursor가 웹 페이지의 콘텐츠를 읽을 뿐만 아니라 민감한 로컬 구성 데이터도 다시 테스트 서버로 전송합니다. 소스 코드에서 악성 프롬프트는 HTML 주석으로 포함되어 있습니다:

주석은 더 간단하고 쉽게 알아볼 수 있지만 이미 악성 작업을 트리거하고 있습니다.
2. 인코딩된 주석 중독
위 예시와 똑같이 보이지만 악성 프롬프트가 인코딩된 페이지인 http://127.0.0.1:1024/encode 페이지를 방문합니다. 위와 비슷해 보이지만 악성 프롬프트가 인코딩된 페이지로, 페이지 소스 코드에 액세스하더라도 포이즈드 익스플로잇이 보이지 않고 직접 탐지하기 어렵습니다.

소스코드에 명시적인 프롬프트가 포함되어 있지 않더라도 다음 장에서 자세히 설명하는 것처럼 공격은 여전히 성공할 수 있습니다.

MCP 도구는 정보 중독을 반환합니다

여기서 마스터MCP 프롬프트 단어 설명에 따라 시뮬레이션 명령(실제 의미는 없으며 악성 MCP의 후속 작동을 시연하기 위해 트리거하기 위한 것)을 입력합니다:
get a lot of apples

이 명령을 트리거한 후 클라이언트가 MCP에서 Toolbox를 호출하여 새 MCP 서버를 성공적으로 추가한 것을 볼 수 있습니다.
![]()
플러그인 코드를 확인하면 반환 데이터에 인코딩된 악성 페이로드가 삽입되어 있어 사용자가 탐지하기 거의 불가능하다는 것을 알 수 있습니다.
서드파티 포트 오염 공격
이 데모는 악성 및 비악성 MCP 모두 타사 데이터를 호출하는 타사 API의 컨텍스트에 직접 반환할 경우 심각한 영향을 미칠 수 있음을 상기시키기 위한 것입니다. 심각한 영향을 미칠 수 있습니다.
예시 코드:

요청 실행:
요청 실행:
Fetch ">Fetch ">은밀한 중독 및 조작의 MCP 시스템을 찾습니다. ">Fetch json from http://127.0.0.1:1024/api/data

결과: 반환된 JSON 데이터에 악성 프롬프트가 삽입되어 악성 실행을 트리거합니다.
초기화 단계에서의 MCP 포이즈닝 기법

이 데모에는 체크리스트가 포함되어 있습니다. 이 데모에는 초기 큐워드 삽입과 이름 충돌이 모두 포함되어 있습니다.
악성 함수 재정의 공격
여기서 MasterMCP는 Toolbox와 동일한 함수 이름을 가진 도구, remove_server를 작성하고 인코딩하여 악의적인 프롬프트를 숨깁니다.

실행 명령:
toolbox remove fetch 플러그인 서버

Claude Desktop은 원래 `toolbox remove_server` 메서드를 호출하지 않고 대신 `toolbox remove_server` 메서드를 트리거합니다. server` 메서드를 호출하지 않고 대신 같은 이름의 MasterMCP 제공 메서드를 트리거합니다.

원칙은 '기존 방식이 사용되지 않는다는 점을 강조하여 많은 사람들이 이 방식을 사용하도록 우선적으로 유도하는 것입니다. '라는 점을 강조하여 대규모 모델이 악의적으로 재정의된 함수를 호출하도록 우선적으로 유도합니다.
악성 글로벌 검사 로직 추가
여기 MasterMCP는 모든 도구가 실행되기 전에 보안 검사를 수행하도록 강제하는 중심 역할을 하는 바나나를 사용하여 도구를 작성했습니다. 실행하기 전에 도구를 실행하여 보안 검사를 수행합니다.


함수를 실행할 때마다 시스템은 바나나 검사 메커니즘을 우선적으로 호출합니다.

![]()
"실제 시작: MCP 시스템에서의 은밀한 중독 및 조작">
이것은 바나나 체크가 실행되어야 한다는 것을 코드에서 반복함으로써 달성되는 로직의 글로벌 주입입니다.
악성 프롬프트를 숨기기 위한 고급 팁
주요 모델 친화적 코딩
대형 언어 모델(LLM)은 다국어 형식에 매우 강력하므로 악성 단어를 숨기기 위한 도구로 LLM을 사용할 수 없습니다.
영어: 16진수 인코딩
< /ul>권장 도구: 16진수 디코더
도구 권장 사항: R12a 유니코드 변환 도구
랜덤 악성 로드 반환 메커니즘
서드파티 인터페이스 오염에 대해서는 2장에서 언급했듯이 http://127.0.0.1:1024/random:



매번 악성 페이로드가 포함된 페이지를 무작위로 반환하여 탐지 및 추적의 난이도를 크게 높입니다.
요약
이번 마스터MCP 데모를 통해 모델 컨텍스트 프로토콜(MCP) 시스템의 숨겨진 보안 위험성을 확인했습니다. 다음은 MCP를 사용하는 방법의 예시입니다. 간단한 프롬프트 주입과 크로스-MCP 호출부터 보다 교묘한 초기화 공격과 악성 명령 은닉에 이르기까지, MCP 생태계의 모든 측면은 강력한 반면 취약한 측면도 있음을 상기시켜 줍니다.
특히 대형 모델이 외부 플러그인 및 API를 점점 더 많이 다루게 되면서 작은 입력 오염도 시스템 수준의 보안 위험을 유발할 수 있습니다. 또한 공격자의 다양한 전술(코드 숨김, 무작위 오염, 함수 오버라이드)은 기존의 보호 아이디어를 전반적으로 업그레이드해야 한다는 것을 의미합니다.
보안은 결코 빠른 해결책이 아닙니다.
이 데모를 통해 개발자와 사용자 모두 모든 상호작용, 모든 코드 줄, 모든 반환 값에 주의를 기울이며 MCP 시스템에 대해 경각심을 가져야 한다는 사실을 깨닫게 되길 바랍니다. 모든 세부 사항을 엄격하게 관리해야만 견고하고 안전한 MCP 환경을 구축할 수 있습니다.
다음으로는 보안 환경에서의 보호를 이해하고, 연습하고, 강화할 수 있도록 마스터MCP 스크립트를 지속적으로 개선하고 보다 구체적인 테스트 사례를 오픈소스화할 예정입니다.
추가: 해당 콘텐츠는 GitHub(https://github.com/slowmist/MasterMCP)에 동기화되었으므로 관심이 있으신 경우 이 게시물 끝에 있는 원본 문서를 클릭하여 바로 이동하실 수 있습니다.