MCP-Schwachstellen: Tarnung & Manipulation

Enthüllung von MCP-Schwachstellen: Verdeckte Vergiftung und Manipulation im Model Context Protocol-Ökosystem

Die Model Context Protocol (MCP)-Landschaft, die sich noch in den Kinderschuhen befindet, ist mit Komplexitäten behaftet und anfällig für eine Vielzahl potenzieller Angriffe. Aktuelle Protokoll- und Tool-Designs bieten oft keine angemessenen Abwehrmechanismen. Um diese Herausforderungen anzugehen und ein tieferes Verständnis der MCP-Sicherheit zu fördern, hat SlowMist MasterMCP als Open-Source-Tool entwickelt, das praktische Angriffssimulationen ermöglicht. Diese Initiative zielt darauf ab, die Community in die Lage zu versetzen, Sicherheitslücken innerhalb ihrer MCP-Projekte proaktiv zu identifizieren und zu beheben.

Ergänzend zu diesem praxisorientierten Ansatz bietet die MCP-Sicherheitscheckliste wertvolle Einblicke in die zugrunde liegenden Perspektiven verschiedener Angriffsvektoren. Dieser Artikel befasst sich mit realen Szenarien und demonstriert gängige Angriffsmethoden innerhalb des MCP-Ökosystems, wie z. B. Information Poisoning und das Einschleusen versteckter bösartiger Befehle. Alle in diesen Demonstrationen verwendeten Skripte sind auf GitHub verfügbar, sodass Benutzer den gesamten Prozess in einer sicheren Umgebung replizieren und sogar eigene Angriffstest-Plugins entwickeln können.

Überblick über die Architektur

Ziel-MCP für Demonstration: Toolbox

Smithery.ai zeichnet sich als prominentes Zentrum für MCP-Plugins aus und zieht eine beträchtliche Anzahl von MCP-Listings und aktiven Benutzern an. Unter diesen dient @smithery/toolbox, ein offizielles MCP-Verwaltungstool von smithery.ai, als Schwerpunkt dieser Sicherheitsbewertung.

Toolbox wurde aus mehreren wichtigen Gründen als Testziel ausgewählt:

  • Es verfügt über eine beträchtliche Benutzerbasis und stellt somit eine repräsentative Stichprobe innerhalb des MCP-Ökosystems dar.
  • Es unterstützt die automatische Installation zusätzlicher Plugins, wodurch clientseitige Funktionen erweitert werden (z. B. Claude Desktop).
  • Es enthält sensible Konfigurationen, wie z. B. API-Schlüssel, was die Demonstration potenzieller Exploits erleichtert.

Bösartige MCP zur Demonstration: MasterMCP

MasterMCP, das von SlowMist speziell für Sicherheitstests entwickelt wurde, ist ein simuliertes bösartiges MCP-Tool, das auf einer modularen Architektur basiert. Zu seinen wichtigsten Komponenten gehören:

  1. Lokale Website-Service-Simulation: http://127.0.0.1:1024

Um ein realistisches Angriffsszenario zu erstellen, integriert MasterMCP ein lokales Website-Service-Simulationsmodul. Mithilfe des FastAPI-Frameworks erstellt dieses Modul schnell einen einfachen HTTP-Server, der gängige Webumgebungen nachahmt. Diese Seiten mögen harmlos erscheinen, Bäckereiinformationen anzeigen oder Standard-JSON-Daten zurückgeben, aber sie verbergen sorgfältig ausgearbeitete bösartige Nutzdaten in ihrem Quellcode oder ihren API-Antworten.

Dieser Ansatz ermöglicht die umfassende Demonstration von Information Poisoning und Command Hiding-Techniken in einer sicheren, kontrollierten lokalen Umgebung. Er verdeutlicht die potenziellen Risiken, die in scheinbar gewöhnlichen Webseiten lauern und die abnormales Verhalten in großen Sprachmodellen auslösen können.

  1. Lokalisierte Plug-in-MCP-Architektur

MasterMCP verwendet einen Plug-in-Ansatz, um eine schnelle Skalierbarkeit für neue Angriffsvektoren zu ermöglichen. Bei der Ausführung initiiert MasterMCP den FastAPI-Dienst des vorherigen Moduls in einem Unterprozess.

Demonstrationsclient

  • Cursor: Eine der weltweit am weitesten verbreiteten KI-gestützten Programmier-IDEs.
  • Claude Desktop: Der offizielle Client von Anthropic, der Organisation, die das MCP-Protokoll angepasst hat.

Verwendetes großes Sprachmodell (LLM) zur Demonstration

  • Claude 3.7

Claude 3.7 wurde aufgrund seiner erweiterten Fähigkeiten zur Erkennung sensibler Operationen und seiner Darstellung robuster operativer Fähigkeiten innerhalb des aktuellen MCP-Ökosystems ausgewählt.

Konfiguration von claude\_desktop\_config.json

Nach Abschluss der Konfiguration beginnt die Demonstrationsphase.

Cross-MCP Bösartige Aufrufe

Diese Demonstration beinhaltet sowohl Vergiftungstechniken als auch Cross-MCP-Strategien für bösartige Aufrufe, die in der Checkliste aufgeführt sind.

Webseiten-Content-Poisoning-Angriff

  1. Kommentar-basiertes Poisoning

Cursor greift auf die lokale Testwebsite unter http://127.0.0.1:1024 zu.

