OWASP MCP Top 10 기반 정적 보안 분석기. 소스코드 레벨에서 MCP 서버의 보안 위협을 탐지한다. 완전 로컬, LLM API 불필요.
5개 레이어가 순차적으로 동작한다. Layer 1~4는 LLM 없이 즉시 실행되고, Layer 5는 --llm 플래그로 로컬 Ollama를 통해 활성화된다.
annotation 기반 Ground Truth 벤치마크 (12개 테스트 케이스: 취약 TS 서버 + 취약 Python 서버 + 안전한 서버) 결과.
* LLM 없이 Layer 1~4만으로 측정. FP 0건 = 보고한 모든 findings가 실제 위협.
Anthropic 공식 MCP 서버 7개, 커뮤니티 인기 서버 3개, Snyk 취약 데모서버 1개에 대한 스캔 결과. 전부 실제 프로덕션 코드.
| Server | 소속 | Grade | Score | LOC | Density | Critical | High | Medium |
|---|---|---|---|---|---|---|---|---|
| fetch | Anthropic 공식 | A | 100 | 318 | 0.0 | 0 | 0 | 0 |
| git | Anthropic 공식 | A | 100 | 616 | 0.0 | 0 | 0 | 0 |
| time | Anthropic 공식 | A | 100 | 242 | 0.0 | 0 | 0 | 0 |
| memory | Anthropic 공식 | B | 94 | 501 | 6.0 | 0 | 0 | 3 |
| filesystem | Anthropic 공식 | B | 95 | 1,484 | 5.4 | 0 | 1 | 4 |
| everything | Anthropic 공식 | B | 94 | 3,774 | 5.6 | 0 | 4 | 5 |
| mcp-playwright | 커뮤니티 (4.5K★) | B | 84 | 6,003 | 16.0 | 2 | 7 | 48 |
| tavily-mcp | 커뮤니티 (1.8K★) | A | 98 | 912 | 2.2 | 0 | 0 | 2 |
| supabase-mcp | 커뮤니티 (1.2K★) | A | 99 | 17,810 | 0.6 | 0 | 1 | 7 |
| snyk-demoserver | Snyk (의도적 취약) | F | 0 | 89 | 236.0 | 2 | 0 | 1 |
* Density = weighted findings per 1,000 LOC. Low/Info는 Grade 계산에서 제외.
* fetch, git, time은 density 0.0 (findings 없음)이므로 생략
동일한 poisoned tool description 4건에 대해 nuk과 Cisco MCP Scanner (YARA 모드)를 비교했다. Cisco의 behavioral 모드(LLM 기반)는 OpenAI API 키가 필수여서 YARA만 비교 가능.
* 테스트 대상: Snyk demoserver의 poisoned tool descriptions 4건 (hidden injection, credential harvesting, instruction override, concealment). Cisco YARA 모드(v4.6.0)만 로컬 실행 가능하여 비교. Snyk은 API 토큰 필수 + 서버 실행 필요하여 동일 조건 비교 불가.
LOC(Lines of Code) 기반 density grading. 소규모 프로젝트(14줄)에서 Critical 3건은 대규모 프로젝트(200줄)에서 11건보다 높은 density를 가진다.
* Weighted: Critical ×10, High ×4, Medium ×1. Low/Info는 제외.
# 소스코드 분석 (Layer 1~4)
nuk analyze -p ./my-mcp-server -r ./rules
# JSON 출력
nuk analyze -p ./my-mcp-server -r ./rules -f json > scan.json
# Layer 5 LLM 시맨틱 분석 활성화 (로컬 Ollama 필요)
nuk analyze -p ./my-mcp-server -r ./rules --llm
# 다른 모델 사용
nuk analyze -p ./my-mcp-server -r ./rules --llm --llm-model gemma4:latest
# PDF 리포트 생성
nuk analyze -p ./my-mcp-server -r ./rules -f json > scan.json
python3 tools/nuk-report.py scan.json -o security-report.pdf
지원 언어: TypeScript, Python, Rust (3개). Go, Java, C# 등 미지원.
Runtime 분석: 정적 분석만 수행. 런타임 rug-pull, 실시간 injection 차단은 범위 밖.
Toxic Flow: read+send 조합을 INFO로 표시하지만, 실제 데이터 흐름 chain 분석은 미구현.
Template SQL: template literal 내 SQL injection 패턴의 일부 미탐지 (Recall 83.3%의 원인).
LLM 모드 속도: tool 30개 이상 서버에서 ~5분 소요 (gemma4:e2b, 4-concurrent).
nuk v0.1.0 · Built with Rust · 7,614 LOC · 42 tests
벤치마크 데이터: 2026-05-09 기준