Research — MCP Security Scoring Framework (MCP-SSF)

Pre-Plan-Recherche zu Phase 2 von _index. Vier parallele Tracks (Frameworks-Landscape, MCP-State-of-the-Art, Report-Konventionen, Tooling-Landscape). Quellen-belegt.

Bottom Line

Pivot. Der ursprüngliche Plan war „eigener MCP-Scanner + eigener Score”. Recherche zeigt:

  1. Scanner-Markt ist nicht mehr leer. invariantlabs/mcp-scan (Snyk-Akquise März 2026), Cisco mcp-scanner, AWS-Samples sample-mcp-security-scanner, makalin/SecureMCP, nostalgicskinco/mcp-security-scanner — 5-7 ernsthafte Optionen. Selbstbau eines Scanners ist Late-Mover ohne Differenzierung.
  2. OWASP MCP Top 10 existiert bereits (Phase 3 Beta, owasp.org/www-project-mcp-top-10). Eigene Risiko-Liste wäre Konkurrenz zu einem etablierten Brand. Stattdessen: zitieren und operationalisieren.
  3. Standard-Slot ist frei. Niemand published bisher (a) vergleichbare Score-Cards für MCPs, (b) öffentliche Methodologie-Dokumente im Mozilla-Observatory-Stil, (c) Trust-Badges mit Grade A-F. Das ist unser Slot.

Strategie revidiert: wir bauen kein neues Scanner-Tool, sondern:

  • (a) MCP-SSF Spec — Standard-Dokument (Englisch), publishable, zitierbar, alignt mit OWASP MCP Top 10
  • (b) /mcp-audit Skill (eigen) — orchestriert existierende Scanner (mcp-scan, gitleaks, semgrep, trivy, uv audit) + 4-5 eigene MCP-spezifische Checks → produziert MCP-SSF-Score-Card
  • (c) Public Repo + Dashboardagentic-ventures/mcp-security-audits mit Score-Card pro MCP, A-F-Grade, Sub-Scores, History, Re-Audit-Cadence

Das ist „Mozilla Observatory für MCPs” — wir setzen den Massstab, andere bewerten sich daran.


Track R1 — Audit-Frameworks-Landscape

Bewährte Vorbild-Strukturen:

FrameworkWas übernehmenWas weglassen
OWASP ASVS v5.0Categories × Controls × Levels-Skelett, V13 (API) + V14 (Config) als Vorbild280 Items zu schwer, V11 BizLogic/V12 File-Upload nicht MCP-relevant
OWASP LLM Top 10 2025LLM05 Improper Output Handling + LLM06 Excessive Agency als eigene KategorienLLM04 Data Poisoning + LLM08 Vector Weakness (Modell-Layer, nicht MCP-Layer)
OWASP MASVSProfile-Logik (L0/L1/L2/L3 je Deployment-Modus)R-Profil (Anti-Reverse-Engineering) irrelevant
CIS BenchmarksItem-Format Gold-Standard: Description/Rationale/Audit-Command/Remediation/ReferencesOS/Container-Lastigkeit
SLSA L1-L4Build/Signatur/Provenance als Sub-Score (eigene Subskala)nur Supply-Chain
NIST SP 800-218 SSDFRV-Group (Vuln-Response) für Disclosure-Kategoriezu Prozess-lastig, kein Tech-Konkret
ISO 27001 Annex A 2022Themen-Cluster, Mapping auf Tech-Controls (A.8.x)zu ISMS-Org-lastig
OpenSSF Best Practices BadgeTier-Mechanik passing/silver/gold als Public-Badgenur Self-Attestation, zu GitHub-zentrisch
OpenSSF ScorecardScore 0-10 pro automatisiertem Check + AggregateStark GitHub-Repo-Mechanik, MCP-Runtime fehlt
security.txt (RFC 9116)Pflicht-Check in jeder Auditrunde
CycloneDX / SPDXCycloneDX als Default für SBOM (Vuln-Tooling dominiert)SPDX nur für License-Compliance optional

Konkrete Empfehlungen für MCP-SSF v0.1:

  1. Profile-Modell (analog MASVS): P0 lokal-stdio · P1 lokal-HTTP · P2 hosted-oauth · P3 hosted-multi-tenant. Jeder MCP hat ein Profil, daran richten sich die Anforderungen aus.
  2. Item-Format (analog CIS): jeder Control hat id / title / rationale / audit / remediation / references / automatable-Felder. Automatable=true → vom /mcp-audit-Skill erfasst.
  3. Tier-Naming (Public): Bronze / Silver / Gold / Platinum (statt OpenSSF-Trio) — gibt Platz für „Platinum” als Enterprise-Marker, ohne L0/L1/L2 zu Verwirrungs-Vokabular zu machen.
  4. Supply-Chain als Sub-Score mit SLSA-Level-Mapping (B1-B4): pure Supply-Chain-Maturity separat ausweisen, weil das oft der Schwachpunkt ist.
  5. Max 60-80 Controls über 8 Kategorien — 2-4h durchlaufbar im tief-Modus, 30-60 min im schnell-Modus.

