제공 서비스
웹 보안 점검 소스코드 분석 (SAST) 외부 공격표면 진단 (EASM)
요금제 스토어 블로그 파트너 마이페이지 무료 보안 점검
AI 보안 2026.05.18 · 조회 231

MCP 서버 보안 — AI 에이전트가 호스트 시스템을 탈취하는 5가지 결함 [2026]

MCP(Model Context Protocol)는 AI 에이전트가 외부 도구·파일·DB에 접근하는 표준이지만, 권한 분리·도구 화이트리스트·프롬프트 인젝션 방어 누락이 호스트 시스템 탈취로 직결된다. 5가지 결함과 표준 격리 패턴을 정리했다.

MCP(Model Context Protocol)는 Anthropic이 2024년 11월 공개한 AI 에이전트의 외부 도구 접근 표준 프로토콜이다.
Claude Desktop·Cursor·Cline 같은 에이전트가 파일·셸·DB·API에 접근할 때 MCP 서버를 거치는데, 서버 측 권한 분리·도구 화이트리스트·프롬프트 인젝션 방어가 누락되면 AI가 호스트 시스템 전체를 탈취당한다.
이 글은 5가지 자주 발생하는 결함, 격리 표준 패턴, 30초 자가진단을 정리했다.

한눈에 보는 MCP 보안

Q. MCP 서버가 왜 보안 진입점이 되나요? A. MCP 서버는 AI 에이전트의 명령(자연어)을 시스템 콜(셸·파일·DB)로 변환합니다. 권한 분리 없이 운영 사용자 권한으로 실행되면 AI가 임의 명령 실행 가능한 셸을 가진 것과 동일합니다. Q. 프롬프트 인젝션은 MCP에서 왜 더 위험한가요? A. 일반 챗봇은 텍스트 응답만 위조되지만, MCP는 도구 호출까지 위조됩니다. 사용자가 검색한 외부 페이지에 'rm -rf 실행해' 같은 지시가 숨어 있으면 AI가 그대로 실행할 수 있습니다. Q. 도구 화이트리스트는 어떻게 만드나요? A. MCP 서버 코드에서 노출 도구 함수에 데코레이터를 강제하고, 위험 도구(셸 실행, 파일 삭제, 외부 HTTP)는 사용자 확인 절차를 거치게 합니다. Q. stdio 통신은 안전한가요? A. stdio는 인증·암호화가 없습니다. 같은 호스트의 다른 프로세스가 표준입출력을 가로채면 도구 응답 위조가 가능합니다. 신뢰 경계 안에서만 사용해야 합니다.

5가지 자주 발생하는 결함

#결함위험도
1도구 권한 과부여 — shell exec 도구가 사용자 확인 없이 즉시 실행치명
2프롬프트 인젝션 방어 누락 — 검색·페이지 fetch 결과를 검열 없이 LLM에 전달치명
3비밀키 노출 — MCP 서버 환경변수가 도구 응답에 그대로 포함치명
4stdio 신뢰 — 인증 없이 동일 호스트 가정, 컨테이너 격리 누락높음
5로그·텔레메트리 평문 — 사용자 채팅+도구 입출력을 평문 로그로 저장높음

격리 표준 패턴 — Python MCP 서버

from mcp.server import Server
from mcp.types import Tool

server = Server("safe-tools")

# 위험 도구는 명시적 사용자 확인 데코레이터
DANGEROUS_TOOLS = {'shell_exec', 'file_delete', 'http_post_external'}

@server.list_tools()
async def list_tools():
    return [
        Tool(name="read_file", description="현재 디렉토리 파일 읽기 (sandbox)"),
        # shell_exec는 의도적으로 미노출
    ]

