Zum Inhalt springen
← Zurück zum Cyberlagebild
Zuletzt aktualisiert 11.09.2026 22:18

FrontMCP and mcp-from-openapi have bypass of OpenAPI external $ref SSRF fix

CVSS –1 Quelle

Beschreibung

## Zusammenfassung Der veröffentlichte Fix für GHSA-v6ph-xcq9-qxxj / CVE-2026-39885 fügte einen direkten Hostnamen-Denylisten für OpenAPI externes `$ref`-Deferencing hinzu, aber die neueste gepatchte Abhängigkeit `mcp-from-openapi` 2.3.0 macht immer noch Backend-Origin-Anfragen zum Loopback, wenn das Ziel durch Hostnamen-Auflösung, Redirects oder IPv4-mapped IPv6-Syntax erreicht wird. FrontMCP neueste Version v1.2.1 und aktuelle Main noch rufen `OpenAPIToolGenerator.fromURL()` und `OpenAPIToolGenerator.fromJSON()` von `mcp-from-openapi` 2.3.0 beim Laden OpenAPI-Adapter. Ein Angreifer, der eine gehostete oder Mehrbenutzer-FrontMCP-Bereitstellung veranlassen kann, eine nicht vertrauenswürdige OpenAPI-Spezifikation zu laden, kann während der Tool-Generierung Anfragen vom Server an localhost oder private Dienste auslösen. Dies ist eine Umgehung der letzten Version des vorherigen Fix. Eine direkte `http://127.0.0.1` `$ref`-Steuerung wird nun verweigert und erzeugt null Kanarientreffer, während semantisch äquivalente Loopback-Ziele immer noch den Kanarienvogel erreichen. ## Neueste Versionen geprüft - `frontmcp` npm spätest: 1.2.1 - `@frontmcp/adapters` npm spätest: 1.2.1 - `mcp-from-openapi` npm spätest: 2.3.0 - FrontMCP release tag: v1.2.1, commit db323976c66297d684a3e63bbfe1db6b310f2944 - FrontMCP current main geprüft: c15b79abe8c6a3cb71d4b7a3b8190730dc756 Der Release-Tag und der aktuelle Main behalten sowohl `mcp-from-openapi` 2.3.0 in `package.json` als auch `libs/adapters/package.json` und beide behalten den OpenAPI-Adapter, der nicht vertrauenswürdige `url`, `spec` und `loadOptions.refResolution` in `OpenAPIToolGenerator` weiterleitet. Technische Details Der OpenAPI-Adapter von FrontMCP erreicht die betroffenen Abhängigkeitspfade: "libs/adapters/src/openapi/openapi.adapter.ts" importiert "OpenAPIToolGenerator" von "mcp-from-openapi". - `loadOpenAPISpec()` ruft `OpenAPIToolGenerator.fromURL(this.options.url, ...)` und leitet `loadOptions.refResolution` weiter. - Die gleiche Methode nennt `OpenAPIToolGenerator.fromJSON(this.options.spec, ...)` und leitet `loadOptions.refResolution` weiter. In `mcp-from-openapi` 2.3.0 wird der gepatchte Guard angewendet, bevor der HTTP-Resolver einen externen `$ref` abruft. Es überprüft die analysierte URL-Hostname-Zeichenfolge gegen Deny-Muster für direkte lokale und private Adressen. Der Resolver löst keine Hostnamen auf, bevor er Entscheidungen zulässt oder ablehnt, verbindet die validierte IP nicht mit dem Abruf und validiert keine Redirect-Ziele, bevor er ihnen folgt. Es vermisst auch IPv4-mapped IPv6-Loopback-Formulare. Infolgedessen werden diese URLs vom Wächter akzeptiert, verursachen jedoch eine Loopback-Anfrage aus dem Backend: - `http://127.0.0.1.nip.io:/schema.json`, weil die Hostnamen-Zeichenfolge keine direkte IP ist, obwohl sie auf 127.0.0.1. - `http://127.0.0.1.nip.io:/redirect` auflöst, weil der erste Host übergeben wird und die eigentliche Anfrage einer Weiterleitung zu `http://[::ffff:127.0.0.1]:/schema.json` und `http://[::ffff:7f00:1]:/schema.json` folgt, weil IPv4-mapped IPv6-Loopback nicht normalisiert und verweigert wird. `OpenAPIToolGenerator.fromURL()` ist auch noch unbewacht für die erste OpenAPI spec URL. Der PoC beinhaltet ..

Hersteller
Produktmcp-from-openapi, @frontmcp/adapters, frontmcp
Produktfamilienpm
Betroffene Versionen>= 2.3.0, < 2.5.0, >= 1.2.1, < 1.5.0
Behobene Versionen2.5.0, 1.5.0

Quellen & weiterführende Informationen

Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.

Was ist zur Behebung zu tun?

Auf eine behobene Version aktualisieren: 2.5.0, 1.5.0.

PrioritätGelb
EinordnungZeitnah behandeln: hohes technisches Risiko.

Empfohlene Schritte

  • Betroffene Systeme identifizieren: mcp-from-openapi, @frontmcp/adapters, frontmcp.
  • Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
  • Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
  • Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.

Übergangsmaßnahmen

  • Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
  • WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
  • Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.