Skip to main content
Glama

안전하지 않은 MCP 데모

개요

이 프로젝트는 취약한 MCP 서버와 여러 클라이언트(개념 증명 공격 클라이언트와 우수한 클라이언트 포함)를 시연합니다. MCP 서버의 잠재적 보안 취약점을 보여주기 위한 교육 목적으로 설계되었습니다.

Related MCP server: MCP Toolbox for Databases

프로젝트 구조

  • vuln-mcp.py : 안전하지 않은 도구를 노출시키는 취약한 MCP 서버입니다.

  • good-mcp-client.py : 일반적인 상호작용(레코드 삽입/쿼리)에 적합한 우수한 클라이언트입니다.

  • attack-mcp-client.py : 서버 취약점을 악용하는 방법을 보여주는 자동화된 공격 클라이언트입니다.

  • requirements.txt : 프로젝트에 대한 Python 종속성입니다.

특징 및 취약점

노출된 서버 도구

  1. 삽입_레코드

    • 이름/주소 레코드를 데이터베이스에 삽입합니다.

    • 취약점: 사용자 입력을 SQL 쿼리에 직접 문자열로 삽입하여 SQL 주입에 취약합니다.

  2. 쿼리_레코드

    • 데이터베이스의 모든 레코드를 나열합니다.

    • 취약점: 인증이나 액세스 제어 없이 모든 데이터가 노출됩니다.

  3. 실행_sql

    • 클라이언트가 제공한 임의의 SQL 쿼리를 실행합니다.

    • 취약점: 파괴적인 명령(예: 데이터 유출, 스키마 변경)을 포함한 모든 SQL 명령을 허용합니다.

  4. get_env_variable

    • 요청된 모든 환경 변수의 값을 반환합니다.

    • 취약점: 민감한 환경 변수(예: 비밀, API 키)가 유출됩니다.

달리는 방법

1. 종속성 설치

지엑스피1

2. 서버와 Good Client를 시작합니다.

한 터미널에서:

python good-mcp-client.py vuln-mcp.py

프롬프트에 따라 대화형으로 레코드를 삽입/쿼리합니다.

3. 공격 클라이언트 실행

다른 터미널에서는:

python attack-mcp-client.py vuln-mcp.py

이렇게 하면 자동으로 다음이 수행됩니다.

  • SQL 주입 공격 시도

  • 임의의 SQL 쿼리 실행

  • 여러 가지 일반적인 환경 변수를 읽으려고 시도합니다.

출력 예

  • 공격 클라이언트는 어떤 페이로드가 성공하고 실패하는지 보여주고, 접근 가능한 경우 데이터베이스 내용과 환경 변수 값을 출력합니다.

입증된 취약점

  • SQL 주입: 사용자 입력이 검증되지 않아 공격자가 SQL 논리를 조작하고 임의의 데이터를 삽입할 수 있습니다.

  • 임의 코드 실행: execute_sql 도구를 사용하면 공격자가 모든 SQL 명령을 실행할 수 있으며, 여기에는 데이터 도난이나 파괴도 포함됩니다.

  • 민감한 데이터 노출: get_env_variable 도구를 사용하면 공격자가 비밀과 구성 값을 읽을 수 있습니다.

  • 접근 제어 부족: 누구나 인증 없이 모든 도구를 실행하고 모든 데이터에 접근할 수 있습니다.

완화 전략

실제 MCP 서버를 보호하려면 다음을 수행해야 합니다.

  1. 매개변수화된 쿼리 사용:

    • SQL 쿼리에 문자열 보간 대신 매개변수 대체를 항상 사용하면 삽입을 방지할 수 있습니다.

    • 예(보안):

      cursor.execute("INSERT INTO records (name, address) VALUES (?, ?)", (name, address))
  2. 위험한 도구 제한:

    • execute_sqlget_env_variable 과 같은 도구를 제거하거나 엄격하게 제한합니다.

    • 필요한 기능만 공개합니다.

  3. 인증 및 권한 부여 구현:

    • 민감한 도구나 데이터에 대한 액세스를 허용하기 전에 사용자에게 인증과 권한 확인을 요구합니다.

  4. 입력 검증 및 정리:

    • 모든 사용자 입력, 특히 데이터베이스나 시스템과 상호 작용하는 입력을 확인하고 정리합니다.

  5. 환경 변수 액세스 제한:

    • 민감하지 않은 변수에만 액세스를 허용하거나 이 도구를 완전히 제거하세요.

  6. 감사 및 모니터링 사용:

    • 모든 도구 호출을 기록하고 의심스럽거나 부적절한 행동을 모니터링합니다.

  7. 최소 권한의 원칙:

    • 최소한의 권한으로 서버를 실행하고 데이터베이스와 OS 액세스를 최대한 제한합니다.

부인 성명

이 프로젝트는 교육 및 데모 목적으로만 사용됩니다. 이 코드를 프로덕션 환경에 배포하지 마십시오.


질문이나 추가 개선 사항이 있으시면 이슈를 등록하거나 프로젝트 관리자에게 문의하세요.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kenhuangus/mcp-vulnerable-server-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server