Unauthenticated SSRF and Secret Exfiltration in Flyto Core
An unauthenticated SSRF vulnerability in the Flyto Core /run endpoint allows attackers to exfiltrate the internal FLYTO_RUNNER_SECRET and perform unauthorized requests against internal infrastructure.
What's new
- l2 merged source coverage: Arbitrary File Write in Flyto Core via Path Traversal Jul 30, 15:29 via ghsa
Flyto Core versions 2.26.6 and earlier are vulnerable to a critical SSRF and credential exfiltration flaw in the flyto-verification service. The /run endpoint, which is exposed by default on all interfaces (0.0.0.0) via the standard Docker configuration, lacks authentication. When a request is submitted to this endpoint, the callback_url parameter is processed without validation against an allowlist or SSRF protection guards.
Crucially, the service automatically appends the internal FLYTO_RUNNER_SECRET as an X-Internal-Key header to any outgoing request initiated by the callback_url. An attacker can specify an arbitrary URL, forcing the service to send the secret to an attacker-controlled listener. This exfiltration allows for the impersonation of the service when communicating with the primary engine. Furthermore, the vulnerability enables SSRF attacks against internal network resources or cloud metadata services (e.g., 169.254.169.254) using arbitrary JSON payloads.
Attack Chain
- Attacker identifies a reachable Flyto Core verification service listening on port 8344 on a target network.
- Attacker crafts an unauthenticated
POSTrequest to the/runendpoint. - Attacker sets the
callback_urlparameter to a malicious URI (e.g.,http://attacker-controlled-host.tld/). - The service receives the request and fails to validate the
callback_urlagainst the expectedtarget_allowedallowlist. - The
post_callbackfunction prepares an outbound request, fetching theFLYTO_RUNNER_SECRETfrom the process environment. - The service sends the request to the attacker's URI, including the
X-Internal-Keyheader containing the secret. - Attacker captures the
FLYTO_RUNNER_SECRETfrom the incoming request logs. - Attacker uses the stolen secret to authenticate and forge legitimate callbacks to the primary Flyto engine.
Impact
Successful exploitation leads to a total loss of confidentiality regarding the internal runner secret and potential full compromise of the Flyto workflow engine. By bypassing authentication, attackers can interact with internal cloud metadata services, exfiltrate sensitive environment configuration, and gain the ability to submit unauthorized workflows or callbacks, effectively masquerading as a legitimate runner.
Recommendation
- Immediately restrict access to the
/runendpoint using network-level controls (e.g., firewall rules or security groups) so it is only accessible from trusted internal IP ranges. - Bind the
flyto-verificationservice to127.0.0.1instead of0.0.0.0in theDockerfileand service configuration to prevent exposure to external network segments. - Patch to a version where
callback_urlis validated against a strict allowlist and protected by SSRF guards. - Rotate the
FLYTO_RUNNER_SECRETimmediately, as any instance running 2.26.6 or earlier must be assumed to have had this secret compromised. - Implement authentication (e.g., via OAuth or API keys) for all endpoints in the
flyto-verificationservice to ensure that only authorized users can trigger the execution workflow.
Detection coverage 1
Detect Exploitation of Flyto Core CVE-2026-67426
criticalDetects unauthenticated POST requests to the /run endpoint of the Flyto verification service, which is indicative of exploitation attempts.
Detection queries are available on the platform. Get full rules →