Schwachstelle im MCP Python SDK legt OAuth-Anmeldedaten gegenüber bösartigen Servern offen
KI-generiertes Bild

Schwachstelle im MCP Python SDK legt OAuth-Anmeldedaten gegenüber bösartigen Servern offen

Eine Schwachstelle im offiziellen MCP Python SDK könnte es einem böswilligen Server ermöglichen, OAuth-Login-Geheimnisse abzufangen, wodurch Angreifer langfristigen Zugriff auf verbundene Dienste erlangen können.

Eine Sicherheitslücke im offiziellen MCP Python Software Development Kit kann es einem bösartigen MCP-Server ermöglichen, die OAuth-Anmeldedaten abzufangen, die eine Anwendung zur Anmeldung bei einem externen Dienst verwendet, warnten die Betreuer des SDKs in einer Sicherheitsmitteilung. Die von der Sicherheitsfirma Cycode gemeldete Schwachstelle ermöglicht es einem nicht vertrauenswürdigen Server, einen mit den betroffenen Versionen erstellten Client dazu zu verleiten, sein Client-Secret, den Autorisierungscode und den PKCE-Proof-Key preiszugeben. Mit diesen gestohlenen Geheimnissen kann ein Angreifer ein gültiges Zugriffstoken vom echten Anmeldedienst anfordern und dauerhaften Zugriff behalten, bis die Anmeldedaten geändert werden.

Das Model Context Protocol (MCP) ist ein offener Standard, der es KI-Anwendungen ermöglicht, mit externen Werkzeugen und Datenquellen zu kommunizieren, und das betroffene Paket ist das offizielle Python-SDK zum Erstellen von MCP-Servern und -Clients. Wenn sich ein MCP-Client anmelden muss, fragt er den Server, wo sich sein Autorisierungsserver (der Dienst, der Anmeldungen verarbeitet und Token ausstellt) befindet. In den anfälligen Versionen vertraute das SDK dieser Antwort ohne Validierung, sodass ein feindlicher Server den Client zu einem vom Angreifer kontrollierten Endpunkt umleiten konnte, während dem Benutzer die echte Anmeldeseite angezeigt wurde. Der Client sendete dann sein Secret, den Autorisierungscode und den PKCE-Proof-Key direkt an den Angreifer, wodurch der Zweck des Proof-Keys zunichte gemacht und langlebige Anmeldedaten offengelegt wurden.

Die Sicherheitsmitteilung bewertet die Schwachstelle für die beiden Machine-to-Machine-OAuth-Anbieter, die ohne jegliche Benutzerinteraktion arbeiten, als hoch (7,5 von 10). Der interaktive Anbieter, bei dem eine Person eine Anmeldung genehmigen muss, erhält eine Bewertung von 6,5, da der Benutzer die scheinbar legitime Anmeldeseite weiterhin sieht und genehmigt. Bis zum 29. September war noch keine CVE-Kennung vergeben. Betroffen sind die Versionen der 1.x-Reihe von 1.9.1 bis 1.29.1 und der 2.x-Reihe von 2.0.0 bis 2.1.1; die Korrekturen sind in den Versionen 1.30.0 und 2.2.0 enthalten. Anwendungen sind nur dann gefährdet, wenn sie das SDK als MCP-Client über HTTP mit einem der aufgeführten OAuth-Anbieter (OAuthClientProvider, ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider oder dem veralteten 1.x RFC7523OAuthClientProvider) verwenden, Anmeldedaten für einen echten Anmeldedienst besitzen und sich mit einem Server verbinden können, den sie nicht vollständig kontrollieren.

