Communitygithub.com

Auditieren von MCP-Servern auf Tool-Poisoning

Auditiert MCP-Server auf Tool-Poisoning, Tool-Shadowing, Rug Pulls, SSRF und ungeschützte Offenlegung mittels Invariant Labs.

Was ist Auditieren von MCP-Servern auf Tool-Poisoning?

Dieses Skill auditiert MCP-Server umfassend auf Sicherheitsrisiken wie Tool-Poisoning (OWASP MCP03:2025), Tool-Shadowing, Rug Pulls, SSRF und unauthentifizierte Exposition. Tool-Poisoning ist eine indirekte Prompt-Injection über die Lieferkette, bei der ein bösartiger Server verborgene Anweisungen in Tool-Beschreibungen einbettet, die das LLM des Agenten unbemerkt ausführt. Das Skill verwendet Invariant Labs' mcp-scan für statische und Laufzeitanalyse, manuelle SSRF-Tests und Tool-Hash-Pinning zur Erkennung von Rug Pulls. Es ist geeignet für CI/CD-Gates, Sicherheitsüberprüfungen vor der Integration neuer MCP-Server in Claude Desktop, Cursor, VS Code oder Windsurf sowie für die Reaktion auf Vorfälle, bei denen ein Agent unerwartete Aktionen gezeigt hat. Die Prüfung erfolgt durch Scannen der MCP-Konfigurationen, Inspizieren von Tool-Beschreibungen auf versteckte Anweisungen, Pinnen von Tool-Hashes, programmatisches Enumerieren von Tools via MCP SDK, Testen von URL-fetching Tools auf SSRF, Überprüfen der Authentifizierung und Netzwerkexposition sowie optionales Aktivieren des mcp-scan Proxys für kontinuierlichen Schutz. Die Ergebnisse werden in MITRE ATLAS und OWASP MCP referenziert.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor✓Windsurf
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-mcp-servers-for-tool-poisoning

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Auditing von MCP-Servern auf Tool-Poisoning

Hinweis zur ausschließlichen autorisierten Nutzung: Das AudiTTieren von MCP-Servern kann eine Verbindung zu Live-Tool-Endpunkten herstellen und diese untersuchen. Scannen Sie nur Server, die Sie besitzen oder zu deren Prüfung Sie autorisiert sind. Behandeln Sie gescannte Tool-Beschreibungen als nicht vertrauenswürdige Eingabe – laden Sie keinen ungeprüften MCP-Server in einen privilegierten Agenten. Das Testen von Drittanbieter-MCP-Endpunkten auf SSRF- oder Authentifizierungsschwächen ohne Erlaubnis kann illegal sein.

Übersicht

Das Model Context Protocol (MCP) ermöglicht es KI-Agenten, von MCP-Servern beworbene externe Tools zu entdecken und aufzurufen. Jedes Tool gibt einen Namen und eine Beschreibung in natürlicher Sprache frei, die das LLM des Agenten liest, bevor es entscheidet, das Tool aufzurufen. Anfang 2025 legte Invariant Labs offen, dass dieses Beschreibungsfeld eine Angriffsfläche darstellt: Ein bösartiger Server kann versteckte Anweisungen in die Beschreibung eines Tools einbetten (ein Tool-Poisoning-Angriff, OWASP MCP03:2025), und ein fähiges Modell wird diesen stillschweigend folgen – Dateien exfiltrieren, Geheimnisse preisgeben oder Tool-Aufrufe umleiten – während es eine normal aussehende Antwort an den Benutzer zurückgibt. Da Tool-Beschreibungen in den Kontext des Agenten geladen werden, ist Tool-Poisoning effektiv eine indirekte Prompt-Injection über die Lieferkette (MITRE ATLAS AML.T0010 Kompromittierung der ML-Lieferkette).