Track R2 — MCP-Security-State-of-the-Art

Realer Stand der Angriffs-Klassen 2025-2026, mit konkreten Vorfällen.

Angriffs-Klassen

1. Tool-Surface-Attacks (Tool-Manifest als Waffe)

  • Tool Poisoning (Invariant Labs, Apr 2025): boesartige Instructions im description-Feld. PoC whatsapp-takeover.py exfiltriert WhatsApp-History via parallel installiertem MCP. MCPTox-Benchmark: bis 72% Attack-Success-Rate.
  • Rug Pull / Silent Redefinition (CVE-2025-54136 „MCPoison”): Tool-Definition ändert sich nach User-Approval, Client re-prompted nicht. Postmark-MCP-Vorfall Sep 2025 — npm-Package BCC’te wochenlang alle Mails an Attacker.
  • Tool Squatting / Shadowing (ETDI arxiv 2506.01333): mehrere MCPs mit ähnlichen Tool-Namen, LLM ruft den bösen Klon. Mitigation: signierte Manifeste, OAuth-Enhanced Tool Definitions.
  • Command-Injection in eigenem Tool-Body: figma-developer-mcp (CVE-2025-53967), serverless-mcp (CVE-2025-69256), Kanban-MCP (CVE-2025-53818), Anthropic git-MCP selbst (CVE-2025-68143/44/45). Pattern: LLM via Prompt-Injection tricked, schickt shell-Metachars in Argumenten.

2. Auth & Isolation (Multi-Tenant)

  • MCP-Spec 2025-06-18 zwingt OAuth 2.1 + PKCE + RFC 8707 Resource Indicators — trotzdem reale Lücken:
  • Confused Deputy: MCP hält Admin-PAT, akzeptiert User-Token ohne aud-Check.
  • Cross-Tenant-Subject-Spoofing: ohne Tenant-URI in aud liest Tenant-A-Token Tenant-B-Daten.
  • mcp-remote CVE-2025-6514: OS-Command-Injection über bösartige MCP-Server-URLs beim Connect.
  • Bitsight / AgentSeal-Scans: ~1.000 MCP-Server öffentlich ohne Auth; 66% von 1.808 gescannten MCPs hatten Findings.

3. Supply-Chain (Marketplace-Risiko)

  • Snyk ToxicSkills Feb 2026: 3.984 Claude-Skills gescannt — 36.82% mit Security-Flaws, 13.4% (534) kritisch, 76 mit echten Malicious-Payloads (Credential-Theft, Reverse-Shells). 1.467 distinct malicious Payloads. Prompt-Injection in 36% der Skills.
  • MCP-stdio Design-Flaw (Ox Security, Apr 2026): 200.000 MCP-Server exposed Command-Execution-Flaw den Anthropic als „Feature” deklariert.
  • Kein Manifest-Signing-Standard in MCP-Spec (Stand 2026-05). Update-Pflicht-Re-Approval fehlt.

4. Prompt-Injection-Vektoren (CyberArk „Poison Everywhere”)

  • Tool-Description (Install-Time, persistent)
  • Tool-Output (Runtime, ephemer) — Antwort eines MCP-Tools enthält Attacker-Content (Email-Body, Issue-Comment, PDF), hijackt den nächsten Agent-Turn.
  • Resource-Content — MCP-resources/-Mechanismus serviert Files ungefiltert in Context.

5. Privacy / Data-Exfiltration

  • Simon Willisons Lethal Trifecta (Jun 2025): private Daten + untrusted Content + Egress in einer Session = Exfil-garantiert. MCP bündelt diese Trifecta per Design.
  • WhatsApp-MCP-Hijack: Exfil via WhatsApp selbst — bypassed DLP weil’s wie legit Agent-Verhalten aussieht. E2EE irrelevant.
  • GitHub-MCP-Leak (UpGuard): Issue im public-Repo triggert Agent, der private-Repo-Code via Markdown-Image-URL exfiltriert.
  • Prompt-Cache-Privacy (arxiv 2502.07776 Feb 2025): 5 Provider hatten global-cache-sharing, fixed nach Disclosure. Anthropic dokumentiert Cache-Sharing-Level nicht klar.

