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 모델과 데이터 소스 간의 안전하고 신뢰할 수 있는 연결을 제공 > 개인 정보 보호와 데이터 무결성을 유지할 수 있음 |
구성요소 | 설명 |
MCP 호스트 | MCP를 통해 데이터에 액세스하려는 Claude 데스크톱, IDE 또는 AI 도구와 같은 프로그램 |
MCP 클라이언트 | 서버와 1:1 연결을 유지하는 프로토콜 클라이언트 |
MCP 서버 | 표준화된 모델 컨텍스트 프로토콜을 통해 각각 특정 기능을 노출하는 경량 프로그램 |
로컬 데이터 소스 | MCP 서버가 안전하게 액세스할 수 있는 컴퓨터의 파일, 데이터베이스 및 서비스 |
원격 서비스 | MCP 서버가 연결할 수 있는 외부 시스템(예: API 활용) |
2.2 Tool Poisoning Attack
- MCP 서버에서 제공하는 도구 설명에 악성 지시사항을 삽입
> 사용자는 정상으로 위장한 악성 MCP 도구를 실행
> AI 모델은 도구 설명의 지시사항을 그대로 실행하여 악성 행위를 수행
> Ex. 민감한 파일에 액세스하여 데이터 추출 및 공격자에게 전송하도록 지시할 수 있음
2.2.1 Direct Poisoning
- 도구 설명에 악성 명령을 포함하여 사용자가 MCP를 사용할 때 해당 명령이 실행되는 방식
> [사진 3]의 add()는 다음과 같은 도구 설명을 포함하며, AI 모델은 이를 수행하여 결과를 반환
① 민감한 구성 파일을 읽음 (~/.cursor/mcp.json)
② SSH 개인 키에 액세스 (~/.ssh/id_rsa)
③ 해당 데이터를 sidenote로 표시해 숨겨진 방식으로 전송
④ 사용자에게 두 숫자를 더하는 수학적 원리를 자세히 설명
2.2.2 Rug Pull
- MCP 패키지가 최초 사용될 때에는 정상이었으나, 재실행될 때에는 악의적인 기능을 하도록 변경되어 악성 행위 수행
2.2.3 Tool Shadowing
- 여러 MCP 도구를 사용할 때 정상 도구의 동작을 조작하여 악성 행위를 수행하도록 함
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/
'취약점 > AI, LLM' 카테고리의 다른 글
코드 생성 LLM의 패키지 환각 문제에 대한 연구 (Slopsquatting) (0) | 2025.04.21 |
---|---|
ChatGPT Time-Bandit 취약점 (0) | 2025.02.08 |
DeepSeek의 기술과 보안 이슈 (0) | 2025.02.08 |
Ollama 취약점(CVE-2024-39720, CVE-2024-39722, CVE-2024-39719, CVE-2024-39721, CWE-668, CWE-285) (3) | 2024.11.06 |
LLM 탈옥 : Crescendo, Deceptive Delight, Context Fusion Attack (CFA) (0) | 2024.10.30 |