Neben Poisoning führen MCP-Server klassische Infrastrukturrisiken ein: Tool-Shadowing (ein bösartiger Server überschreibt das Verhalten eines vertrauenswürdigen Tools), Rug Pulls (die Beschreibung eines Tools ändert sich nach der Genehmigung durch den Benutzer), toxische Abläufe (eine Kombination von Tools, die Datenexfiltration ermöglicht), SSRF in Tools, die serverseitig URLs abrufen, und unauthentifizierte Offenlegung von MCP-Servern, die an Netzwerkschnittstellen gebunden sind. Dieses Skill auditiert MCP-Server End-to-End mit Invariant Labs' mcp-scan für statische und Laufzeitanalyse, plus manuelle Prüfungen auf SSRF und Authentifizierung sowie Tool-Pinning, um Rug Pulls zu erkennen.

Wann verwenden

  • Bevor ein neuer MCP-Server zu einem Agentenstack hinzugefügt wird (Claude Desktop, Cursor, VS Code, Windsurf, benutzerdefinierte Agenten).
  • Während einer Sicherheitsüberprüfung eines intern entwickelten MCP-Servers.
  • Bei der Validierung, dass genehmigte Tools sich nicht stillschweigend geändert haben (Rug-Pull-Erkennung).
  • Als CI/CD-Gate, das MCP-Konfigurationen und SKILL-/Tool-Definitionen bei jeder Änderung scannt.
  • Während der Reaktion auf Vorfälle, wenn ein Agent unerwartete Aktionen ausgeführt hat, die mit einem vergifteten Tool vereinbar sind.

Voraussetzungen

  • Python 3.10+ und uv (für uvx) oder pip.
  • Die MCP-Konfigurationsdatei(en), die Sie scannen möchten (z. B. ~/.cursor/mcp.json, ~/.vscode/mcp.json, Claude Desktop-Konfiguration).
  • Installieren Sie die Werkzeuge:
# uv stellt uvx bereit (empfohlener Ausführer für mcp-scan)
curl -LsSf https://astral.sh/uv/install.sh | sh    # oder: pipx install uv

# mcp-scan (Invariant Labs) – keine globale Installation mit uvx erforderlich
uvx mcp-scan@latest --help

# Für den Laufzeit-Proxymodus (separates Extra)
uvx --with "mcp-scan[proxy]" mcp-scan@latest proxy --help

# Helfer für manuelle Prüfung
pip install requests mcp

Ziele

  • Alle installierten MCP-Server statisch auf Tool-Poisoning, Shadowing, Rug Pulls und toxische Abläufe scannen.
  • Rohe Tool-/Prompt-/Ressourcenbeschreibungen auf versteckte oder verschleierte Anweisungen inspizieren.
  • Tool-Hashes pinnen, um nach Genehmigung vorgenommene Beschreibungsänderungen zu erkennen (Rug-Pull-Abwehr).
  • URL-abrufende Tools auf Server-Side Request Forgery (SSRF) testen.
  • Sicherstellen, dass MCP-Server authentifiziert sind und nicht auf nicht vertrauenswürdigen Schnittstellen offengelegt werden.
  • Optional Laufzeit-Schutzmaßnahmen mit dem mcp-scan-Proxy durchsetzen.

MITRE ATT&CK-Zuordnung

IDOffizieller NameBedeutung
AML.T0010Kompromittierung der ML-LieferketteEin vergifteter Drittanbieter-MCP-Server ist eine Lieferkettenkompromittierung des Agenten
AML.T0051.001LLM Prompt Injection: IndirektVergiftete Tool-Beschreibungen sind indirekte Injektion in den Agentenkontext
AML.T0053LLM-Plugin-KompromittierungMCP-Tools sind die Plugins des Agenten; Poisoning kompromittiert sie
AML.T0057LLM-DatenleckHäufige Nutzlast eines vergifteten Tools: Exfiltration von Dateien/Geheimnissen

Arbeitsablauf

1. Statischer Scan installierter MCP-Konfigurationen

