RufRoot (CVE-2026-59726): Unauthentifizierte Remote Code Execution über die MCP Bridge von Ruflo — CVSS 10.0
Noma Security hat am 29.07.2026 CVE-2026-59726 („RufRoot“, CVSS 10.0) offengelegt: eine unauthentifizierte Remote-Code-Execution-Lücke in der MCP Bridge von Ruflo, einer quelloffenen KI-Agent-Orchestrierungsplattform mit rund 67.000 GitHub-Stars und ca. 10 Millionen Downloads. Die Express.js-basierte Bridge exponiert 233 Tools über den Endpoint POST /mcp — ohne jede Authentifizierung. Weil Port 3001 in der mitgelieferten docker-compose.yml standardmäßig an 0.0.0.0 gebunden ist, genügt ein einzelner JSON-RPC-Aufruf gegen das Tool ruflo__terminal_execute für beliebige Shell-Befehlsausführung im Kontext des Bridge-Prozesses. Ein bestehendes Command-Blocklist (AUTOPILOT_BLOCKED_PATTERNS) schützt hier nicht, da es nur innerhalb des Autopilot-Flows greift und durch den direkten /mcp-Aufruf vollständig umgangen wird. Gefixt seit PR #2521 (GHSA-c4hm-4h84-2cf3): Loopback-Bind per Default, Pflicht-Authentifizierung, Terminal-Zugriff standardmäßig deaktiviert.
TL;DR — 90 Sekunden
- Betroffen?
Ruflo-Deployments, bei denen die MCP Bridge (Standardport 3001) aus dem Netz erreichbar ist — laut Docker-Compose-Standardkonfiguration ist das jede unverändert betriebene Installation.
- Risiko?
Unauthentifizierte Remote Code Execution (CVSS 10.0) über POST /mcp und das Tool ruflo__terminal_execute — kein Login, kein Token, keine Nutzerinteraktion nötig. Noma Security demonstrierte eine vollständige Kompromittierungskette bis zu API-Key-Diebstahl, Datenbankzugriff und persistenter Backdoor.
- Sofortmaßnahme?
Port 3001 (und 27017 für die genutzte MongoDB) aus dem öffentlichen Netz nehmen, auf die gefixte Version (PR #2521 / GHSA-c4hm-4h84-2cf3) aktualisieren, MCP_AUTH_TOKEN setzen.
- Empfehlung?
Sofort handeln, wenn eine Ruflo-Instanz erreichbar ist — diese Lücke ist trivial ausnutzbar (ein einzelner curl-Request) und liefert direkte Codeausführung.
- Kritikalität?
kritisch (Hero-Badge) — CVSS 10.0, unauthentifiziert, trivialer Exploit; die Quellenlage stützt sich bislang auf eine einzelne Sicherheitsfirma (Noma Security), eine bestätigte aktive Ausnutzung in freier Wildbahn liegt uns nicht vor.
Was ist das Problem?
Ruflo ist eine quelloffene Plattform zur Orchestrierung von KI-Agenten: Entwickler bauen damit „agentische Schwärme“ aus bis zu 100 kollaborierenden Agenten, mit persistentem Gedächtnis über Sitzungen hinweg und Werkzeug-Ausführung über das Model Context Protocol (MCP). Die MCP Bridge ist der zentrale Express.js-Server, über den externe MCP-Clients (Agenten, Tools, IDEs) auf die 233 verfügbaren Ruflo-Werkzeuge zugreifen — darunter Shell-Zugriff, Datenbankoperationen, Agenten-Verwaltung und Speicheroperationen.
Der Endpoint POST /mcp implementiert das MCP-JSON-RPC-Protokoll und leitet Tool-Aufrufe direkt an executeTool() weiter — ohne jede Authentifizierungsschicht. Ein zwar vorhandenes Command-Blocklist (AUTOPILOT_BLOCKED_PATTERNS) schränkt gefährliche Operationen ein, greift aber ausschließlich innerhalb des Autopilot-Flows der Anwendung — der direkte /mcp-Endpoint umgeht diese Prüfung vollständig. Kombiniert mit dem Standard-Bind an 0.0.0.0 in der mitgelieferten docker-compose.yml (Port 3001 auf allen Netzwerk-Interfaces) ergibt sich unauthentifizierte Remote Code Execution mit einem einzelnen HTTP-Request:
curl -s -X POST <target>/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ruflo__terminal_execute","arguments":{"command":"id && hostname"}}}'Wer ist betroffen?
| Konfiguration | Status | Bedingung |
|---|---|---|
| Ruflo mit Standard-docker-compose.yml, Port 3001 nach außen erreichbar | Voll exponiert (unauthentifizierte RCE) | Kein MCP_AUTH_TOKEN gesetzt, Bridge auf 0.0.0.0 gebunden |
| Ruflo hinter Reverse-Proxy/Firewall ohne Zugriffsbeschränkung auf 3001 | Exponiert für jeden mit Netzwerkzugriff auf den Proxy | Kein separates Auth-Layer vor der Bridge |
| Ruflo, Bridge nur auf localhost/internes Netz gebunden | Deutlich reduziertes Risiko | Angreifer benötigt bereits Zugriff auf Host oder internes Netz |
| Ruflo auf gepatchtem Stand (PR #2521 / GHSA-c4hm-4h84-2cf3) | Nicht mehr default-exponiert | Loopback-Bind per Default, MCP_AUTH_TOKEN erforderlich für öffentliches Binding |
Besonders relevant für Unternehmen, die Ruflo experimentell oder produktiv für interne Automatisierung, Coding-Agenten oder Workflow-Orchestrierung einsetzen: Die Standardkonfiguration priorisiert Setup-Einfachheit über Sicherheit — ein Muster, das bei KI-Agent-Tooling in den letzten Monaten wiederholt zu kritischen Lücken geführt hat (vergleichbar mit den auf diesem Blog bereits dokumentierten Langflow- und LiteLLM-Fällen).
Auswirkungen
Noma Security demonstrierte eine vollständige, achtstufige Angriffskette: (1) Reconnaissance über tools/list, das alle 233 verfügbaren Werkzeuge auflistet; (2) Codeausführung über terminal_execute; (3) Diebstahl von API-Schlüsseln aus Umgebungsvariablen — OpenAI, Anthropic, Google, OpenRouter waren in der demonstrierten Umgebung erreichbar; (4) „Weaponisierung“ weiterer Agenten über ruflo__swarm_init und ruflo__agent_spawn, um vom Angreifer kontrollierte Schwärme zu erzeugen; (5) Speicher-Poisoning durch Einschleusen manipulierter Muster in die Lernpipeline via ruflo__agentdb_pattern-store; (6) Datendiebstahl durch unauthentifizierten Zugriff auf die zugrunde liegende MongoDB (Auslesen aller Konversationen); (7) Persistenz durch Einschleusen eines Beacon-Skripts unter /app/beacon.js mit Startup-Hook; (8) Verwischen der Spuren durch Löschen der Shell-Historie.
Der Effekt reicht damit deutlich über klassische Server-Kompromittierung hinaus: Neben vollständiger Codeausführung sind gestohlene LLM-API-Schlüssel, kompromittierte Agenten-Schwärme und manipulierte, dauerhaft in der Lernpipeline verankerte Verhaltensmuster mögliche Folgen — letzteres ist besonders schwer vollständig zu bereinigen, da betroffene Muster in nachgelagerten Agenten-Entscheidungen fortwirken können.
Mitigation / Sofortmaßnahmen
Operativer Entscheidungsblock
- Heute handeln, wenn … eine Ruflo-MCP-Bridge (Port 3001) aus dem Internet oder einem nicht vertrauenswürdigen internen Netz erreichbar ist.
- Mit Priorität prüfen, wenn … Ruflo intern eingesetzt wird und Sie nicht sicher wissen, ob MCP_AUTH_TOKEN gesetzt ist.
- Beobachten, wenn … Sie bereits auf den gepatchten Stand aktualisiert haben, MCP_AUTH_TOKEN gesetzt ist und die Bridge nicht öffentlich erreichbar ist.
Schritt 1 — Sofort: Netzwerkzugriff einschränken
# Firewall-Regeln fuer die MCP-Bridge und die zugehoerige MongoDB
sudo ufw deny 3001/tcp
sudo ufw deny 27017/tcp
# Falls Docker Compose genutzt wird: Port-Mapping auf localhost beschraenken
# statt "3001:3001" -> "127.0.0.1:3001:3001" in docker-compose.yml
Schritt 2 — Auf gepatchten Stand aktualisieren
# Ruflo auf den Stand nach PR #2521 / GHSA-c4hm-4h84-2cf3 aktualisieren
git pull
# oder: aktuelles Release-Image ziehen, das den Fix enthaelt
# Pflicht-Umgebungsvariable fuer Authentifizierung setzen
export MCP_AUTH_TOKEN="$(openssl rand -hex 32)"
# Terminal-Zugriff bleibt nach dem Patch standardmaessig deaktiviert;
# nur explizit aktivieren, wenn zwingend benoetigt:
# export MCP_ENABLE_TERMINAL=true
Schritt 3 — Nach dem Patch verifizieren
# Unauthentifizierten Zugriff testen -- sollte nach dem Patch fehlschlagen
curl -s -X POST <host>/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# erwartete Antwort: Fehler/Ablehnung wegen fehlender Authentifizierung,
# nicht die Liste der 233 ToolsDetection / Prüfung
Bestand feststellen
# Pruefen, ob eine Ruflo-MCP-Bridge auf Port 3001 erreichbar ist
nmap -p 3001 <host-oder-range>
# Unauthentifizierten Zugriff testen (nur gegen eigene Systeme!)
curl -s -X POST <host>/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Erhalten Sie eine Liste von ~233 Tools zurueck, ist die Instanz verwundbar
Kompromittierung prüfen
# Auf verdaechtige Dateien pruefen, die als Backdoor dienen koennten
ls -la /app/beacon.js 2>/dev/null && echo "VERDAECHTIG: beacon.js gefunden"
# MongoDB auf unautorisierten Zugriff/Manipulation pruefen
# (Backend-DB von Ruflo, Standardport 27017 -- Zugriffslogs pruefen)
# Shell-Historie auf Luecken/Manipulation pruefen (Angreifer loeschen typischerweise Spuren)
history | tail -100
cat ~/.bash_history | wc -l
Laufzeit-Indikatoren
- Unerwartete ausgehende Verbindungen des Ruflo-Bridge-Prozesses (Exfiltration von API-Keys)
- Neue oder unerwartete Einträge in ruflo__agentdb_pattern-store (Speicher-Poisoning)
- Unbekannte Agenten-Schwärme, die über swarm_init/agent_spawn erzeugt wurden, ohne dass dies beabsichtigt war
- Ungewöhnlich hohe Nutzung von LLM-API-Kontingenten (OpenAI/Anthropic/Google/OpenRouter) außerhalb bekannter Workloads
Betreiberempfehlung
Mid-Market
Prüfen Sie umgehend, ob Ruflo irgendwo im Einsatz ist — auch als „Schatten-IT“-Experiment einzelner Teams, das außerhalb des offiziellen Software-Inventars läuft. Ist eine Instanz erreichbar, Port 3001/27017 sofort aus dem öffentlichen Netz nehmen und auf den gepatchten Stand aktualisieren. Rotieren Sie vorsorglich alle LLM-API-Schlüssel, die in der Ruflo-Umgebung konfiguriert waren, unabhängig davon, ob eine Kompromittierung bestätigt ist.
Enterprise
Dieser Fall unterstreicht ein wiederkehrendes Muster bei KI-Agent-Tooling: Frameworks, die auf schnelle Inbetriebnahme optimiert sind, binden Management- und Steuerungs-Schnittstellen häufig standardmäßig an alle Interfaces und verzichten auf Authentifizierung „der Einfachheit halber“. Etablieren Sie ein Inventar aller MCP-Server und Agent-Orchestrierungs-Tools im Unternehmen — offiziell eingeführt oder nicht — und prüfen Sie deren Standardkonfiguration explizit auf offene Management-Ports, bevor sie produktiv genutzt werden.
Entscheidungsblock
- Sofort handeln: Port 3001/27017 absichern, auf gepatchten Stand aktualisieren, MCP_AUTH_TOKEN setzen.
- Zusätzlich: LLM-API-Schlüssel rotieren, AgentDB und MongoDB auf Manipulation prüfen.
- Beobachten: Weitere Advisories zu ähnlichen MCP-Bridge-Mustern in anderen Agent-Orchestrierungs-Frameworks — das architektonische Problem (offene Management-API ohne Auth) ist nicht Ruflo-spezifisch.
Häufige Fragen zu CVE-2026-59726 (RufRoot)
Müssen wir alle LLM-API-Schlüssel rotieren, auch ohne Hinweis auf Kompromittierung?+
Wenn Ihre Ruflo-Instanz erreichbar war und Sie den Zeitraum vor Ihrem Patch nicht lückenlos auf die in diesem Artikel genannten Indikatoren prüfen können, empfehlen wir vorsorgliche Rotation — gestohlene API-Schlüssel hinterlassen nicht zwangsläufig Spuren, die sich im Nachhinein zweifelsfrei nachweisen lassen.
Reicht ein Reverse-Proxy mit Basic-Auth vor Port 3001 als Workaround?+
Als Übergangslösung ja, sofern der Proxy so konfiguriert ist, dass er wirklich jeden Request auf jedem Pfad absichert und die Bridge selbst nicht zusätzlich direkt erreichbar bleibt. Langfristig ersetzt das nicht das Update: Der Patch behebt zusätzlich das Umgehen des Command-Blocklists sowie die unauthentifizierte MongoDB-Anbindung, die ein vorgeschalteter Proxy allein nicht adressiert.
Was ist der Unterschied zwischen der MCP Bridge und dem regulären Ruflo-Webinterface?+
Das reguläre Webinterface richtet sich an menschliche Nutzer und hat typischerweise eigene Auth-Mechanismen. Die MCP Bridge ist eine separate, für maschinelle MCP-Clients (andere Agenten, Tools, IDE-Integrationen) gedachte Schnittstelle auf einem eigenen Port — genau diese Trennung führte dazu, dass sie ohne eigene Authentifizierung ausgeliefert wurde, während das Hauptinterface möglicherweise abgesichert war.
Sind wir betroffen, wenn Ruflo nur intern im Firmennetz läuft?+
Das Risiko ist geringer, aber nicht null. Jeder mit Zugriff auf das interne Netz — kompromittierte Mitarbeiter-Endgeräte, ein bereits kompromittiertes anderes System, oder ein interner Angreifer — kann den unauthentifizierten Endpoint erreichen. Insbesondere in flachen internen Netzwerken ohne Mikrosegmentierung ist das Risiko real.
Wird CVE-2026-59726 bereits aktiv ausgenutzt?+
Uns liegt bislang keine bestätigte aktive Ausnutzung in freier Wildbahn vor. Die Quellenlage stützt sich auf die Advisory von Noma Security, die die Lücke fand und demonstrierte — angesichts der Trivialität des Exploits (ein einzelner curl-Request) und der Verbreitung von Ruflo sollte das nicht als Entwarnung verstanden werden.
Reicht es, MCP_AUTH_TOKEN zu setzen, statt zu aktualisieren?+
Nein, nicht zuverlässig. Ohne die gepatchte Codebasis existiert die fehlende Authentifizierungsprüfung im Endpoint selbst weiter — je nach Ruflo-Version ist unklar, ob eine nachträglich gesetzte Umgebungsvariable ohne den zugehörigen Code-Fix überhaupt ausgewertet wird. Zuverlässig ist nur die Kombination aus Update auf den gepatchten Stand (PR #2521) und anschließend gesetztem MCP_AUTH_TOKEN.
Fazit
RufRoot ist ein weiteres Beispiel eines Musters, das sich bei KI-Agent-Tooling in den letzten Monaten wiederholt: Eine Steuerungsschnittstelle, die für maschinelle statt menschliche Clients gedacht ist, wird der Einfachheit halber ohne Authentifizierung ausgeliefert — unter der stillschweigenden Annahme, dass sie schon nicht öffentlich erreichbar sein wird. Diese Annahme hält in der Praxis selten: Standard-Docker-Compose-Konfigurationen binden Ports oft an alle Interfaces, und „nur intern“ wird schnell zu „aus dem Internet erreichbar“, sobald ein Cloud-Provider, ein NAT-Gateway oder ein falsch konfigurierter Load Balancer ins Spiel kommt. Die architektonische Lehre ist dieselbe wie bei den bereits auf diesem Blog dokumentierten Fällen zu Langflow und LiteLLM: Jede Management- oder Tool-Ausführungs-Schnittstelle eines KI-Agent-Frameworks ist ein produktiver, privilegierter Dienst und muss von Anfang an so behandelt werden — mit Authentifizierung per Default, nicht als nachträgliche Option.
Quellen
Hinweis: Die technischen Details zu dieser Lücke stützen sich auf eine einzelne Sicherheitsfirma als Quelle. Wir haben keine unabhängige zweite Quelle (z. B. NVD-Eintrag oder Ruflo-eigene Advisory-Seite) gefunden, die die genannten Details zum Zeitpunkt der Recherche bestätigt. Prüfen Sie vor operativen Entscheidungen die Original-Advisory sowie das Github-Repository von Ruflo (GHSA-c4hm-4h84-2cf3, PR #2521) auf aktuelle Informationen.
Ich prüfe Ihre KI-Agent- und MCP-Server-Landschaft auf offene Management-Schnittstellen und richte ein Inventar samt Monitoring für diese oft übersehene Angriffsfläche ein.
Bestandsaufnahme aller MCP-Server und Agent-Orchestrierungs-Tools im Unternehmen — offiziell eingeführt oder als Schatten-IT —, externe Erreichbarkeitsprüfung ihrer Management-Ports, sowie Review der Standardkonfiguration auf fehlende Authentifizierung.
Plattform-Betrieb statt Beratung auf Papier: Ich prüfe, härte und überwache Ihre KI-Agent-Infrastruktur laufend — auch für schnell wachsende, experimentelle Tool-Landschaften.