Summary
A flaw in the Flyto2 Core verification service allows unauthenticated callers to trigger outbound HTTP requests to arbitrary callback URLs, sending the internal runner secret header with each request.
When the service is exposed on a network interface without proper access controls, this can enable server-side request forgery (SSRF) and leakage of sensitive secrets to attacker-controlled endpoints.
A flaw in the Flyto2 Core verification service allows unauthenticated callers to trigger outbound HTTP requests to arbitrary callback URLs, sending the internal runner secret header with each request.
When the service is exposed on a network interface without proper access controls, this can enable server-side request forgery (SSRF) and leakage of sensitive secrets to attacker-controlled endpoints.
Affected context
This vulnerability manifests in deployments using the standalone flyto-verification service from src/core/verification_service.py where:
- The service listens on
0.0.0.0:8344(or otherwise reachable externally) - The POST
/runendpoint is exposed without authentication or network segmentation - Client-supplied
callback_urlvalues are used directly for outbound HTTP callbacks
In such environments, untrusted callers can cause outbound requests to arbitrary URLs and receive internal secret headers.
This vulnerability manifests in deployments using the standalone flyto-verification service from src/core/verification_service.py where:
- The service listens on
0.0.0.0:8344(or otherwise reachable externally) - The POST
/runendpoint is exposed without authentication or network segmentation - Client-supplied
callback_urlvalues are used directly for outbound HTTP callbacks
In such environments, untrusted callers can cause outbound requests to arbitrary URLs and receive internal secret headers.
Exploit preconditions
- Attack surface: HTTP POST
/runendpoint on the verification service, listening on0.0.0.0:8344or accessible over the network - Required access: Network reachability to the verification service; no authentication or prior trust required
- Trigger point: Sending a crafted POST request to
/runwith a chosencallback_urlpointing to an attacker-controlled or internal service - Why exploitation is possible: The service does not enforce authentication (CWE-306) and bypasses
target_allowedchecks while reusingcallback_urlfor outbound POST requests, includingX-Internal-Key: $FLYTO_RUNNER_SECRET(CWE-522, CWE-918)
- Attack surface: HTTP POST
/runendpoint on the verification service, listening on0.0.0.0:8344or accessible over the network - Required access: Network reachability to the verification service; no authentication or prior trust required
- Trigger point: Sending a crafted POST request to
/runwith a chosencallback_urlpointing to an attacker-controlled or internal service - Why exploitation is possible: The service does not enforce authentication (CWE-306) and bypasses
target_allowedchecks while reusingcallback_urlfor outbound POST requests, includingX-Internal-Key: $FLYTO_RUNNER_SECRET(CWE-522, CWE-918)
Why this happens
The core issue is the combination of an unauthenticated, externally reachable control endpoint and unvalidated use of client-supplied URLs for server-initiated callbacks.
The verification service trusts the callback_url parameter and performs outbound HTTP requests without validating or constraining the target, mapping directly to CWE-918: Server-Side Request Forgery (SSRF).
Additionally, the service attaches sensitive authentication material (X-Internal-Key with $FLYTO_RUNNER_SECRET) to these requests, exposing secrets to arbitrary destinations (CWE-522), and fails to require authentication or authorization on the /run endpoint (CWE-306).
The core issue is the combination of an unauthenticated, externally reachable control endpoint and unvalidated use of client-supplied URLs for server-initiated callbacks.
The verification service trusts the callback_url parameter and performs outbound HTTP requests without validating or constraining the target, mapping directly to CWE-918: Server-Side Request Forgery (SSRF).
Additionally, the service attaches sensitive authentication material (X-Internal-Key with $FLYTO_RUNNER_SECRET) to these requests, exposing secrets to arbitrary destinations (CWE-522), and fails to require authentication or authorization on the /run endpoint (CWE-306).
Potential impact
- Attackers may cause SSRF to internal services that are otherwise not directly reachable from the internet.
- Attackers could exfiltrate the runner secret by directing callbacks to attacker-controlled endpoints.
- Attackers may pivot deeper into internal infrastructure using the compromised secret.
- Attackers could abuse internal APIs, metadata services, or management endpoints via forged requests.
- Attackers can disrupt or manipulate automation and AI-agent workflows triggered through the verification service.
- Attackers may cause SSRF to internal services that are otherwise not directly reachable from the internet.
- Attackers could exfiltrate the runner secret by directing callbacks to attacker-controlled endpoints.
- Attackers may pivot deeper into internal infrastructure using the compromised secret.
- Attackers could abuse internal APIs, metadata services, or management endpoints via forged requests.
- Attackers can disrupt or manipulate automation and AI-agent workflows triggered through the verification service.
General mitigation guidance
Effective mitigation focuses on tightening endpoint access control, constraining callback destinations, and isolating sensitive secrets from untrusted flows.
Recommended patterns include:
- Enforcing strong authentication and authorization on control endpoints like
/run, ensuring only trusted components can trigger verification runs. - Applying strict allowlists or policy-based validation to any outbound callback URL, restricting targets to known internal services or domains.
- Decoupling sensitive secrets from generic callback traffic; avoid sending internal keys to destinations derived from untrusted input.
- Segmenting the verification service on internal network interfaces or behind API gateways and service meshes with access controls.
- Adopting least-privilege principles for services that hold secrets and reducing their exposure to external inputs.
Effective mitigation focuses on tightening endpoint access control, constraining callback destinations, and isolating sensitive secrets from untrusted flows.
Recommended patterns include:
- Enforcing strong authentication and authorization on control endpoints like
/run, ensuring only trusted components can trigger verification runs. - Applying strict allowlists or policy-based validation to any outbound callback URL, restricting targets to known internal services or domains.
- Decoupling sensitive secrets from generic callback traffic; avoid sending internal keys to destinations derived from untrusted input.
- Segmenting the verification service on internal network interfaces or behind API gateways and service meshes with access controls.
- Adopting least-privilege principles for services that hold secrets and reducing their exposure to external inputs.
How teams detect issues like this
Organizations can identify and monitor this type of issue through:
- Static analysis and code review patterns that flag unauthenticated externally bound endpoints and direct use of user-supplied URLs in outbound requests.
- Policy checks that require authentication and authorization on administrative or workflow-triggering endpoints.
- Configuration reviews for services listening on
0.0.0.0and exposing sensitive functionality without gateway-level protection. - Logging and monitoring of outbound HTTP traffic, especially requests carrying internal authentication headers or secrets to untrusted domains.
- Periodic security testing focused on SSRF scenarios and secret leakage through callback or webhook mechanisms.
Organizations can identify and monitor this type of issue through:
- Static analysis and code review patterns that flag unauthenticated externally bound endpoints and direct use of user-supplied URLs in outbound requests.
- Policy checks that require authentication and authorization on administrative or workflow-triggering endpoints.
- Configuration reviews for services listening on
0.0.0.0and exposing sensitive functionality without gateway-level protection. - Logging and monitoring of outbound HTTP traffic, especially requests carrying internal authentication headers or secrets to untrusted domains.
- Periodic security testing focused on SSRF scenarios and secret leakage through callback or webhook mechanisms.