mcp-scan erkennt bekannte Konfigurationsorte automatisch; Sie können auch einen Pfad explizit übergeben.

# Alle automatisch erkannten MCP-Konfigurationen scannen
uvx mcp-scan@latest

# Eine bestimmte Konfigurationsdatei scannen
uvx mcp-scan@latest ~/.vscode/mcp.json

# Maschinenlesbares JSON für CI ausgeben
uvx mcp-scan@latest --json ~/.cursor/mcp.json > mcp_scan_report.json

mcp-scan kennzeichnet Tool-Poisoning, Tool-Shadowing, Cross-Origin-Eskalation, Rug Pulls und toxische Abläufe.

2. Rohe Tool-Beschreibungen inspizieren

Geben Sie jede Tool-/Prompt-/Ressourcenbeschreibung ohne Verifikation aus und lesen Sie sie dann auf versteckte Anweisungen, <important>-artige Blöcke oder imperative Texte, die auf das Modell abzielen.

uvx mcp-scan@latest inspect ~/.cursor/mcp.json

Achten Sie auf Warnsignale: Anweisungen an den Assistenten („Sag dem Benutzer nichts“, „Lese ~/.ssh/id_rsa“), verschachtelte gefälschte Dokumentation, Nullbreiten-/Unicode-geschmuggelte Texte oder Anweisungen, andere Tools aufzurufen.

3. Tool-Hashes pinnen, um Rug Pulls zu erkennen

mcp-scan verfolgt Hashes von Tool-Beschreibungen, sodass eine spätere stillschweigende Änderung markiert wird. Führen Sie Scans regelmäßig durch; eine Hash-Diskrepanz bei einem zuvor genehmigten Tool deutet auf einen Rug Pull hin.

# Regelmäßig erneut ausführen; mcp-scan meldet geänderte Tool-Hashes seit der letzten Genehmigung
uvx mcp-scan@latest ~/.cursor/mcp.json

4. Tools programmatisch auflisten und Metadaten prüfen

Stellen Sie mit dem offiziellen MCP SDK eine Verbindung zum Server her und inspizieren Sie das beworbene Schema direkt.

