/

CVE-2026-55786

Severity:

HIGH RISK

(8.4)

OS Command Injection (CWE-78) in Flyto2 HTTP MCP Route

CVE-2026-55786

Deferred

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78, CWE-306

Impact:

Remote Code Execution

Severity:

HIGH RISK

(8.4)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Flyto2 Core exposes an HTTP MCP route that can accept unauthenticated JSON-RPC tool calls and pass attacker-controlled command arguments to a shell-executing module. An attacker who can reach the route may execute operating-system commands with the privileges of the Flyto2 server process, with network exposure depending on the server binding.

Flyto2 Core exposes an HTTP MCP route that can accept unauthenticated JSON-RPC tool calls and pass attacker-controlled command arguments to a shell-executing module. An attacker who can reach the route may execute operating-system commands with the privileges of the Flyto2 server process, with network exposure depending on the server binding.

Affected context

The vulnerability occurs in Flyto2 Core deployments from the affected release range when:

  • The HTTP MCP /mcp route is enabled
  • JSON-RPC tools/call requests are accepted without authentication
  • The execution path permits selection of sandbox.execute_shell
  • The server is reachable by an attacker, either locally through the default loopback binding or remotely when bound to a non-loopback interface

The resulting commands run with the privileges assigned to the Flyto2 Core server process.

The vulnerability occurs in Flyto2 Core deployments from the affected release range when:

  • The HTTP MCP /mcp route is enabled
  • JSON-RPC tools/call requests are accepted without authentication
  • The execution path permits selection of sandbox.execute_shell
  • The server is reachable by an attacker, either locally through the default loopback binding or remotely when bound to a non-loopback interface

The resulting commands run with the privileges assigned to the Flyto2 Core server process.

Exploit preconditions

  • Attack surface: HTTP MCP POST /mcp endpoint
  • Required access: Network or local access to the exposed endpoint; no application authentication is required on the affected route
  • Trigger point: An unauthenticated JSON-RPC tools/call request selecting the shell-execution module
  • Why exploitation is possible: The route forwards attacker-controlled execution arguments to a shell subprocess without applying the authentication dependency used by other execution routes
  • Attack surface: HTTP MCP POST /mcp endpoint
  • Required access: Network or local access to the exposed endpoint; no application authentication is required on the affected route
  • Trigger point: An unauthenticated JSON-RPC tools/call request selecting the shell-execution module
  • Why exploitation is possible: The route forwards attacker-controlled execution arguments to a shell subprocess without applying the authentication dependency used by other execution routes

Why this happens

The underlying issue is a command-injection path combined with missing access control.

The MCP route permits unauthenticated selection of an execution-capable module and forwards its command parameter to a shell subprocess API. Passing externally controlled data into shell command execution without a trusted boundary or strict command model maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command. The absent authentication control also relates to CWE-306: Missing Authentication for Critical Function.

The underlying issue is a command-injection path combined with missing access control.

The MCP route permits unauthenticated selection of an execution-capable module and forwards its command parameter to a shell subprocess API. Passing externally controlled data into shell command execution without a trusted boundary or strict command model maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command. The absent authentication control also relates to CWE-306: Missing Authentication for Critical Function.

Potential impact

  • An attacker may execute arbitrary operating-system commands
  • The attacker could access or modify files available to the server process
  • Application secrets, credentials, or workflow data may be exposed
  • The Flyto2 runtime could be disrupted or modified
  • Host compromise or lateral movement could occur, depending on process privileges and isolation
  • An attacker may execute arbitrary operating-system commands
  • The attacker could access or modify files available to the server process
  • Application secrets, credentials, or workflow data may be exposed
  • The Flyto2 runtime could be disrupted or modified
  • Host compromise or lateral movement could occur, depending on process privileges and isolation

General mitigation guidance

Mitigation generally focuses on enforcing authorization at every execution-capable entry point and removing unnecessary shell interpretation.

