MCP Scanner: Cisco AI Defense팀이 공개한 MCP 서버 및 도구 전용 보안 스캐너

MCP Scanner 소개

MCP Scanner는 Cisco AI Defense 팀이 개발하여 오픈 소스로 공개한 Model Context Protocol(MCP) 서버 및 도구 전용 보안 스캐너입니다. 최근 Anthropic이 주도하여 발표한 MCP는 대규모 언어 모델(LLM)이 외부 데이터나 도구와 소통하는 방식을 표준화한 프로토콜로, 마치 'AI 애플리케이션을 위한 USB-C 포트'와 같은 역할을 합니다. 이 표준의 등장으로 AI 에이전트가 로컬 파일, 데이터베이스, 웹 서비스 등에 훨씬 쉽게 접근할 수 있게 되었지만, 이는 동시에 연결된 데이터 소스와 실행 도구들이 보안 위협에 노출될 가능성이 커졌음을 의미합니다.

이 스캐너는 이러한 배경에서 AI 공급망(AI Supply Chain)의 보안을 강화하기 위해 탄생했습니다. MCP 서버가 정의한 도구(Tools), 프롬프트(Prompts), 리소스(Resources)를 분석하여 잠재적인 보안 취약점을 탐지합니다. 단순한 코드 오타를 찾는 것이 아니라, 악의적인 도구 정의, 프롬프트 인젝션(Prompt Injection), 시스템 프롬프트 탈취 시도, 권한 없는 리소스 접근과 같은 AI 특화 위협을 찾아내는 데 중점을 두고 있습니다. 개발자는 이 도구를 통해 자신이 구축하거나 사용하려는 MCP 서버가 안전한지 배포 전에 검증할 수 있습니다.

mcp_scanner

특히 이 도구는 세 가지 강력한 분석 엔진을 결합하여 정밀도를 높였습니다. 패턴 매칭을 위한 YARA 규칙, 문맥적 의미를 파악하는 LLM-as-a-judge(심판으로서의 LLM), 그리고 Cisco AI Defense API를 활용하여 다각도로 위협을 분석합니다. Python 기반으로 작성되어 설치가 간편하며, CLI(명령줄 인터페이스)와 REST API 방식을 모두 지원하여 CI/CD 파이프라인이나 로컬 개발 환경 어디에서든 유연하게 통합할 수 있는 것이 큰 장점입니다.

MCP Scanner와 일반적인 웹 취약점 스캐너(예: OWASP ZAP, Burp Suite)와의 비교

기존의 웹 스캐너들은 주로 SQL 인젝션, XSS(크로스 사이트 스크립팅) 등 전통적인 웹 애플리케이션 취약점을 찾는 데 특화되어 있습니다. 반면, MCP Scanner는 LLM과 도구 간의 상호작용에 초점을 맞춥니다. 예를 들어, 웹 스캐너는 HTTP 헤더나 파라미터를 검사하지만, MCP Scanner는 "이 도구의 설명(Description)이 LLM을 속여서 위험한 명령어를 실행하게 만드는가?"와 같은 의미론적(Semantic) 보안 위협을 분석합니다. 따라서 프로토콜 레벨은 같더라도(JSON-RPC 등), 분석하는 '콘텐츠'와 '위협 모델'이 완전히 다릅니다.

MCP Scanner와 정적 코드 분석 도구(SAST)와의 비교

SonarQube와 같은 정적 분석 도구는 소스 코드 자체의 문법적 오류나 알려진 보안 패턴을 검사합니다. MCP Scanner는 코드가 실행되는 런타임 환경의 정의(Definition)와 상호작용을 검사한다는 점에서 차이가 있습니다. MCP 서버가 제공하는 도구의 정의가 너무 광범위한 권한을 가지고 있는지, 혹은 프롬프트 템플릿 내부에 민감한 정보를 유출할 가능성이 있는지를 'LLM의 관점'에서 평가하기 때문에, 단순한 코드 분석으로는 찾기 힘든 '로직 및 컨텍스트 기반'의 취약점을 탐지할 수 있습니다.

MCP Scanner의 주요 기능

핵심 아키텍처 및 분석 엔진