# enumerate_tools.py (Beispiel für einen Stdio-MCP-Server)
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    params = StdioServerParameters(command="node", args=["./suspect-mcp-server.js"])
    async with stdio_client(params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            for t in tools.tools:
                print(f"{t.name}: {len(t.description or '')} Zeichen")
                print((t.description or "")[:400])

asyncio.run(main())

5. URL-abrufende Tools auf SSRF testen

Wenn ein Tool eine URL akzeptiert und serverseitig abruft, versuchen Sie, interne Metadaten-/Loopback-Ziele zu erreichen (nur auf Systemen, die Sie besitzen).

# ssrf_probe.py
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

SSRF_TARGETS = [
    "http://169.254.169.254/latest/meta-data/",   # AWS IMDS
    "http://127.0.0.1:22/", "http://localhost:6379/", "file:///etc/passwd",
]

async def main():
    params = StdioServerParameters(command="node", args=["./suspect-mcp-server.js"])
    async with stdio_client(params) as (r, w):
        async with ClientSession(r, w) as s:
            await s.initialize()
            for url in SSRF_TARGETS:
                res = await s.call_tool("fetch_url", {"url": url})
                body = str(res.content)[:200]
                print(f"[SSRF?] {url} -> {body}")

asyncio.run(main())

6. Authentifizierung und Netzwerkexposition überprüfen

Stellen Sie sicher, dass entfernte MCP-Server (HTTP/SSE-Transport) eine Authentifizierung erfordern und nicht an 0.0.0.0 in nicht vertrauenswürdigen Netzwerken gebunden sind.

# Bestätigen, ob ein SSE/HTTP-MCP-Endpunkt ohne Anmeldeinformationen antwortet
curl -s -i http://mcp-host:8000/sse | head -n 20

# Überprüfen Sie die Lauschschnittstellen eines lokal laufenden MCP-Servers
ss -tlnp | grep -E ':(8000|3000|6277)'

Ein MCP-Endpunkt, der Tool-Auflistungen zurückgibt oder tools/call ohne Authentifizierung akzeptiert, ist eine unauthentifizierte Offenlegung – beheben Sie dies mit einem Token/OAuth und binden Sie es an localhost oder ein authentifiziertes Gateway.

7. Laufzeit-Schutzmaßnahmen durchsetzen (optional)

Leiten Sie für kontinuierlichen Schutz den MCP-Datenverkehr des Agenten über den mcp-scan-Proxy, der Tool-Aufrufe, Datenflussbeschränkungen, PII und indirekte Injektion in Echtzeit prüft.

uvx --with "mcp-scan[proxy]" mcp-scan@latest proxy

8. Ergebnisse dokumentieren

Dokumentieren Sie jeden Befund mit Server, Tool, Beweis (die vergiftete Beschreibung / SSRF-Antwort / unauthorisierte Auflistung), Schweregrad und ATLAS-Zuordnung. Empfehlen Sie, vergiftete Server zu entfernen oder in einer Sandbox zu isolieren, Authentifizierung hinzuzufügen, genehmigte Tools zu pinnen und den Proxy zu aktivieren.

Tools und Ressourcen

ToolZweckQuelle
mcp-scanStatischer + Laufzeit-MCP-Sicherheitsscannerhttps://github.com/invariantlabs-ai/mcp-scan
MCP Python SDKProgrammgesteuerte Tool-Aufzählung / -Aufrufehttps://github.com/modelcontextprotocol/python-sdk
OWASP MCP Top 10MCP-Risikoreferenz (MCP03 Tool-Poisoning)https://owasp.org/www-project-mcp-top-10/
Invariant Labs BlogOffenlegung von Tool-Poisoninghttps://invariantlabs.ai/blog/introducing-mcp-scan
MITRE ATLASTaxonomie von KI-Bedrohungstechnikenhttps://atlas.mitre.org/

MCP-Bedrohungsreferenz

BedrohungBeschreibungErkennung
Tool-PoisoningVersteckte Anweisungen in der Tool-Beschreibungmcp-scan scan / inspect
Tool-ShadowingBösartiger Server überschreibt vertrauenswürdiges Toolmcp-scan Cross-Origin-Prüfungen
Rug PullBeschreibungsänderung nach Genehmigungmcp-scan Tool-Pinning (Hash)
Toxischer AblaufTool-Kombination ermöglicht Exfiltrationmcp-scan Analyse toxischer Abläufe
SSRFURL-abrufendes Tool erreicht interne Zielessrf_probe gegen eigenen Server
Unauth. OffenlegungMCP-Endpunkt ohne Authentifizierungcurl/ss-Schnittstelle und Authentifizierungsprüfung

Validierungskriterien

  • Alle installierten MCP-Konfigurationen statisch mit mcp-scan gescannt
  • Rohe Tool-/Prompt-/Ressourcenbeschreibungen auf versteckte Anweisungen inspiziert
  • Tool-Hashes gepinnt und Rug-Pull-Erkennung aktiviert
  • Tools programmatisch über das MCP SDK aufgelistet
  • URL-abrufende Tools auf SSRF gegen eigene Ziele getestet
  • Authentifizierung und Netzwerkexposition entfernter Server überprüft
  • Laufzeit-Proxy-Schutzmaßnahmen bewertet oder gegebenenfalls bereitgestellt
  • Befunde MITRE ATLAS AML.T0010 und OWASP MCP03:2025 zugeordnet
  • Schweregrad zugewiesen und Behebung für jeden Befund dokumentiert
  • Erneuter Scan geplant, um zukünftige Rug Pulls zu erkennen

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Verwandte Skills