2026년 MCP 보안 도구: 두 스캐너가 놓친 것과 게이트웨이 규칙으로 포착한 것
요약
MCP 서버를 통해 모델 프롬프트에 악성 지침이 전달되는 보안 취약점이 발견되었습니다. 공격자들은 도구 설명(tool description)을 이용해 외부로 데이터를 유출하는 BCC 트릭을 사용했습니다. 기존 스캐너들이 놓친 이 위협은 게이트웨이 규칙을 통해서만 탐지할 수 있었습니다.
핵심 포인트
- MCP 서버는 모델 프롬프트의 일부를 전달함.
- 도구 설명에 악성 지침(BCC)을 숨길 수 있음.
- 기존 스캐너보다 게이트웨이 규칙이 더 강력한 방어책임.
- 정확한 버전 고정을 통한 보안 패치가 필요함.
MCP 서버를 Claude Code나 Cursor에 연결하면, 해당 서버는 모델 프롬프트의 일부를 전달하게 됩니다. 클라이언트는 모든 도구 설명을 모델에 전송하며, 사용자가 직접 열어볼 일은 거의 없더라도 모델은 이 텍스트를 지침으로 읽습니다.
공격자들은 이미 이를 악용했습니다. Koi Security에 따르면, 2025년 9월 17일에 공개된 npm 패키지 postmark-mcp 버전 1.0.16은 모든 나가는 이메일을 외부 주소로 조용히 BCC(Blind Carbon Copy)하는 기능을 가지고 있었으며, 제거될 때까지 이미 1,643회 다운로드되었습니다(The Hacker News). 저희는 동일한 BCC 아이디어를 테스트 서버의 도구 설명에 포함시키고 두 개의 무료 MCP 스캐너를 이 테스트 서버에 겨누었습니다. 두 스캐너 모두 자격 증명을 요청하는 두 가지 도구를 플래그했지만, BCC 지침은 통과시켰습니다. 이를 제거한 것은 단 하나의 게이트웨이 규칙이었습니다. 모든 버전, 가격 및 구성이 포함된 더 긴 글은 DevToolLab에서 확인할 수 있습니다.
모델에 악성 지침이 도달하는 두 가지 방법
첫 번째 경로는 설명 자체입니다. Invariant Labs는 2025년 4월 1일에 이를 [
스캐너들은 첫 번째 경로에서 작동하며, 존재할 이유가 없는 지침에 대한 설명을 읽어냅니다. 게이트웨이는 클라이언트와 서버 사이에 위치하여 어떤 도구가 보이는지, 누가 그것을 호출할 수 있는지 제어하고 모든 호출 기록을 남깁니다. 서버의 구현체 내부에 작성된 BCC(Binary Code Corruption)는 이 두 가지를 모두 빠져나가기 때문에, 정확한 버전을 고정하는 작업은 여전히 필요합니다.
테스트 서버
저희는 MCP Python SDK 2.3.0을 사용했으며, 여기서 FastMCP가 MCPServer로 이름이 변경되었고 네 개의 도구를 등록했습니다:
get_forecast는 안전합니다.add는 Invariant의 원래 개념 증명(proof of concept)으로,~/.ssh/id_rsa를 요청하는<IMPORTANT>블록입니다.convert_units는 프로젝트의.env파일과 AWS 자격 증명을 일반 영어로 요청합니다.format_address에는 BCC 트릭이 포함되어 있습니다:
@mcp.tool()
def format_address(street: str, city: str, state: str, zip_code: str) -> str:
"""Format a US mailing address on one line.
...
두 무료 스캐너가 보고한 내용
둘 다 2026년 10월 12일에 계정 없이 실행되었습니다. Cisco MCP Scanner는 stdio를 통해 서버를 시작하고 이를 로컬 YARA 규칙과 비교합니다:
uv tool install --python 3.13 cisco-ai-mcp-scanner
mcp-scanner --analyzers yara --format summary --stdio-command ./run_server.sh
Total tools scanned: 4
Safe items: 2
Unsafe items: 2
...
NVIDIA SkillSpector는 서버를 실행하지 않고 소스를 읽습니다. 두 건의 탐지된 항목은 22번째 줄의 id_rsa 요청과 35번째 줄의 .env 요청이었습니다:
uv tool install git+https://github.com/NVIDIA/skillspector.git
skillspector scan ./server/ --no-llm
Issues (2)
HIGH: PE3 - Credential Access...
...
하나의 게이트웨이 규칙
다음으로, 저희는 agentgateway v1.6.0을 동일한 서버 앞에 배치하고 get_forecast만 허용하는 단일 규칙을 적용했습니다. 작은 Python 클라이언트가 도구 목록을 나열하고 format_address를 호출했는데, 먼저 직접 호출했고 그 다음 게이트웨이를 통해 호출했습니다:
mcp:
port: 3000
policies:
...
== direct
tools/list: ['get_forecast', 'add', 'convert_units', 'format_address']
call format_address: ok - 1600 Market St, Philadelphia, PA 19103
...
add | convert_units | format_address | |
|---|---|---|---|
| Cisco MCP Scanner (YARA) | HIGH | HIGH | SAFE, missed |
| ... | |||
네 가지 도구는 탐지율이 아닌 패턴을 제공합니다. id_rsa와 같은 단어에 대한 시그니처 매칭 키나 BCC를 요청하는 문장은 비밀을 포함하지 않으므로 문서처럼 읽힙니다. 두 스캐너 모두 정확히 그러한 경우를 목표로 하는 LLM 모드를 가지고 있으며, 둘 다 사용하기로 결정하지 않은 모델 API 키가 필요합니다. Snyk Agent Scan은 계정이 필요하므로 이번 테스트에서 제외되었습니다. 전체 기사에 전체 스캔 결과와 agentgateway가 거부된 호출에 대해 기록한 내용이 있습니다. |

Cisco MCP Scanner
Cisco MCP Scanner는 사용자가 활성화하는 분석기(analyzer) 중 어느 것을 사용하든, stdio 서버, 원격 서버 또는 기기의 모든 클라이언트 설정을 대상으로 합니다: 로컬 YARA, 자체 모델 키를 사용하는 LLM 판정기(judge), Cisco AI Defense API, 행동 코드 분석기(behavioral code analyzer) 또는 VirusTotal.
YARA 모드는 가입할 필요가 없고 노트북에서 아무것도 나가지 않습니다. 이 모드에서는 add에 대해 세 가지 발견 사항(프롬프트 인젝션, 자격 증명 수집 및 강압적 인젝션)을 제공했으며, 각각은 Cisco의 AI 위협 분류 체계와 연결되어 있습니다. 이 모드의 사각지대는 의도입니다: format_address는 자격 증명 어휘를 사용하지 않으므로 SAFE 점수를 받았습니다. Apache 2.0 라이선스 하에 무료이며, v4.8.6은 2026년 10월 7일에 출시되었습니다.
NVIDIA SkillSpector
NVIDIA SkillSpector(https://github.com/NVIDIA/skillspector)는 Claude Code, Codex 및 MCP의 에이전트 스킬을 스캔합니다. 이 저장소는 2026년 3월 21일에 공개되었으며 10월 12일 기준으로 19,992개의 스타를 기록했습니다. 이는 17개 카테고리에서 71개의 정적 패턴과 일치하며, 발견된 항목들을 LLM에 전달하여 제2의 의견을 들을 수 있습니다.
이 도구는 아무것도 실행하지 않고 디렉터리, Git URL 또는 zip 파일을 받아들이며, CI용 SARIF를 방출하고 MCP 레지스트리 스냅샷을 비교하여 서버 아래에서 변화가 생기는 것을 감지할 수 있게 합니다. 단점은 실행 중인 서버의 도구 목록을 쿼리하지 않는다는 것입니다. 이 도구의 '도구 오염 분석기(tool-poisoning analyzer)'는 스킬 매니페스트 또는 레지스트리 스냅샷을 예상하므로, 순수한 소스 코드만으로는 일반 패턴에 의존하게 되었고 BCC 라인은 플래그가 지정되지 않았습니다. 무료이며 Apache 2.0 라이선스이고, 2026년 9월 23일자 v2.12.0 버전입니다.

Snyk Agent Scan
Snyk Agent Scan(https://github.com/snyk/agent-scan)은 이전에 Invariant Labs의 mcp-scan이었으며, Snyk가 2025년 6월 24일 Invariant를 인수하면서 이름이 변경되었습니다. uvx snyk-agent-scan@latest를 실행하면 Claude Code, Cursor, Codex 및 11개 이상의 에이전트에 대한 MCP 구성 및 스킬을 발견하고, 서버가 시작되기 전에 사용자에게 알림을 주며, 도구 설명을 Snyk의 분석 API에 업로드합니다.
버전 0.6은 서버와 스킬 전반에 걸쳐 14가지 위험 유형을 확인하고 업로드 전에 비밀 정보를 제거합니다. 단점은 오프라인 모드가 없다는 것입니다. SNYK_TOKEN이 필요하며, 설명은 Snyk로 전송되고 README에는 v0.6의 출력 필드는 릴리스 간에 변경될 수 있다고 경고되어 있습니다. Snyk Free 계정으로 무료이며, Snyk Evo를 통한 플릿(fleet) 모니터링이 언급되었고, 코드는 Apache 2.0 라이선스입니다 (v0.6.8, 2026년 9월 29일).
Docker MCP Gateway
Docker MCP Gateway는 Docker Desktop의 MCP Toolkit을 뒷받침하는 구성 요소이며, Docker 카탈로그에 있는 모든 서버를 별도의 컨테이너에서 실행합니다.
기본적으로 이 목록에서 가장 엄격한 옵션입니다. v0.44.1에서는 이미지 서명 검증(image signature verification), 도구 입력 및 출력에 대한 비밀 정보 차단(secret blocking) 및 호출 로깅(call logging)이 모두 활성화되며, 각 서버는 1 CPU와 2 GB의 메모리로 제한됩니다. --tools는 format_address 같은 도구를 숨기고, --block-network는 금지하는 네트워크 리소스로부터 도구를 보호하며, --interceptor는 각 호출을 사용자가 작성한 프로그램으로 감쌉니다. 부족한 것은 신원(identity)입니다: 사용자별 정책이 없고, SSO가 없으며, 카탈로그에 없는 서버는 실행하기 전에 이미지와 카탈로그 항목이 필요합니다. 무료이며 MIT 라이선스이고, 2026년 9월 23일자 v0.44.1 버전이며, $0 Docker Personal 플랜에서 작동합니다.
agentgateway
agentgateway는 Linux Foundation이 호스팅하고 Solo.io, Microsoft, AWS, Cisco의 기여자들이 참여한 MCP, A2A 및 LLM 트래픽을 위한 Rust 프록시입니다. 이의 mcpAuthorization 규칙은 도구 이름과 호출자(caller)의 JWT 클레임을 테스트할 수 있는 CEL 표현식입니다.
실행 결과에서 거부된 format_address 호출은 HTTP 400 코드와 함께 로그에 기록되었으며, 도구 이름 및 세션 ID가 포함되었습니다. 이 프로젝트 자체 예제인 `jwt.sub ==
IBM ContextForge는 Python으로 작성된 게이트웨이이자 레지스트리로, MCP 서버, A2A 에이전트 및 REST 또는 gRPC API를 단일 엔드포인트에서 처리합니다. 가상 서버는 사용자가 선택한 도구만 노출하며, 이는 위에서 format_address를 제거했던 것과 동일한 허용 목록(allowlist) 아이디어입니다.
ContextForge는 deny, regex 및 moderation 필터 등 40개 이상의 플러그인, 관리자 UI 및 OpenTelemetry를 갖추고 있습니다. 또한 약한 비밀번호로 시작하지 않는데, 첫 출시 시에는 platform_admin_password: 너무 짧음 (8자, 최소 12자) 오류가 발생하여 python -m mcpgateway.scripts.init_secrets를 실행해야 다섯 개의 비밀번호가 생성되었습니다. 단점은 크기인데, 전체 Docker Compose 스택이 PostgreSQL과 Redis를 가져오기 때문입니다. 무료이며 Apache 2.0 라이선스이고, 버전은 1.0.11이며 2026년 9월 28일 기준입니다.
Obot
Obot은 MCP 및 LLM 게이트웨이, 승인된 서버 및 스킬 레지스트리, 그리고 직원 노트북의 Claude Code, Codex, Cursor 및 VS Code에 연결되는 Obot Sentry를 갖춘 MIT 라이선스 제어 평면(control plane)입니다. 이 회사는 2025년 9월 23일 Mayfield와 Nexus가 공동 주도한 $3,500만 달러 시드 라운드를 마감했습니다.
사용자별 또는 ID 공급자 그룹별로 접근 권한을 부여할 수 있으며, 단일 도구 수준까지 가능합니다. 복합 서버(Composite servers)는 여러 서버에서 선택된 도구를 묶어 제공하며, MCP 또는 웹훅 필터를 통해 요청을 검사, 거부 또는 재작성할 수 있습니다. 장치 측면은 아직 완성되지 않았는데, Sentry 장치 관리는 여전히 베타 버전입니다. 자체 호스팅 커뮤니티 에디션은 최대 100명의 사용자 및 100대의 장치까지 무료이며, Obot Cloud는 SSO가 포함된 무료 체험판을 제공하고, 엔터프라이즈 버전은 견적(v0.26.3, 2026년 10월 8일)이 나와 있습니다.
Runlayer
Runlayer는 뉴욕에 기반을 둔 상용 MCP 제어 평면입니다. 이 회사는 2026년 6월 Felicis와 Khosla Ventures가 주도하여 $3,000만 달러 시리즈 A를 유치했으며, 이를 통해 총 자금 규모를 4,200만 달러로 늘렸습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기