Ruflo CVE-2026-59726 unauthenticated MCP bridge RCE
Summary
CVE-2026-59726 is a critical missing-authentication and command-execution vulnerability in Ruflo, an open-source multi-agent orchestration platform. Before 3.16.3, Ruflo's default Docker Compose deployment bound its MCP bridge and MongoDB to all interfaces. An unauthenticated network caller could invoke tools/call against ruflo__terminal_execute through POST /mcp or POST /mcp/:group and obtain a shell in the bridge container.
The reported impact extends beyond container command execution: provider API keys in environment variables, stored conversations, and AgentDB learning-store patterns were reachable. An attacker could use stolen model credentials, deploy a persistent payload under /app, or insert a poisoned pattern that influences later agent output. This is a publicly disclosed vulnerability and default-exposure path; the reviewed sources do not establish in-the-wild exploitation.
Tags
- ops
- operations
- Ruflo
- MCP
- Model Context Protocol
- AI agents
- CVE-2026-59726
- GHSA-c4hm-4h84-2cf3
- CWE-78
- CWE-306
- unauthenticated access
- remote code execution
- AI memory poisoning
- API key theft
- conversation theft
- Docker Compose
- MongoDB
Exposure and impact
- Affected range: Ruflo releases before 3.16.3 when the vulnerable MCP bridge is network reachable; default Docker Compose exposure is the reported path.
- MCP endpoints:
POST /mcpandPOST /mcp/:group. - Sensitive tool:
ruflo__terminal_executethrough JSON-RPCtools/call. - Default listeners: MCP bridge TCP/3001 and MongoDB TCP/27017 were bound broadly in the vulnerable deployment configuration.
- Credential impact: model-provider keys available to the bridge process can be read from its environment and used outside the victim deployment.
- Data and integrity impact: stored conversations can be read, and attacker-authored
agentdb_pattern-storeentries can persistently steer later agent behavior. - Persistence: container filesystem writes under
/appcan survive the initial request until the workload is rebuilt or the modified storage is removed.
Fix characteristics
Ruflo 3.16.3 changed multiple boundaries rather than only filtering one request:
- the MCP bridge binds to loopback by default;
terminal_executeis gated by server-sideexecuteToolcontrols;- MongoDB authentication is enabled; and
- the release hardens the default Compose deployment associated with GHSA-c4hm-4h84-2cf3.
Loopback binding is exposure reduction, not a substitute for tool authorization where untrusted local workloads, reverse proxies, tunnels, or shared hosts can reach the service.
Defender actions
- Upgrade to Ruflo 3.16.3 or later and verify the effective deployment configuration, not only the package version.
- Block external access to TCP/3001 and TCP/27017. Require authenticated, authorized access at the MCP tool-invocation boundary if the bridge must be reachable beyond localhost.
- Treat model-provider keys and any other secrets available to the bridge or MongoDB as compromised if the vulnerable service was exposed. Revoke and rotate them; inspect provider-side use for unfamiliar agents, models, source addresses, volume, and spend.
- Rebuild bridge containers from a trusted image. Compare persistent volumes and
/appagainst known-good content rather than assuming restart removes attacker writes. - Audit AgentDB for unfamiliar or modified
agentdb_pattern-storeentries and review stored conversations and MongoDB records for unauthorized reads or changes. - Preserve reverse-proxy, firewall, container, process, MCP, MongoDB, provider, and AgentDB evidence before cleanup. Hunt for anonymous
POST /mcprequests,tools/call,ruflo__terminal_execute, unexpected shell/interpreter children, secret reads, outbound connections, and newly written executable or startup content. - Do not validate a production instance by invoking shell tools. Confirm listener scope and authorization through configuration review or a benign test deployment.
Related pages
- Internet-exposed unauthenticated MCP servers
- MCP stdio command-execution boundary
- AI-agent memory poisoning
- LiteLLM CVE-2026-42271 MCP stdio command injection
Sources
- Ruflo GitHub security advisory: GHSA-c4hm-4h84-2cf3
- Ruflo 3.16.3 security release: v3.16.3
- The Hacker News disclosure summary: Ruflo MCP flaw lets unauthenticated attackers run commands and poison AI memory
- NVD: CVE-2026-59726