Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mcp-doorman — CVE(CVE-2025-54136) 중독, 프롬프트 인젝션을 통한 Claude Code/Copilot/Gemini 하이재킹, 인증 없이 노출된 수백 개의 MCP 서버를 방지하는 경량 MCP입니다. 이 MCP는 대부분의 MCP 서버가 실제로 실행되는 개별 개발자의 노트북을 보호합니다. | Kitploit
도구/GitHubGitHub/sushank05/mcp-doorman
Defensive ToolsVulnerability ScannersSecret DetectionThreat IntelligenceMisconfigurationLearning & EducationAPI SecurityAI Security
GitHubsushank05/mcp-doorman

mcp-doorman

CVE(CVE-2025-54136) 중독, 프롬프트 인젝션을 통한 Claude Code/Copilot/Gemini 하이재킹, 인증 없이 노출된 수백 개의 MCP 서버를 방지하는 경량 MCP입니다. 이 MCP는 대부분의 MCP 서버가 실제로 실행되는 개별 개발자의 노트북을 보호합니다.

저장소 보기
8일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

mcp-doorman

MCP 서버를 위한 보안 게이트웨이 — 모든 도구 호출은 문 앞에서 검사됩니다.

CI npm 라이선스: Apache-2.0 PR 환영

mcp-doorman은 AI 에이전트(Claude Desktop, Claude Code, Cursor, VS Code, 모든 MCP 클라이언트)와 그것이 사용하는 MCP 서버 사이에 위치하는 드롭인 프록시입니다. 명령 한 번, 인프라 제로, 그리고 모든 tools/list와 tools/call은 가드 파이프라인을 통과합니다:

  • 🛂 정책 엔진 — 도구별 allow / deny / require-approval 규칙, glob 매칭
  • 🕵️ 비밀 정보 편집 — AWS 키, GitHub/Slack/Stripe/OpenAI/Anthropic 토큰, 개인 키, JWT, 카드 번호(Luhn 검증)… 모델에 도달하기 전에 도구 결과에서 제거
  • 💉 프롬프트 인젝션 검사 — 모델에 지시를 시도하는 도구 결과(및 도구 설명 — 도구 포이즈닝)를 플래그로 표시하거나 차단
  • 📌 럭풀 감지 — 도구 정의는 최초 사용 시 해시로 고정됩니다. 서버가 조용히 설명을 교체하면, 사람이 다시 고정할 때까지 해당 도구는 차단됩니다.
  • 🚦 속도 제한 — 도구별 토큰 버킷이 폭주하는 에이전트 루프의 피해 범위를 제한
  • 🙋 인간 승인 게이트 — 민감한 도구는 MCP elicitation을 통해 클라이언트에서 바로 대화형 승인 프롬프트를 트리거
  • 🧾 감사 로그 — 모든 호출, 거부, 편집, 플래그는 추가 전용 JSONL 파일에 기록

왜 이게 필요한가

누구나 npx some-random-mcp-server 하나만 실행하면 검증되지 않은 프로세스에 API 키와 모델의 컨텍스트 창으로 통하는 직통선을 넘겨주게 됩니다. 문서화된 공격 유형은 가상이 아닌 실제입니다:

Kubernetes 클러스터를 가진 플랫폼 팀을 위한 엔터프라이즈 MCP 게이트웨이는 이미 존재합니다. 하지만 MCP 서버의 99%가 실제로 실행되는 곳인 개별 개발자의 노트북을 보호하는 가벼운 솔루션은 없습니다. 이 프로젝트가 바로 그 공백을 메웁니다.

빠른 시작 (60초)

root@kitploit:~
# 1. Create a config
npx -y mcp-doorman init

# 2. Edit doorman.config.json — put your real servers in it

# 3. Pin the current tool definitions (trust on first use)
npx -y mcp-doorman pin --config doorman.config.json

그런 다음 클라이언트를 서버 대신 게이트웨이에 연결하세요. Claude Desktop / Claude Code / Cursor:

root@kitploit:~
// BEFORE — every server talks straight to the model
{
  "mcpServers": {
    "github":     { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
    "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/repos"] }
  }
}

// AFTER — one doorman guards them all
{
  "mcpServers": {
    "doorman": {
      "command": "npx",
      "args": ["-y", "mcp-doorman", "run", "--config", "/absolute/path/to/doorman.config.json"]
    }
  }
}

도구는 github__create_issue, filesystem__read_file 등과 같이 네임스페이스가 붙은 이름으로 표시되며, doorman__status와 doorman__recent_events라는 두 가지 내장 도구도 있습니다. 에이전트에게 *"doorman이 최근에 무엇을 차단했나요?"*라고 물어보세요.

Windows 참고: 서버 항목이 npx를 직접 사용하는 경우, cmd를 통해 실행하세요: "command": "cmd", "args": ["/c", "npx", "-y", "..."].

동작 확인

root@kitploit:~
git clone https://github.com/Sushank05/mcp-doorman && cd mcp-doorman
npm install
npm run demo

데모는 가짜 자격 증명을 유출하고 프롬프트 인젝션 페이로드를 제공하며 파괴적인 도구를 내놓는, 의도적으로 문제를 일으키는 서버(examples/demo-server.mjs)에 게이트웨이를 연결하고, 각 가드가 이를 잡아내는 모습을 보여줍니다.

작동 방식

root@kitploit:~
flowchart LR
    A["MCP client\n(Claude Desktop, Cursor, ...)"] -- stdio --> D
    subgraph D [mcp-doorman]
        direction TB
        P[policy] --> R[rate limit] --> AP[approval] --> RD[redaction] --> I[injection scan] --> AU[(audit log)]
    end
    D -- stdio --> S1[github server]
    D -- stdio --> S2[filesystem server]
    D -- streamable HTTP --> S3[remote server]

게이트웨이는 클라이언트에게는 MCP 서버로, 모든 업스트림(stdio 자식 프로세스 또는 streamable-HTTP 엔드포인트)에게는 MCP 클라이언트로 동작하며, 이들을 하나의 연결 뒤로 통합합니다. 공식 TypeScript SDK를 기반으로 구축되었습니다.

설정

모든 것은 하나의 JSON 파일에 담깁니다. 모든 옵션이 포함된 전체 예시:

root@kitploit:~
{
  "servers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" }   // ${VAR} = read from gateway env
    },
    "remote": { "url": "https://mcp.example.com/mcp", "headers": { "Authorization": "Bearer ${MCP_TOKEN}" } }
  },

  "policy": {
    "defaultAction": "allow",                    // "allow" | "deny" | "approve"
    "rules": [                                   // first match wins, evaluated top-down
      { "match": "*__delete*",  "action": "deny",    "reason": "no destructive tools" },
      { "match": ["github__create_*", "*__send_*"], "action": "approve" },
      { "match": "filesystem__*", "action": "allow" }
    ]
  },

  "redaction": {
    "enabled": true,
    "disable": [],                               // built-in rule names to turn off
    "enableOptIn": ["email"],                    // opt-ins: "email", "us-ssn", "ipv4"
    "custom": [{ "name": "acme-id", "pattern": "ACME-[0-9]{6}" }],
    "redactArguments": false                     // also scrub model-supplied arguments
  },

  "injection": {
    "action": "flag",                            // "flag" (warn the model) | "block" | "off"
    "scanToolDescriptions": true,                // tool-poisoning check on tools/list
    "custom": []
  },

  "pinning": {
    "enabled": true,
    "onNewTool": "pin",                          // "pin" (TOFU) | "block" (until `mcp-doorman pin`)
    "onChangedTool": "block"                     // "block" | "warn"
  },

  "rateLimit": { "perMinute": 120, "perTool": { "*__send_*": 5 } },

  "approval": { "fallback": "deny", "timeoutMs": 120000 },  // fallback when client lacks elicitation

  "audit": { "enabled": true, "includeArguments": true, "includeResults": false },

  "logLevel": "info"
}

