2 Security-MCP-Exposure
Forgeagent edited this page 2026-07-20 10:25:31 +02:00

MCP-Origin-, Authentisierungs- und Exposure-Modell

Sicherheitsgrenzen

Es existieren zwei getrennte Authentisierungsebenen:

Verbindung Mechanismus Zweck
MCP-Client → vorgeschalteter Reverse-Proxy vom Betreiber bereitgestellte Authentisierung Benutzer-/Clientzugang zum MCP-Endpunkt
private-proxy → Reverse Connector TLS-Serverprüfung plus private_proxy.shared_key als Bearer Maschinenzugang zum Tunnel

Der MCP-Prozess selbst implementiert derzeit keine Benutzeranmeldung und kein OAuth. Der Connector-Key darf niemals als MCP-Client-Token verwendet werden. private_proxy.identity ist nur ein nicht geheimes Log-Label.

Sichere Standardtopologie

mcp.listen_address ist standardmäßig 127.0.0.1:9334. Lokale Clients dürfen direkt zugreifen. Für Remote-Zugriff steht davor ein Reverse-Proxy, der TLS und Zugangskontrolle erzwingt und erst danach zu Port 9334 weiterleitet.

Eine Non-Loopback-Bindung wird beim Start abgelehnt, solange nicht gleichzeitig mcp.tls_terminated_by_proxy=true und mindestens eine exakte mcp.allowed_origins gesetzt sind. Diese Bestätigung konfiguriert selbst kein TLS und keine Authentisierung; sie dokumentiert eine vorhandene externe Sicherheitsgrenze.

Origin-Prüfung

  • Erlaubte Werte sind exakte absolute Origins aus Schema, Host und optionalem Port, ohne Pfad, Query, Fragment oder Wildcard.
  • Ein vorhandener ungültiger oder nicht erlaubter Origin wird mit HTTP 403 vor dem MCP SDK abgewiesen.
  • Ein fehlender Origin ist für nicht-browserbasierte MCP-Clients zulässig.
  • Origin-Prüfung begrenzt Browser-Cross-Origin-Zugriff, ist aber keine Authentisierung und keine Autorisierung.
  • Query-Strings und unbekannte Pfade werden mit 404 abgewiesen.

Die explizite Prüfung bleibt Anwendungscode, weil SDK-Security-Defaults sich zwischen Releases ändern können. Sie wird bei SDK-Upgrades getestet.

Forwarded-Header

Eingehende Forwarded- und X-Forwarded-*-Werte sind nicht vertrauenswürdig. Der aktuelle Listener verwendet sie nicht. mcp.trusted_proxy_cidrs validiert Konfiguration für eine spätere kontrollierte Auswertung, aktiviert heute aber keine implizite Headerauswertung. Der Edge-Proxy soll fremde Forwarded-Header immer entfernen und selbst neu setzen.

Protokoll- und Ressourcenbegrenzung

Nur MCP Streamable HTTP auf dem konfigurierten Endpoint ist registriert; der separate Legacy-HTTP+SSE-Transport ist deaktiviert. Das offizielle Go SDK prüft MCP-Methoden, Medientypen, Protokollrevision und Sessionzustand. Header-, Idle- und Shutdown-Timeout sowie maximale Headergröße begrenzen den HTTP- Server. Requestheader, Requestbodies und Secrets werden nicht geloggt.

GET /health/live enthält nur {"status":"live"}. GET /health/ready enthält nur ready oder not_ready und wird erst mit authentisiertem aktiven Proxy bereit. Beide Endpunkte ersetzen keine Zugangskontrolle.

Weitere Implementierungsdetails: MCP-Endpunkt sicher exponieren.