6. Operational (DoS, Cost-Bombs)

  • Stealthy Resource Amplification (arxiv 2601.10955): MCTS-optimierte Tool-Description-Edits steuern Agents in prolonged Tool-Chains. Bis 658× Cost-Increase pro Query, >60k Token-Trajectories. Standard-Filter erkennen nichts.

Was MCP-SSF abdecken muss, das OWASP-LLM-Top-10 NICHT hat

  • Tool-Description-Diff-Tracking (Rug-Pull-Detection, signed Manifests, Re-Approval-Pflicht)
  • Tool-Shadow-Detection über mehrere installierte MCPs
  • Lethal-Trifecta-Audit als Composite-Check (private-Tool + untrusted-Source-Tool + Egress-Tool gleichzeitig erreichbar?)
  • Audience-Claim-Validation mit Tenant-URI (RFC 8707)
  • Token-Passthrough-Verbot zu upstream-APIs
  • MCP-Gateway-Cost-Gate (TPM + Trajectory-Length-Limits)
  • Skill/MCP-Marketplace-Provenance (Snyk-ToxicSkills-Baseline)
  • Resource-Content-Tainting (MCP-Resources als untrusted markieren, Taint-Tracking)
  • stdio-Transport-Hardening (sandboxed Process-Boundary)
  • Cache-Sharing-Disclosure-Pflicht

OWASP-LLM-Top-10 deckt Modell-Ebene ab — die MCP-Schicht zwischen Modell und Tool ist die offene Flanke. Hier muss MCP-SSF Tiefe liefern.


Track R3 — Report + Trust-Badge-Konventionen

Audit-Report-Format (Hybrid Cure53 + Trail of Bits)

Pflicht-Sections:

  1. Cover + Metadata (Datum, Auditors, Version, Target-SHA)
  2. Executive Summary (1-2 Seiten)
  3. Scope (was ist in, was OUT-OF-SCOPE — explizit)
  4. Methodology (Manual Review + Tool-Liste + Threat-Model)
  5. Findings (priorisiert, durchnummeriert, ID-Schema)
  6. Hardening Recommendations (separate Liste, KEINE Findings)
  7. Conclusion + Re-Test-Empfehlung
  8. Appendix (Tools, References, Re-Audit-Diff)

Finding-Struktur (universell):

  • ID + Titel + Severity-Badge
  • Description (was technisch)
  • Impact (was kann Angreifer erreichen)
  • Location (File:Line oder Endpoint)
  • Reproduction Steps / PoC
  • Recommendation (Remediation)
  • Status (Open / Fixed / Acknowledged / Won’t Fix)

Severity-Wahl: 4-Stufen Critical / High / Medium / Low + separate Hardening-Section (nicht „Informational” nennen, wird ignoriert). Optional Severity × Difficulty-Matrix wie Trail of Bits, weil CVSS bei MCP-Audits oft schlecht passt.

Findings-ID-Schema: MCP-SSF-<jahr>-<target-slug>-NN. Stabil über Re-Audits, zitierbar.

Trust-Badge-Konventionen

AnbieterPatternWas übernehmen
Mozilla ObservatoryGrade A+/A/B/…/F + Number 0-135 + Sub-ScoresA-F + Number 0-100 parallel — Grade für Laien, Number für Profis
SSL LabsGrade A+/A/…/F + Methodology-PDFPublic Methodology-Dokument verbindlich
securityheaders.comGrade A+/A/…/F + Letzter-Scan-TimestampLast-Audit-Date prominent
Snyk AdvisorHealth-Score 0-100 + Tier-LabelHealth-Score-Cards-UI als Inspiration
OpenSSF Best Practices Badgepassing/silver/gold + Kriterien publicTier-Mechanik (aber Vier-Tier-Variante: Bronze/Silver/Gold/Platinum)
OpenSSF ScorecardNumber 0-10 + Per-Check Details + GH ActionNumber-Score auf 0-100-Range skalieren für Konsistenz
Sigstore/in-totoBinary signed/verified + Provenance-LinkProvenance-Anker bei Supply-Chain-Sub-Score

Adoption-Hebel (was diese Badges erfolgreich macht):

  • A-F Grade + Number parallel
  • Last-Audit-Date prominent
  • Methodik 100% public
  • Re-Test-Button (low friction → hohe Adoption)
  • Sub-Scores damit Schwächen sichtbar werden