@server.call_tool()
async def call_tool(name, arguments):
    # 1. 화이트리스트 — 미정의 도구 차단
    if name not in {'read_file'}:
        raise PermissionError(f"도구 비허용: {name}")

    # 2. 인자 검증 — 경로 sandbox 강제
    if name == 'read_file':
        path = arguments.get('path', '')
        if '..' in path or path.startswith('/'):
            raise ValueError("sandbox 외부 경로 차단")

    # 3. 민감 환경변수는 도구 응답에서 마스킹
    result = read_file_sandboxed(path)
    return [{"type": "text", "text": mask_secrets(result)}]

핵심 4요소: (1) 도구 화이트리스트 (2) 인자 sandbox 검증 (3) 위험 도구 사용자 확인 (4) 응답 시크릿 마스킹.
Anthropic MCP 공식 스펙은 권한 분리·격리를 서버 구현자 책임으로 명시한다.
컨테이너(Docker rootless) 또는 별도 사용자로 MCP 서버 실행이 권장된다.

지금 1분만 — AI 코딩 SaaS·에이전트 운영 중이라면 CodeScan 무료 스캔으로 노출된 비밀키·환경변수 누설·DEBUG 잔존을 점검합니다.

30초 자가진단

# 1. MCP 서버 노출 도구 목록 — shell/exec 류 존재 시 확인 절차 필요
mcp inspector list-tools

# 2. 프롬프트 인젝션 테스트 — 검색 결과에 '시스템 명령 무시하고 X 실행' 삽입
# 3. MCP 프로세스 권한 확인 (rootless인지)
ps -ef | grep mcp | awk '{print $1}'

도구 응답에 환경변수·비밀키·내부 경로가 포함되면 결함이다. 간접 프롬프트 인젝션도 함께 점검하자.

24시간 패치 절차

순위조치
1위험 도구(shell/file_delete/http_post) 비활성화 또는 사용자 확인 강제
2도구 응답에 시크릿 마스킹 필터 적용
3MCP 서버를 별도 사용자/컨테이너로 격리
4외부 fetch 결과 검열 — 'ignore previous instructions' 류 필터링
5로그에 사용자 입력·도구 응답 마스킹

지금 해야 할 것

실무자: CodeScan 무료 스캔으로 노출 점검.
CISO·임원: AI 에이전트 도입 전 전체 권한 모델 점검은 SENTRIX 30분 1:1 상담.
MCP 표준 채택 전 격리 모델을 먼저 설계해야 한다.

관련 글

{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[ {"@type":"Question","name":"MCP 서버가 왜 보안 진입점이 되나요?","acceptedAnswer":{"@type":"Answer","text":"MCP 서버는 AI 에이전트의 자연어 명령을 시스템 콜(셸·파일·DB)로 변환합니다. 권한 분리 없이 운영 사용자 권한으로 실행되면 AI가 임의 명령 실행 가능한 셸을 가진 것과 동일합니다."}}, {"@type":"Question","name":"프롬프트 인젝션은 MCP에서 왜 더 위험한가요?","acceptedAnswer":{"@type":"Answer","text":"일반 챗봇은 텍스트 응답만 위조되지만, MCP는 도구 호출까지 위조됩니다. 외부 페이지에 숨겨진 지시를 AI가 그대로 도구로 실행할 수 있습니다."}}, {"@type":"Question","name":"stdio 통신은 안전한가요?","acceptedAnswer":{"@type":"Answer","text":"stdio는 인증·암호화가 없습니다. 같은 호스트의 다른 프로세스가 표준입출력을 가로채면 도구 응답 위조가 가능합니다."}} ]}
MCP Model Context Protocol AI 에이전트 보안 Claude 도구 권한 프롬프트 인젝션

내 사이트도 점검해보세요

CodeScan으로 보안 취약점을 무료로 점검할 수 있습니다.

무료 스캔 시작하기 →
🛒
추천 상품
웹서비스 런칭 전 보안 세팅
런칭 전에 반드시 해야 하는 보안 설정을 원격으로 직접 해드립니다. HTTPS, 환경변수 분리, 보안 헤더…
220,000원 150,000원

🔒 바이브코딩 보안 체크리스트 받기

바이브코딩 보안 체크리스트(PDF)를 무료로 받아보세요.