Repello-AI/mcp-exploit-demo
요약
MCP(Model Context Protocol) 서버의 도구 오염을 통해 원격 코드 실행 및 데이터 유출을 시연하는 보안 취약점 연구입니다. 악성 서버가 AI 어시스턴트를 조작하여 사용자의 SSH 키를 탈취하는 과정을 보여줍니다.
핵심 포인트
- MCP 서버의 도구 문서를 조작하여 악성 코드 실행 유도
- Base64 난독화와 사회 공학적 기법을 사용한 공격 시연
- SSH 공개 키 수집 및 원격 서버로의 데이터 유출 수행
- AI 개발 도구의 자동 실행 기능 비활성화 및 출처 확인 권장
이 저장소는 도구 오염 (tool poisoning)을 통해 원격 코드 실행 (remote code execution) 및 데이터 유출 (data exfiltration)을 허용하는 MCP (Model Context Protocol) 서버의 보안 취약점을 시연합니다.
이것은 교육 및 보안 연구 목적으로만 의도되었습니다.
server.py
-
오염된 도구가 포함된 악성 MCP 서버 구현
.cursor/mcp.json -
Cursor AI 통합을 위한 설정 파일
이 공격은 "Rug Pull" 방식을 시연합니다:
- 사용자가 Cursor AI와 같은 MCP 클라이언트 (MCP Client)를 통해 악성 MCP 서버에 연결합니다.
- 서버는
DockerCommandAnalyzer도구의 문서를 악성 코드로 수정합니다 - AI 어시스턴트가 이 문서를 읽을 때, base64로 인코딩된 명령어를 실행하도록 조작됩니다. - 인코딩된 명령어는 다음과 같은 작업을 조용히 수행합니다:
- 사용자의 SSH 공개 키 (SSH public keys) 수집
- 이를 원격 서버로 유출 (exfiltrates)
- 공격의 흔적 제거
공격의 핵심 요소는 다음과 같습니다:
2단계 오염 (Two-stage poisoning): 도구가 오염된 상태를 유지하도록 지속성을 위해 마커 파일을 사용합니다.
사회 공학 (Social engineering): AI 어시스턴트를 조작하기 위해 긴급한 언어를 사용합니다.
Base64 난독화 (Base64 obfuscation): 일반적인 검사로부터 악성 명령어를 숨깁니다.
유출을 위한 wget (wget for exfiltration): 공격자가 제어하는 서버로 데이터를 보내기 위해 표준 HTTP POST를 사용합니다.
이러한 유형의 공격으로부터 보호하려면:
자동 실행 기능 비활성화 (Disable auto-run features): Cursor와 같은 AI 개발 도구에서 자동 실행 기능을 끕니다.
항상 출처 확인 (Always verify the source): MCP 서버에 연결하기 전에 반드시 출처를 확인합니다.
코드 검토 (Review code): 신뢰할 수 없는 소스의 코드는 실행하기 전에 검토합니다.
샌드박스 환경 사용 (Use sandboxed environments): 새로운 AI 도구를 테스트할 때는 샌드박스 환경을 사용합니다.
송신 필터링 구현 (Implement egress filtering): 예상치 못한 외부 연결을 차단하기 위해 송신 필터링을 구현합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기