Ruflo's vulnerable boundary was the MCP control plane around the agents, not a language-model behavior. The shipping Docker Compose configuration exposed the MCP bridge and MongoDB on all interfaces, while POST /mcp accepted tool calls without an authentication gate. The bridge also exposed terminal_execute, and the tool blocklist that mentioned that…
Inspect the ClaimsCase · DiggingBeagle record
Ruflo's default MCP bridge exposed unauthenticated shell execution and agent memory poisoning
Ruflo's default Docker deployment exposed an MCP bridge without authentication. The project's advisory says a network attacker could invoke terminal execution, obtain a shell in the bridge container, read provider API keys, create attacker-controlled swarms and persist poisoned state into AgentDB.
Defensive coordinated vulnerability disclosure affecting Ruflo before 3.16.3. The researcher-provided proof of concept was described to maintainers as confirmed against a default AWS EC2 deployment; Ruflo's ADR independently verified the substantive claims through static source analysis and review of the disclosed proof of concept but did not re-run it against a live host. The scoped record does not establish malicious exploitation of third-party deployments.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- Remediation
- patch available
- AI role
- AGAINST AI
Basis and provenance
The maintainer advisory and ADR describe a researcher-supplied live PoC but static maintainer verification. A named patch and persistent-state response guidance support patch availability, not independent live fix verification or evidence of attacks on victims. Assessment is a desk review of the retained canonical Claims and cited Source metadata at their recorded cutoff, not a new external verification. Impact remains ungraded.
Assessed Sep 24, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-RUFROOT-DEFAULT-RCE · CLM-RUFROOT-POC-PROVENANCE · CLM-RUFROOT-FIX · CLM-RUFROOT-INCIDENT-RESPONSE · ADR-166: MCP bridge unauthenticated RCE remediation · Unauthenticated RCE in ruflo MCP bridge default docker-compose deployment
At a glance
An MCP bridge is a privileged control plane, not harmless glue between a model and tools. If network identity, tool authorization and persistent state protection fail at that layer, an attacker can bypass model-level safeguards entirely. Remediation also has an incident-response dimension: once credentials or learned state may have been changed, fixing the…
Read the implicationsThe reviewed sources do not establish malicious exploitation of third-party Ruflo deployments in the wild. Ruflo's maintainers did not measure how many live deployments used the vulnerable default exposure. The maintainers did not independently execute the disclosed proof of concept; their verification was static plus review of the researcher's materials.…
Limits and uncertaintyFull account
Ruflo's vulnerable boundary was the MCP control plane around the agents, not a language-model behavior. The shipping Docker Compose configuration exposed the MCP bridge and MongoDB on all interfaces, while POST /mcp accepted tool calls without an authentication gate. The bridge also exposed terminal_execute, and the tool blocklist that mentioned that capability applied only to the autopilot flow rather than to the direct MCP routes.
That produced a direct network-to-tool path. Ruflo's advisory says an unauthenticated caller could invoke terminal execution, obtain a shell as the container user, read provider API keys inherited by the bridge, spawn attacker-controlled swarms on those credentials and write poisoned patterns into AgentDB. MongoDB exposure and persistent learning state widened the effect beyond one shell session.
The evidence has an important provenance boundary. The coordinated-disclosure report included an eight-step proof of concept and video described as live against a default AWS EC2 deployment. Ruflo's maintainers did not perform live exploitation; they statically verified the report against the checked-out source, reviewed the proof of concept and shipped a layered remediation that changed default binding, authentication, terminal-tool gating, MongoDB authentication and container hardening.
Mechanism and trust boundary
- 01
Reach the shipping MCP bridge
The default Docker Compose topology bound the bridge to port 3001 on all interfaces; MongoDB on 27017 was also publicly bound by default.
Boundary: network / agent control plane
- 02
Call the MCP route without authentication
POST /mcp accepted tool calls without proving caller identity.
Boundary: remote request / MCP tool dispatcher
- 03
Bypass the flow-specific tool blocklist
The terminal_execute blocklist was enforced in the autopilot path, while direct POST /mcp and /mcp/:group calls bypassed that policy.
Boundary: tool policy / direct API path
- 04
Obtain code execution in the bridge container
The advisory states that terminal_execute provided shell execution as the node user inside the bridge container.
Boundary: MCP tool / runtime container
- 05
Reach credentials and persistent agent state
The compromised bridge inherited provider credentials and could reach AgentDB and MongoDB, creating paths to credential abuse, persistent poisoned learning state and conversation-store tampering.
Boundary: runtime container / provider keys and persistent stores
Timeline
- Jun 30, 2026Event type unspecified
Ruflo receives the coordinated disclosure
ADR-166 says the report included an eight-step proof of concept and video described as confirmed against a default AWS EC2 deployment.
- Jun 30, 2026mitigation
Maintainers complete static verification and ship remediation phases 0-3
ADR-166 records static verification of the substantive claims and layered changes to binding, authentication, tool gating, MongoDB and runtime defaults.
- Jul 1, 2026Event type unspecified
Ruflo publishes the GitHub security advisory
GHSA-c4hm-4h84-2cf3 identifies versions before 3.16.3 as affected, 3.16.3 as patched and assigns CVE-2026-59726.
Claims & evidence
CLM-RUFROOT-FIXThe Ruflo GitHub advisory identifies versions before 3.16.3 as affected and 3.16.3 as patched.supported
Basis: reported finding
- supportsUnauthenticated RCE in ruflo MCP bridge default docker-compose deploymentvendor security advisory
Affected versions and Patched versions fields
CLM-RUFROOT-SEVERITYThe Ruflo GitHub advisory tracks the issue as CVE-2026-59726, assigns CVSS 10.0 under v3.1 and lists CWE-78, CWE-306 and CWE-942.supported
Basis: reported finding
Scope: Severity measurement for the vulnerability; it is not a measure of observed victim count.
Recorded measurement: 10 CVSS v3.1 base score · Ruflo GHSA vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
- supportsUnauthenticated RCE in ruflo MCP bridge default docker-compose deploymentvendor security advisory
GHSA severity, CVSS vector, CVE ID and weakness fields
CLM-RUFROOT-DEFAULT-RCERuflo's shipping Docker Compose deployment exposed the MCP bridge without authentication, and the advisory states that an unauthenticated caller could invoke terminal_execute through the MCP tool path and obtain code execution inside the bridge container.supported
Basis: reported finding
- supportsUnauthenticated RCE in ruflo MCP bridge default docker-compose deploymentvendor security advisory
Description: default docker-compose deployment, unauthenticated POST /mcp and tools/call to terminal_execute
- supportsADR-166: MCP bridge unauthenticated RCE remediationvendor remediation adr
Context section stating the default deployment exposed an unauthenticated MCP bridge and that the report was statically verified
CLM-RUFROOT-POC-PROVENANCEADR-166 says the coordinated-disclosure package contained an eight-step proof of concept and video described as confirmed against a default AWS EC2 deployment, while Ruflo's maintainers verified the claims statically and did not re-run the exploit.supported
Basis: reported finding
Scope: The live-AWS statement is the researcher's reported proof-of-concept result as relayed by Ruflo; the maintainers' own verification was static.
- supportsADR-166: MCP bridge unauthenticated RCE remediationvendor remediation adr
ADR-166 sections 1.1 and 1.3: coordinated disclosure, reported AWS EC2 PoC and audit limitations
CLM-RUFROOT-SECRETS-MEMORYThe Ruflo advisory states that successful exploitation could expose provider API keys, allow attacker-controlled swarms to run on victim credentials and persist poisoned patterns into the AgentDB learning store.supported
Basis: reported finding
- supportsUnauthenticated RCE in ruflo MCP bridge default docker-compose deploymentvendor security advisory
Description and impact chain following terminal_execute
CLM-RUFROOT-INCIDENT-RESPONSERuflo advises operators of exposed instances to firewall ports 3001 and 27017, rotate provider keys, audit AgentDB for poisoned patterns and audit MongoDB; the advisory warns that redeploying a patched image does not by itself remove poisoned state.supported
Basis: reported finding
- supportsUnauthenticated RCE in ruflo MCP bridge default docker-compose deploymentvendor security advisory
Operator response guidance following the remediation list
CLM-RUFROOT-MAINTAINER-VERIFYRuflo's ADR-166 says the maintainers statically verified every substantive coordinated-disclosure claim against the checked-out source and characterized the default deployment as an internet-reachable unauthenticated RCE.supported
Basis: reported finding
- supportsADR-166: MCP bridge unauthenticated RCE remediationvendor remediation adr
Section 1.1 'Why this ADR now'
Implications
An MCP bridge is a privileged control plane, not harmless glue between a model and tools. If network identity, tool authorization and persistent state protection fail at that layer, an attacker can bypass model-level safeguards entirely. Remediation also has an incident-response dimension: once credentials or learned state may have been changed, fixing the route does not restore the prior trust state.
Controls and mitigations
- Upgrade Ruflo to 3.16.3 or later.
- Bind MCP control planes to loopback by default and fail closed if an operator requests public binding without an authentication token.
- Authenticate and authorize every MCP route at a common boundary so direct API paths cannot bypass flow-specific policy.
- Keep terminal execution disabled unless explicitly enabled and enforce that decision inside the common tool dispatcher.
- Require authentication for MongoDB and avoid publishing bridge/database ports to all interfaces by default.
- Use container hardening such as read-only filesystems and temporary writable mounts where compatible with the workload.
- For any instance that was exposed before remediation, firewall the affected ports, rotate provider credentials, review provider billing, audit AgentDB and MongoDB, and purge poisoned persistent state rather than relying on redeployment alone.
Unknowns and contradictions
- The reviewed sources do not establish malicious exploitation of third-party Ruflo deployments in the wild.
- Ruflo's maintainers did not measure how many live deployments used the vulnerable default exposure.
- The maintainers did not independently execute the disclosed proof of concept; their verification was static plus review of the researcher's materials.
- The downstream effect of poisoned AgentDB state depends on how a deployment consumes learned patterns and whether operators audited persistent state after patching.
Sources and citation
Material revision history
- Sep 19, 2026 · Published version · first publication · revision 22
- Sep 25, 2026 · Published version · material revision · revision 39Public fields changed: assessment_profile