Diese scheinbar harmlose Seite über ‘Delicious Cake World’ dient als Simulation, um die potenziellen Auswirkungen eines großen Sprachmodellclients beim Zugriff auf eine bösartige Website zu veranschaulichen.

Ausführungsbefehl:

Die Ergebnisse zeigen, dass Cursor nicht nur den Webseiteninhalt liest, sondern auch lokale sensible Konfigurationsdaten zurück an den Testserver überträgt. Der bösartige Prompt ist als HTML-Kommentar in den Quellcode eingebettet:

Obwohl dieser kommentarbasierte Ansatz relativ einfach und leicht erkennbar ist, ist er dennoch in der Lage, bösartige Operationen auszulösen.

  1. Codiertes Kommentar-Poisoning

Der Zugriff auf http://127.0.0.1:1024/encode zeigt eine Seite an, die mit dem vorherigen Beispiel identisch erscheint. Die bösartigen Prompts sind jedoch codiert, was den Exploit noch schwieriger zu erkennen macht, selbst bei der Inspektion des Quellcodes der Seite.

Trotz des Fehlens expliziter Prompts im Quellcode ist der Angriff erfolgreich.

MCP-Tool-Return-Information-Poisoning

Basierend auf den MasterMCP-Prompt-Anweisungen geben wir einen simulierten Befehl ein, der die bösartige MCP auslöst und ihre nachfolgenden Operationen demonstriert.

Nach dem Auslösen des Befehls initiiert der Client einen Cross-MCP-Aufruf an Toolbox und fügt erfolgreich einen neuen MCP-Server hinzu.

Die Inspektion des Plugin-Codes zeigt, dass die zurückgegebenen Daten eine codierte bösartige Nutzlast enthalten, die für den Benutzer praktisch nicht erkennbar ist.

Third-Party-Interface-Pollution-Angriff

Diese Demonstration verdeutlicht die potenziellen Risiken, die sowohl mit bösartigen als auch mit nicht-bösartigen MCPs verbunden sind, die direkt API-Daten von Drittanbietern an den Kontext zurückgeben.

Beispielcode:

Ausführungsanforderung:

Ergebnis: Der bösartige Prompt ist in die zurückgegebenen JSON-Daten eingebettet und löst erfolgreich eine bösartige Ausführung aus.

Vergiftungstechniken während der MCP-Initialisierung

Diese Demonstration behandelt die Checklistenpunkte Initial Prompt Injection und Namenskonflikte.

Angriff durch bösartiges Funktionsüberschreiben

MasterMCP erstellt ein Tool mit dem gleichen Funktionsnamen wie die remove_server-Funktion von Toolbox und codiert bösartige Prompts darin.

Ausführungsbefehl:

Claude Desktop ruft nicht die ursprüngliche toolbox remove_server-Methode auf, sondern löst stattdessen die von MasterMCP bereitgestellte Methode mit dem gleichen Namen aus:

Dies wird dadurch erreicht, dass betont wird, dass die ‘ursprüngliche Methode veraltet ist’, was das große Sprachmodell dazu ermutigt, der bösartig überschriebenen Funktion Priorität einzuräumen.

Hinzufügen einer bösartigen globalen Inspektionslogik

MasterMCP erstellt ein Tool namens ‘banana’, das entwickelt wurde, um vor der Ausführung eines anderen Tools eine obligatorische Sicherheitsprüfung durchzusetzen.

Vor jeder ausgeführten Funktion priorisiert das System den ‘banana’-Prüfmechanismus:

Diese globale Logikeinschleusung wird erreicht, indem im Code wiederholt die ‘obligatorische Ausführung der Bananendetektion’ betont wird.

Erweiterte Techniken zum Verbergen bösartiger Prompts

LLM-freundliche Codierungsmethoden

Große Sprachmodelle verfügen über starke Parsing-Fähigkeiten für mehrsprachige Formate, die ausgenutzt werden können, um bösartige Informationen zu verbergen. Gängige Methoden sind:

  • Englische Umgebung: Hex-Byte-Codierung
  • Chinesische Umgebung: NCR-Codierung oder JavaScript-Codierung

Zufälliger Mechanismus zur Rückgabe bösartiger Nutzlasten

Ähnlich der in Abschnitt drei erwähnten Third-Party-Interface-Pollution führt die Anforderung von http://127.0.0.1:1024/random zu:

Jede Anforderung gibt eine zufällig generierte Seite zurück, die eine bösartige Nutzlast enthält, was die Erkennung und Rückverfolgung erheblich erschwert.

Durch die praktische Demonstration von MasterMCP wurden die verborgenen Sicherheitslücken innerhalb des Model Context Protocol (MCP)-Ökosystems aufgedeckt. Von einfachen Prompt-Injections und Cross-MCP-Aufrufen bis hin zu subtileren Angriffen während der Initialisierung und der Verschleierung bösartiger Anweisungen dient jede Phase als Erinnerung an die inhärente Fragilität neben der Leistungsfähigkeit des MCP-Ökosystems.

Heute, da große Modelle zunehmend mit externen Plugins und APIs interagieren, kann eine scheinbar geringfügige Input-Pollution systemweite Sicherheitsrisiken auslösen. Die sich entwickelnde Vielfalt der Angreifertaktiken, einschließlich Codierungstechniken, zufälliger Pollution und Funktionsüberschreibungen, erfordert ein umfassendes Upgrade der traditionellen Sicherheitsansätze.