Um die Schwachstelle zu schließen, müssen Benutzer auf die gepatchte Version aktualisieren und für ClientCredentialsOAuthProvider und PrivateKeyJWTOAuthProvider zusätzlich ein issuer=-Argument übergeben, das den erwarteten Autorisierungsserver benennt. Ohne dieses Argument folgt der Client auch in der korrigierten Version weiterhin jedem vom MCP-Server bereitgestellten Endpunkt. Der veraltete RFC7523OAuthClientProvider bietet überhaupt keine issuer=-Option, sodass Organisationen zu einem unterstützten Anbieter migrieren sollten. Nach dem Upgrade sollten alle gespeicherten OAuth-Client-Registrierungen einmalig gelöscht werden, da Registrierungen, die vor dem Patch erstellt wurden, nicht an einen bestimmten Anmeldedienst gebunden sind und weiterhin ausnutzbar bleiben. Wenn ein Client möglicherweise bereits eine Verbindung zu einem nicht vertrauenswürdigen Server hergestellt hat, muss sein Client-Secret rotiert und die aktiven Token beim Authentifizierungsdienst widerrufen werden. Für ältere, ungepatchte Versionen gibt es keine andere Problemumgehung, als sich ausschließlich mit vertrauenswürdigen MCP-Servern zu verbinden.

Die Issuer-Prüfungen wurden erstmals in den Versionshinweisen vom 7. September für die Versionen 1.30.0 und 2.2.0 als Verhaltensänderungen und nicht als Sicherheitskorrektur aufgeführt. Die formelle Sicherheitsmitteilung wurde am 28. September veröffentlicht, am selben Tag, an dem Cycode seinen detaillierten Bericht vorlegte. Die Mitteilung nennt acht Melder, darunter den Forscher von Cycode, und gibt an, dass keine Angriffe gemeldet wurden, die die Schwachstelle ausnutzen. Für Website-Betreiber und Unternehmen, die auf Webanwendungen angewiesen sind, bietet AEU Hosting verwaltetes WordPress-Hosting mit sicherheitsgehärteten Umgebungen, die dazu beitragen, das Risiko von Anmeldedatendiebstahl zu verringern, indem Software und ihre Abhängigkeiten durch proaktives Patchen und Überwachen aktuell gehalten werden.

So schützen Sie sich

  1. Aktualisieren Sie alle Anwendungen, die das MCP Python SDK verwenden, sofort auf Version 1.30.0 oder 2.2.0.
  2. Wenn Ihre App OAuth mit den betroffenen Anbietern verwendet, fügen Sie die Einstellung 'issuer' hinzu, um die Anmeldedaten an den richtigen Anmeldedienst zu binden.
  3. Ändern Sie das Client-Secret und widerrufen Sie alle aktiven Token für jeden Dienst, der sich möglicherweise mit einem nicht vertrauenswürdigen MCP-Server verbunden hat.
  4. Verbinden Sie Ihre MCP-basierten Anwendungen nur mit Servern, denen Sie vollständig vertrauen; vermeiden Sie die Verbindung zu unbekannten oder nicht verifizierten MCP-Servern.
  5. Überprüfen Sie regelmäßig die Sicherheitshinweise Ihrer Anwendung und installieren Sie Updates, sobald sie veröffentlicht werden.
  6. Wenn Sie den veralteten RFC7523OAuthClientProvider verwenden, wechseln Sie zu einer unterstützten Alternative, die die Issuer-Validierung unterstützt.

Begriffe Erklärt

  • MCP (Model Context Protocol) Ein offener Standard, der es Anwendungen mit künstlicher Intelligenz ermöglicht, sich mit externen Werkzeugen und Datenquellen zu verbinden.
  • SDK (Software Development Kit) Ein Satz von Werkzeugen und Codebibliotheken, der Entwicklern hilft, Anwendungen einfacher zu erstellen.
  • OAuth Eine Methode, um Websites oder Anwendungen eingeschränkten Zugriff auf Ihre Konten zu gewähren, ohne Ihr Passwort preiszugeben.
  • PKCE (Proof Key for Code Exchange) Eine Sicherheitstechnik, die verhindert, dass ein Angreifer einen gestohlenen Autorisierungscode missbraucht, indem sie einen eindeutigen Nachweisschlüssel verlangt.
  • Client secret Eine langlebige, passwortähnliche Zeichenkette, die von einer Anwendung verwendet wird, um ihre Identität gegenüber einem Anmeldedienst nachzuweisen.
  • Authorization server Der Dienst, der Benutzeranmeldungen verarbeitet, Berechtigungen prüft und temporäre Zugriffstoken ausstellt.
  • Deprecated Eine Funktion, die veraltet ist, nicht mehr empfohlen wird und in zukünftigen Versionen entfernt werden soll.

Verwandte AEU-Dienste

  • AEU DNS Verschlüsselter DNS-Resolver