Common defensive patterns include:

  • Require authentication and authorization for MCP tool calls that can execute workflows or commands
  • Apply the same access-control dependency consistently across REST, MCP, and other execution routes
  • Prefer structured, allowlisted operations over arbitrary shell command strings
  • Avoid shell-based subprocess APIs when a direct executable-and-argument interface is sufficient
  • Treat tool arguments as untrusted input and validate them against strict schemas and permitted values
  • Bind administrative execution services to loopback or a protected network by default
  • Run the server with least-privilege operating-system permissions and appropriate isolation
  • Restrict filesystem, network, and credential access available to execution workers

Mitigation generally focuses on enforcing authorization at every execution-capable entry point and removing unnecessary shell interpretation.

Common defensive patterns include:

  • Require authentication and authorization for MCP tool calls that can execute workflows or commands
  • Apply the same access-control dependency consistently across REST, MCP, and other execution routes
  • Prefer structured, allowlisted operations over arbitrary shell command strings
  • Avoid shell-based subprocess APIs when a direct executable-and-argument interface is sufficient
  • Treat tool arguments as untrusted input and validate them against strict schemas and permitted values
  • Bind administrative execution services to loopback or a protected network by default
  • Run the server with least-privilege operating-system permissions and appropriate isolation
  • Restrict filesystem, network, and credential access available to execution workers

How teams detect issues like this

Detection can combine code review, static analysis, endpoint testing, and runtime monitoring.

Useful checks include:

  • Searching for MCP or JSON-RPC routes that dispatch tools without authentication or authorization middleware
  • Reviewing data flows from request parameters into shell subprocess APIs
  • Flagging uses of shell execution with externally controlled strings
  • Verifying that authorization policies cover every protocol and route exposing execution-capable tools
  • Testing deployments to confirm unauthenticated tools/call requests cannot invoke privileged modules
  • Monitoring logs for unexpected MCP tool selections, shell execution events, and unusual child-process creation
  • Enforcing CI or automated review rules for missing authentication dependencies and unsafe subprocess patterns

Detection can combine code review, static analysis, endpoint testing, and runtime monitoring.

Useful checks include:

  • Searching for MCP or JSON-RPC routes that dispatch tools without authentication or authorization middleware
  • Reviewing data flows from request parameters into shell subprocess APIs
  • Flagging uses of shell execution with externally controlled strings
  • Verifying that authorization policies cover every protocol and route exposing execution-capable tools
  • Testing deployments to confirm unauthenticated tools/call requests cannot invoke privileged modules
  • Monitoring logs for unexpected MCP tool selections, shell execution events, and unusual child-process creation
  • Enforcing CI or automated review rules for missing authentication dependencies and unsafe subprocess patterns

Sources

SourceLink
github.comgithub.com/flytohub/flyto-core/commit/db7f116b1d3c5dcf94aded00d14118f81f3e225e
github.comgithub.com/flytohub/flyto-core/releases/tag/v2.26.4
github.comgithub.com/flytohub/flyto-core/security/advisories/GHSA-h9f9-h6gm-wc85

Frequently asked

questions

It can be remotely exploitable when the Flyto2 server is bound to a non-loopback interface and the MCP endpoint is reachable by an attacker. With the default loopback binding, exploitation is generally limited to a local attacker or another process that can access the host.

No authentication is required on the affected MCP route. The attacker only needs connectivity to the endpoint and the ability to submit a suitable JSON-RPC tool-call request.

Require authentication and authorization before dispatching any execution-capable tool, and replace arbitrary shell commands with narrowly allowlisted operations wherever possible.

Apply consistent authorization across all protocol routes, treat tool arguments as untrusted, avoid shell interpretation, use least-privilege execution identities, and include endpoint-level security tests in CI and deployment reviews.

It can be remotely exploitable when the Flyto2 server is bound to a non-loopback interface and the MCP endpoint is reachable by an attacker. With the default loopback binding, exploitation is generally limited to a local attacker or another process that can access the host.

No authentication is required on the affected MCP route. The attacker only needs connectivity to the endpoint and the ability to submit a suitable JSON-RPC tool-call request.

Require authentication and authorization before dispatching any execution-capable tool, and replace arbitrary shell commands with narrowly allowlisted operations wherever possible.

Apply consistent authorization across all protocol routes, treat tool arguments as untrusted, avoid shell interpretation, use least-privilege execution identities, and include endpoint-level security tests in CI and deployment reviews.

Find out what's already
exploitable in your codebase.