Konkrete Empfehlungen

  1. Report-Stil: Cure53/ToB-Hybrid. Executive Summary + Miscellaneous-Section (Cure53), Severity × Difficulty (ToB).
  2. Findings-ID: MCP-SSF-2026-papierkram-01 (Jahr-Target-NN).
  3. Severity: 4 Stufen, plus separater Hardening-Block.
  4. Badge: Grade A-F + Number 0-100 + Sub-Scores pro Kategorie. Tier-Label nur als Marketing-Aussage on top („dieser MCP ist MCP-SSF Gold”).
  5. Methodology-Page öffentlich auf agenticventures.de — komplettes Kriterien-Set, Gewichtung, Beispiel-Reports. Ohne das ist das Dashboard wertlos.
  6. Last-Audit-Date + Re-Audit-Policy (12 Monate Gültigkeit, danach grau-Färbung) auf jedem Badge.

Track R4 — MCP-Audit-Tooling-Landscape

MCP-spezifische Tools (jung, ~5-7 Optionen)

ToolWasStatusOutputWrappen?
invariantlabs/mcp-scan (jetzt Snyk Agent-Scan)Tool Poisoning + Rug-Pull + Tool-Shadow + Runtime-Proxyaktiv, Apache-2.0, Snyk-akquiriert 2026JSON, CLIErste Wahluvx mcp-scan
cisco-ai-defense/mcp-scannerYARA-Rules + LLM-as-judge + Cisco AI-Defense Inspectaktiv, Apache-2.0JSONOptional — Cisco-API nötig
aws-samples/sample-mcp-security-scannerAuth-Gaps, MCP-Spec-ComplianceaktivJSONInspiration
nostalgicskinco/mcp-security-scannerPath-Traversal, Auth-Gaps, Prompt-Injection-SurfaceaktivSARIFCode-Scanning-ready
makalin/SecureMCPOAuth-Token-Leak, Prompt-Injection, Rogue-MCPaktivJSONOptional
ModelContextProtocol-Security/mcpserver-auditSource-Code-Audit-Tutor (CSA + AIVSS-Score)aktiv, betaMarkdownInspiration für Methodology
OWASP MCP Top 10Risk-Framework MCP01-MCP10aktiv, Phase-3-BetaDokuPflicht-Mapping

Generische Security-Tools (Best-of-Breed 2026)

  • Secrets: gitleaks (pre-commit/CI, Regex, SARIF) + trufflehog (CI quarterly mit Live-Verifikation).
  • Python-Deps: uv audit (uv 0.10.12+, OSV-DB, ms-schnell) primary, pip-audit Fallback, osv-scanner für Mono-Repo.
  • SAST: semgrep (LGPL-2.1, polyglot, SARIF) als Default + Custom MCP-Ruleset als unser Hebel. bandit als Vertiefung wenn nötig.
  • SBOM/Container: trivy als All-in-One (SBOM + Vuln + Misconfig + Secrets + License, SARIF nativ). syft + grype + cosign attest für Release-Artefakte.
  • LLM-Security: promptfoo (OpenAI-owned seit 3/2026) für Tool-Description-Tests. garak (NVIDIA) für Modell-Layer Red-Teaming — hat offenes Issue #1639 für OWASP-MCP-Top-10-Coverage.
  • Attestation: GitHub Artifact Attestations (actions/attest-build-provenance) → out-of-the-box SLSA B2, mit attest-sbom → B3.

Build-vs-Buy

Wrappen (7 Tools, alle SARIF-fähig oder JSON):

  1. gitleaks — Secrets pre-commit + CI
  2. trufflehog — Secrets mit Live-Verification (deep)
  3. uv audit (Fallback pip-audit) — Python-Deps via OSV
  4. semgrep --config=auto + custom MCP-Ruleset — SAST polyglot
  5. trivy fs + trivy image — Container, FS, SBOM-Gen
  6. uvx mcp-scan@latest — MCP-spezifische statische + dynamische Checks
  7. promptfoo redteam run — LLM-Layer Red-Teaming (optional, slow)

Selbst bauen (4-5 Checks, das ist unser Diff):

  1. MCP-Tool-Surface-Inventory — Snapshot der @mcp.tool-Liste + Diff gegen Vortags-Hash (Rug-Pull-Detection ohne externen Service)
  2. Raw-Tool-Detection + Schema-Validation — AST-Scan auf @mcp.tool() mit dict-Input ohne Pydantic-Schema, Raw-Tools-Surface
  3. Bind-Address + Auth-Sanity — grep auf host="0.0.0.0", fehlende Auth-Provider-Konfiguration
  4. DSGVO-Klassifikation — Frontmatter-Scan + custom Semgrep-Rules für PII-Logging
  5. Custom Semgrep-Ruleset mcp-eigenbau.yml — FastMCP-Anti-Patterns aus mcp-best-practices