핀 상태와 감사 로그는 기본적으로 설정 파일 옆의 <config-name>.pins.json / <config-name>.audit.jsonl에 저장됩니다.

CLI

명령기능
mcp-doorman run --config <path>stdio를 통해 게이트웨이 시작 (기본 명령)
mcp-doorman pin --config <path>모든 업스트림에 연결하고 현재 도구 정의를 고정(신뢰)
mcp-doorman init합리적인 기본값으로 시작용 설정 파일 작성

솔직한 한계

기능을 과대광고하는 보안 도구는 없는 것보다 나쁩니다. 이 부분을 꼭 읽어보세요.

  • 휴리스틱은 우회 가능합니다. 인젝션 패턴은 문서화된 일반적인 공격 형태를 잡아냅니다. 의욕적인 공격자는 어떤 정규식이든 피해서 문구를 만들 수 있습니다. deny/approve 정책을 하드 경계로 사용하세요. 검사는 심층 방어입니다.
  • 편집은 최선을 다하는 방식입니다. 알려진 토큰 형식은 확실하게 잡아내지만, 맥락이 없는 임의의 16진수 비밀은 잡아내지 못합니다. 에이전트를 자격 증명 저장소에 연결하지 마세요.
  • 이것은 샌드박스가 아닙니다. 업스트림 서버는 여전히 사용자 권한을 가진 자식 프로세스로 실행됩니다. Doorman은 프로토콜을 보호합니다. 프로세스를 보호하려면 컨테이너(ToolHive 스타일)와 함께 사용하세요.
  • TOFU는 첫 만남을 신뢰합니다. 고정은 변경을 감지하지, 첫날부터 악의적이었던 도구는 감지하지 못합니다. 그것은 설명 스캐너와 여러분의 직접 검토가 담당할 일입니다.
  • 승인 게이트에는 elicitation이 필요합니다. elicitation을 지원하지 않는 클라이언트는 approval.fallback(기본값은 deny)으로 대체됩니다.

로드맵 — 도움 환영 🙌

  • resources/* 및 prompts/* 프록시 (현재는 도구 전용)
  • 샘플링(sampling) 및 루트(roots) 패스스루
  • 커뮤니티 규칙 팩 (doorman-rules-finance, doorman-rules-healthcare…)
  • 학습 모드: 일주일간 관찰 후 최소 권한 정책 제안
  • OPA / Cedar 정책 백엔드
  • mcp-doorman audit 하위 명령: JSONL 로그를 보기 좋게 출력하고 조회
  • 감사 시각화 웹 대시보드
  • 엔트로피 기반 일반 비밀 정보 감지

위 항목 중 아무거나 선택하거나 [good first issue](https://github.com/YOUR_GITHUB_USERNAME/mcp-doorman/labels/good%20first%20issue)부터 시작하세요. 새 감지 규칙 추가가 가장 쉬운 기여 방법입니다: 정규식 하나 + 테스트 두 개. CONTRIBUTING.md와 docs/detection-rules.md를 참조하세요.

개발

root@kitploit:~
npm install
npm test          # 69 tests: unit + full stdio e2e
npm run build
npm run demo      # watch the guards fire live

라이선스

Apache-2.0 — 명시적인 특허 허여와 함께, 모든 용도로 자유롭게 사용할 수 있습니다.

도구 다운로드
공격작동 방식
도구 포이즈닝대부분의 클라이언트 UI에서 보이지 않는, 도구의 설명에 숨겨진 악의적인 지시
럭풀서버가 첫날에는 무해한 도구를 제시하고, 승인 후에 정의를 교체
간접 프롬프트 인젝션합법적인 도구가 가져온 웹페이지/이슈/이메일에 모델을 겨냥한 지시가 포함됨
비밀 정보 유출한 도구 결과에 새어 나온 자격 증명 + 하나의 주입된 지시 = 다른 사람의 서버에 있는 내 키
폭주 루프혼란에 빠지거나 탈취된 에이전트가 대량 삭제, 대량 메일 발송, 대량 스크래핑 수행