1. 개요

- 모델 컨텍스트 프로토콜(Model Context Protocol, MCP)에서 Tool Poisoning Attack을 가능하게 하는 취약점 발견 [1]

- AI 모델의 민감 데이터 유출 및 무단 행위로 이어질 수 있는 취약점

2. 주요내용

2.1 모델 컨텍스트 프로토콜(Model Context Protocol, MCP)

- AI 모델이 외부 데이터나 도구와 연결될 때 사용하는 표준화된 통신 방식 [2][3][4]

> AI 모델이 특정 작업을 수행하기 위해 필요한 데이터를 외부에서 받아오거나, 외부 도구를 활용할 수 있도록 해주는 역할

특징 설명
개방형 표준
(Open Standard)
오픈소스로 공개되어 있어 누구나 자유롭게 사용하고 개선할 수 있음
> 앤트로픽이 개발하였으나, 어떤 AI 시스템에서도 사용할 수 있음
양방향 연결
(Two-way Connection)
- AI 모델과 데이터 소스 간의 양방향 통신 지원
> MCP에서는 AI 모델과 데이터 소스가 지속적으로 연결된 상태에서 서로 정보를 주고받을 수 있음
※ 기존 API 호출 방식에서는 AI가 데이터를 요청하면 서버가 한 번 응답하고 끝나는 방식
범용성과 표준화
(Universality and Standardization)
- 다양한 데이터 소스와 도구를 하나의 표준 프로토콜로 연결할 수 있게 해줌
> 개발자는 각 데이터 소스마다 별도의 커넥터를 유지할 필요 없이 단일 프로토콜을 통해 연결 가능
보안 및 신뢰성
(Security and Reliability)
- AI 모델과 데이터 소스 간의 안전하고 신뢰할 수 있는 연결을 제공
> 개인 정보 보호와 데이터 무결성을 유지할 수 있음

[사진 1] MCP 구성

구성요소 설명
MCP 호스트 MCP를 통해 데이터에 액세스하려는 Claude 데스크톱, IDE 또는 AI 도구와 같은 프로그램
MCP 클라이언트 서버와 1:1 연결을 유지하는 프로토콜 클라이언트
MCP 서버 표준화된 모델 컨텍스트 프로토콜을 통해 각각 특정 기능을 노출하는 경량 프로그램
로컬 데이터 소스 MCP 서버가 안전하게 액세스할 수 있는 컴퓨터의 파일, 데이터베이스 및 서비스
원격 서비스 MCP 서버가 연결할 수 있는 외부 시스템(예: API 활용)

 

2.2 Tool Poisoning Attack

- MCP 서버에서 제공하는 도구 설명에 악성 지시사항을 삽입

> 사용자는 정상으로 위장한 악성 MCP 도구를 실행

> AI 모델은 도구 설명의 지시사항을 그대로 실행하여 악성 행위를 수행

> Ex. 민감한 파일에 액세스하여 데이터 추출 및 공격자에게 전송하도록 지시할 수 있음

[사진 2] 공격 과정 요약

2.2.1 Direct Poisoning

- 도구 설명에 악성 명령을 포함하여 사용자가 MCP를 사용할 때 해당 명령이 실행되는 방식

> [사진 3]의 add()는 다음과 같은 도구 설명을 포함하며, AI 모델은 이를 수행하여 결과를 반환

① 민감한 구성 파일을 읽음 (~/.cursor/mcp.json)
② SSH 개인 키에 액세스 (~/.ssh/id_rsa)
③ 해당 데이터를 sidenote로 표시해 숨겨진 방식으로 전송
④ 사용자에게 두 숫자를 더하는 수학적 원리를 자세히 설명

[사진 3] 악성 명령을 포함한 MCP 도구 사용 결과

2.2.2 Rug Pull

- MCP 패키지가 최초 사용될 때에는 정상이었으나, 재실행될 때에는 악의적인 기능을 하도록 변경되어 악성 행위 수행

[사진 4] Rug Pull

2.2.3 Tool Shadowing

- 여러 MCP 도구를 사용할 때 정상 도구의 동작을 조작하여 악성 행위를 수행하도록 함

[사진 5] Tool Shadowing

2.3 대응방안

구분 설명
MCP 사용자 관점 - 검증되지 않은 MCP 서버 연결 지양
- MCP 도구 추가/승인 시 설명 및 권한 확인
- AI 에이전트의 의심스러운 활동(파일 접근, 통신 등)이 없는지 확인
MCP 개발자 관점 - Server 개발자
> 도구 설명은 정직하게 작성하고 숨겨진 악성 지침을 포함 금지
> 서버 보안 강화 및 도구 설명 내 악성 코드 삽입 가능성에 대한 대비

- Cliernt 개발자
> AI가 보는 전체 도구 설명을 사용자에게 투명하게 공개 및 위험 경고
> 도구 설명의 변경 여부를 검증 및 무단 변경 차단
> 서버/도구 간 영향을 차단하는 샌드박싱권한 제어 구현 권고

※ invariantlabs는 관련한 스캔 도구 제공 [5]

3. 참고

[1] https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks
[2] https://github.com/modelcontextprotocol
[3] https://modelcontextprotocol.io/introduction
[4] https://dytis.tistory.com/112
[5] https://github.com/invariantlabs-ai/mcp-scan
[6] https://blackcon.github.io/posts/MCP-tool-poison-attack/

+ Recent posts