/mcp-audit Skill-Architektur-Skizze

1. Discovery
   - Target identifizieren (repo-root / mcp-name aus _index.md)
   - Profil auswählen: P0-P3 (siehe MCP-SSF Profile)
   - Modus: schnell / tief

2. Parallel-Spawn (alle Tools schreiben SARIF/JSON in /tmp/mcp-audit-<ts>/)
   - gitleaks, trufflehog, uv audit, semgrep, trivy fs, mcp-scan
   - Custom-Checks (Python-Module aus capabilities/skills/security-audit/checks/)

3. Normalisierung
   - SARIF-Merge via sarif-multitool oder custom Python (sarif-om Lib)
   - Severity-Mapping auf MCP-SSF-Skala (Critical/High/Med/Low/Hardening)
   - Dedup über (rule_id, location, message-hash)

4. Scoring
   - OWASP-MCP-Top-10-Mapping pro Finding
   - MCP-SSF-Score 0-100 (Aggregate + Sub-Scores pro Kategorie)
   - Grade A-F + Tier (Bronze/Silver/Gold/Platinum)
   - Gate: Score < 70 → Exit-Code 1 (Pipeline-Stop)

5. Report
   - SARIF gesamt → GitHub Code-Scanning Upload (optional)
   - Markdown → intern/runs/<ts>-audit-<target>/report.md
   - Public-Report-Variante (englisch) → extern/outbound/security-audits/<target>/<date>.md
   - Dashboard-Data → mcp-security-audits/data/scores.csv (1 Row pro MCP × Audit)

Kernidee: wir bauen den Orchestrator + die 4-5 MCP-spezifischen Checks, alles andere ist subprocess-Wrapper mit normalisiertem SARIF. Pflege-Aufwand bleibt beim Custom-Semgrep-Ruleset.


Konkrete nächste Schritte (Phase 2 Roadmap)

Reihenfolge zur Diskussion. Aufwand-Schätzung in halbtagen.

#SchrittAufwandOutput
2.1MCP-SSF v0.1 Spec schreiben (Englisch, ~30 Seiten Markdown) — Profile-Modell P0-P3, ~8 Kategorien, 60-80 Controls im CIS-Format, Scoring-Algorithmus, Tier-Mapping2-3 halbtageframework/mcp-ssf-v0.1.md + framework/controls/*.md
2.2Mapping auf OWASP MCP Top 10 — Crossref jede MCP-SSF-Control auf OWASP-MCP-ID, damit wir nicht parallel-konkurrieren0.5 halbtagframework/mappings/owasp-mcp-top-10.md
2.3/mcp-audit Skill bauen — Orchestrator-Python, Subprocess-Wrapper für 7 Tools, 4-5 Custom-Checks, SARIF-Merge, Scoring3-4 halbtageintern/capabilities/skills/mcp-audit/SKILL.md + checks/*.py
2.4Pilot-Re-Audit mcp-papierkram mit neuem Framework + Skill — kalibriert die Bewertung, validiert Methodik1 halbtagrevised 2026-05-papierkram-audit-raw.md
2.5Public-Repo + Dashboard-Skelettagentic-ventures/mcp-security-audits (GitHub) anlegen, Hugo-Site audits.agenticventures.de, Score-Card-Page-Template2 halbtagePublic-Repo + statisches Dashboard
2.6Methodology-Page auf agenticventures.de — Public-Erklärung des Frameworks, Beispiel-Report, Re-Audit-Politik1 halbtagav-website/content/security-audits/methodology.md

Gesamtaufwand Phase 2: ~10-12 halbtage (5-6 Volltage), gestreckt auf 2-3 Wochen.

Phase 3 (Re-Audit mcp-whatsapp + mcp-vf-hosted) und Phase 4 (Public-Launch zum EU-AI-Act-Stichtag 2026-08-02) bauen darauf auf.


Sprache

  • Framework-Spec + Public-Reports + Dashboard + Methodology-Page: Englisch.
  • Vault, intern, Code-Kommentare: deutsch wie immer.
  • Custom-Semgrep-Rules + Tool-Descriptions: englisch (LLM-Sprache, Cross-Repo-Reuse).

Quellen (Top-Auswahl)

Frameworks

MCP-Security

Report-Konventionen

Tooling