MCP Scanner의 가장 큰 특징은 단일 방식에 의존하지 않고 세 가지 계층의 분석 엔진을 사용한다는 점입니다. 이를 통해 오탐(False Positive)을 줄이고 탐지율을 높입니다.

  • YARA Analyzer: 미리 정의된 시그니처 규칙을 사용하여 알려진 악성 패턴이나 의심스러운 코드 구조를 신속하게 걸러냅니다. 속도가 빠르고 명확한 위협을 탐지하는 데 유리합니다.
  • LLM Analyzer (LLM-as-a-judge): 실제 LLM(OpenAI GPT-4o, AWS Bedrock 등)을 사용하여 도구의 설명이나 프롬프트를 분석합니다. "이 도구가 사용자 몰래 시스템 명령어를 실행할 의도가 있는가?"와 같이 문맥적 이해가 필요한 고도화된 위협을 판단합니다.
  • API Analyzer: Cisco AI Defense의 클라우드 API와 연동하여 최신 위협 인텔리전스를 기반으로 검사합니다. (이 기능은 선택 사항이며 API 키가 필요합니다.)

설치 및 환경 설정

MCP Scanner는 Python 3.11 이상 환경에서 동작하며, 패키지 관리자로 uv 사용을 권장하지만 표준 pip로도 설치가 가능합니다. 설치 과정은 매우 직관적입니다.

  • 기본 설치: PyPI를 통해 직접 설치할 수 있습니다.
    uv pip install cisco-ai-mcp-scanner
    # 또는
    pip install cisco-ai-mcp-scanner
    
  • 환경 변수 설정: LLM 분석 기능을 사용하려면 LLM 제공자의 API 키 설정이 필요합니다. .env 파일을 사용하거나 쉘에서 직접 수출(export)할 수 있습니다. 로컬 LLM(Ollama 등)도 지원하여 비용 부담 없이 테스트해 볼 수 있습니다.
    export MCP_SCANNER_LLM_API_KEY="sk-..." # OpenAI 또는 기타 키
    export MCP_SCANNER_LLM_MODEL="gpt-4o"
    

다양한 스캔 모드 활용

MCP Scanner는 개발자의 다양한 사용 환경을 고려하여 여러 가지 스캔 모드를 제공합니다. 각 모드는 특정 상황에 맞춰 최적화되어 있습니다.

  • 알려진 설정 파일 스캔 (Known Configs): 개발자들의 PC에는 이미 Claude Desktop, Cursor, Windsurf와 같은 AI 코딩 도구들이 설치되어 있을 수 있습니다. 이 모드는 이러한 도구들이 사용하는 설정 파일(mcp_config.json 등)을 자동으로 찾아, 현재 내 PC에 연결된 MCP 서버들이 안전한지 일괄 점검합니다.
    mcp-scanner --scan-known-configs --analyzers yara --format summary
    
  • 원격 서버 스캔 (Remote): HTTP 또는 SSE(Server-Sent Events)를 통해 호스팅 되고 있는 원격 MCP 서버를 주소(URL)만으로 스캔할 수 있습니다. 인증이 필요한 경우 Bearer 토큰을 함께 전달할 수 있어 실제 운영 환경의 서버를 점검하기에 적합합니다.
  • 로컬 Stdio 서버 스캔: 개발 중인 MCP 서버는 보통 표준 입출력(Stdio) 방식으로 동작합니다. 이 스캐너는 해당 서버를 실행하는 명령어(예: uvx mcp-server-fetch)를 인자로 받아, 가상으로 서버를 구동시키고 즉석에서 보안성을 테스트할 수 있습니다.

상세한 리포팅 및 출력 포맷

보안 점검의 결과는 이해하기 쉬워야 합니다. MCP Scanner는 사용자의 필요에 따라 다양한 출력 형식을 지원합니다.

  • Summary: 핵심 발견 사항만 요약해서 보여줍니다. 빠른 점검에 유리합니다.
  • Detailed: 발견된 위협의 종류, 심각도(Severity), 어떤 분석 엔진이 탐지했는지 등 상세 정보를 포함합니다.
  • Table: 터미널에서 보기 좋게 표 형태로 결과를 정리해 줍니다. 어떤 도구가 'UNSAFE' 판정을 받았는지 한눈에 파악할 수 있습니다.
  • Raw: JSON 형식으로 원본 데이터를 출력하여, 다른 시스템이나 대시보드와 연동할 때 유용합니다.

라이선스

MCP Scanner 프로젝트는 Apache License 2.0으로 배포되고 있습니다.
누구나 자유롭게 사용, 수정 및 배포할 수 있으며 상업적 이용도 가능합니다. 단, 라이선스 고지 사항을 준수해야 합니다. 자세한 내용은 LICENSE 파일에서 확인할 수 있습니다.

:github: MCP Scanner 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요