In this article
Path-Traversal-Schwachstellen in Funktionshandlern von MCP-Servern verhindern
Das Model Context Protocol (MCP) gewinnt als standardisierte Möglichkeit für KI-Assistenten, mit externen Tools und Datenquellen zu interagieren, zunehmend an Bedeutung. Mit der wachsenden Verbreitung von MCP wird auch der Schutz von MCP-Servern vor potenziellen Schwachstellen immer wichtiger. Aktuelle MCP-Sicherheitsforschung von Raul Onitza-Klugman aus dem Snyk Security Research-Team hat die Risiken durch anfällige MCP-Server aufgezeigt und die Notwendigkeit robuster Sicherheitsmaßnahmen unterstrichen.
MCP und seine Auswirkungen auf die Sicherheit verstehen
Im Kern ist MCP ein offenes Protokoll, das externe Tools, Dienste oder Datenquellen mit großen Sprachmodellen (LLMs) verbindet. Es dient als Brücke zwischen KI-Anwendungen und den Ressourcen, auf die sie zugreifen müssen, etwa lokalen Datenbanken, APIs oder Befehlszeilentools.
MCP-Server stellen drei wichtige Funktionen bereit: Ressourcen, Tools und Prompts. Ressourcen sind lesbare Datenblöcke oder Dateien, die LLMs untersuchen können. Tools hingegen sind Funktionen oder Befehle, die LLMs ausführen können.
Die Sicherheit von MCP-Servern ist entscheidend, da sie häufig lokal auf dem Rechner eines Entwicklers ausgeführt werden, auf dem sich sensible Informationen wie API-Schlüssel, Zugangsdaten und geistiges Eigentum befinden können. Ein anfälliger MCP-Server kann als Angriffsvektor dienen und so zu Datenlecks, Codeausführung oder anderen schädlichen Aktivitäten führen.
Rauls oben erwähnte Forschung beschreibt, wie Angreifer einen AWS MCP Server und einen Markdown MCP Server ausnutzten, um mithilfe indirekter Prompt-Injection-Techniken Daten zu exfiltrieren und beliebige Befehle auszuführen. Das zeigt, wie ein schwaches Glied in der Kette – der Code des MCP-Servers – zum Einfallstor für erhebliche Datenpannen und Sicherheitsrisiken werden kann.
Ressourcen in MCP-Servern unsicher teilen
MCP-Serverressourcen ermöglichen es, Daten als schreibgeschützte Informationen bereitzustellen, die LLMs als Kontext nutzen können. Ein MCP-Server kann beispielsweise Datenbankeinträge, den Anwendungsstatus oder andere Text- und Binärdaten als Ressourcen definieren. Diese Ressourcen werden über eindeutige URIs identifiziert und verwenden häufig benutzerdefinierte Protokollschemata. Eine frühere Anleitung zum Erstellen von Node.js-MCP-Servern, die Ressourcen teilen bietet eine umfassende Einführung in die Implementierung von Ressourcen in MCP-Servern.
Unsicherer Code bei der Definition von MCP-Serverressourcen
Unsichere Programmierpraktiken bei der Definition von MCP-Serverressourcen können zu Path-Traversal-Schwachstellen führen. Eine Path-Traversal-Schwachstelle liegt vor, wenn ein Angreifer den Dateipfad manipulieren und so auf sensible Dateien oder Daten außerhalb des vorgesehenen Verzeichnisses zugreifen kann.
Dazu kann es kommen, wenn vom Benutzer bereitgestellte Eingaben nicht ordnungsgemäß bereinigt oder validiert werden. Das tritt leicht bei MCP-Serverressourcen auf, die den Zugriff auf Dateien auf der Festplatte ermöglichen, um deren Inhalt über den Funktionshandler einer bestimmten MCP-Serverressource zurückzugeben.
Sehen Sie sich das folgende anfällige Node.js-Codebeispiel an:
server.resource(
"pipeline-workflows",
new ResourceTemplate("pipeline-workflows://{name}", { list: undefined }),
async (uri, { name }) => {
const decodedName = decodeURIComponent(name);
let filePath = path.resolve(process.cwd(), '.github/workflows/', `${decodedName}.yaml`);
// check if filepath exists
if (!accessSync(filePath)) {
// then try without the .yaml suffix incase the user provided the full filename
filePath = path.resolve(process.cwd(), '.github/workflows/', decodedName);
}
if (accessSync(filePath)) {
let fileContents = '';
try {
fileContents = readFileSync(filePath, 'utf-8');
} catch (e) {
writeFileSync('/tmp/mcp_log.log', `ERROR READING FILE: ${e}\n`, { flag: 'a' });
}
return {
contents: [{
uri: uri.href,
text: fileContents
}]
};
}
}
);
const transport = new StdioServerTransport();
await server.connect(transport);In diesem Beispiel wird filePath mithilfe einer vom Benutzer bereitgestellten Eingabe (decodedName) erstellt. Kann ein Angreifer den Parameter „name“ manipulieren, kann er möglicherweise auf Dateien außerhalb des vorgesehenen Verzeichnisses zugreifen und dadurch sensible Daten offenlegen.
Sicherheitsrisiken durch Path-Traversal-Schwachstellen in MCP-Servern
Die Auswirkungen einer Path-Traversal-Schwachstelle in einem MCP-Server können erheblich sein. Ein Angreifer könnte auf sensible Dateien wie Konfigurationsdateien, SSH-Schlüssel oder andere vertrauliche Daten zugreifen. Dies könnte weitere Angriffe ermöglichen, etwa Codeausführung oder Datenexfiltration.
Path-Traversal-Schwachstellen erkennen und beheben
Snyk Code ist ein Static-Application-Security-Testing-Tool (SAST), mit dem sich Path-Traversal-Schwachstellen im Code von MCP-Servern erkennen und beheben lassen.
Sobald Sie die Snyk-Erweiterung für VS Code installieren, fungiert sie als statisches Code-Analyse-Plugin, ähnlich wie ESLint. Die Scans sind extrem schnell: Jedes Mal, wenn Sie den Inhalt einer Datei speichern, analysiert Snyk den Code auf potenzielle Sicherheitslücken.
Der folgende Screenshot zeigt, wie Snyk den Code des MCP-Servers für die Funktionsimplementierung von server.resource() (aus dem TypeScript Model Context Protocol SDK) nun in Zeile 140 hervorhebt. So wird deutlich, dass der Codepfad anfällig für einen Path-Traversal-Angriff wäre, wenn der Funktion solche gefährlichen Eingaben zugeführt würden.

Snyk beschleunigt die Behebung von Sicherheitsproblemen und steigert die Produktivität von Entwicklern direkt in ihren IDE-Workflows.
Noch besser: Snyk kann dieses Sicherheitsproblem auch beheben! Vielleicht ist Ihnen die Zeilenanmerkung „Dieses Problem beheben: Path Traversal“ aufgefallen. So sieht die automatische Fehlerbehebung durch Snyk in der Praxis aus:

So starten Sie mit Snyk Code
Holen Sie sich Ihr Snyk-IDE-Plugin – kostenlos!
Snyk Code nutzt eine fortschrittliche KI-gestützte Analyse (Symbolic AI), um potenzielle Sicherheitsprobleme im Code zu erkennen, darunter Path-Traversal-Schwachstellen. Wenn Sie Snyk Code in Ihren Entwicklungsworkflow integrieren, können Sie Sicherheitslücken proaktiv erkennen und beheben, bevor sie zum Problem werden.
Dieses Tool analysiert den Code Ihres MCP-Servers (oder beliebigen anderen Code, den Sie oder das LLM generieren) auf potenzielle Sicherheitsprobleme und liefert ausführliche Berichte und Empfehlungen zur Behebung. Es lässt sich in Ihre IDE oder CI/CD-Pipeline integrieren, sodass Sie Sicherheitsprobleme bereits früh im Entwicklungsprozess erkennen können.
Best Practices zum Absichern von MCP-Servern
Befolgen Sie diese Best Practices für sichere Programmierung, um Path-Traversal-Schwachstellen in MCP-Servern zu verhindern:
Validieren und bereinigen Sie vom Benutzer bereitgestellte Eingaben, damit keine schädlichen Daten zum Erstellen von Dateipfaden verwendet werden.
Erstellen Sie Pfade korrekt und verwenden Sie sichere Pfadkonventionen, um Path-Traversal-Angriffe zu verhindern (Orientierung bieten frühere CVEs wie files-bucket-server und static-dev-server).
Nutzen Sie bei der Definition von MCP-Serverressourcen sichere Programmierpraktiken, etwa Whitelisting und eine angemessene Fehlerbehandlung.
Integrieren Sie ein SAST-Tool wie Snyk Code in Ihren Entwicklungsworkflow, um potenzielle Sicherheitslücken zu erkennen und zu beheben.
Wie geht es mit der MCP-Sicherheit weiter?
Da MCP kontinuierlich weiterentwickelt wird, ist es wichtig, sich über potenzielle Sicherheitsrisiken und Best Practices zum Absichern von MCP-Servern auf dem Laufenden zu halten. Weitere Informationen finden Sie in den folgenden Ressourcen:
Angriffe auf MCP-Server mit Command-Injection-Schwachstellen
Snyk Learn-Kurs zu Path Traversal
Unterschätzen Sie Prompt-Injection-Angriffe nicht. Ich empfehle Ihnen dringend, nachzulesen, wie Prompt Injection PDF-Text ausnutzen und die Technik „LLM als Richter“ umgehen kann.
Wenn Sie der Sicherheit Priorität einräumen und Best Practices befolgen, können Sie die Integrität Ihrer MCP-Server gewährleisten und sie vor potenziellen Schwachstellen schützen.
Möchten Sie mehr über MCP-Scanning erfahren? Entdecken Sie noch heute Snyk Labs oder greifen Sie auf die MCP-Scan-Inkubation von Snyk und Invariant Labs zu.
Entdecken Sie Snyk Labs
Ihre Anlaufstelle für aktuelle Forschung und Experimente rund um KI-Sicherheit.