Unauthenticated SSRF in Kestra OSS via Pebble http() Function
An unauthenticated SSRF vulnerability in the Kestra OSS Pebble template engine allows remote attackers to perform arbitrary requests to internal network services and cloud metadata endpoints.
CVE search metadata
CVE search record: CVE-2026-73247. Severity: high. CVSS: 8.6. EPSS: 0.37%. KEV: no. Product: Kestra OSS (<= 1.3.31, < 2.0.0). Brief: Unauthenticated SSRF in Kestra OSS via Pebble http() Function. Brief link: https://feed.craftedsignal.io/briefs/2026-09-kestra-ssrf/
Kestra OSS versions up to 1.3.31 and versions prior to 2.0.0 contain a critical Server-Side Request Forgery (SSRF) vulnerability due to insufficient validation in the Pebble template engine's http() function. The vulnerability resides in core/src/main/java/io/kestra/core/runners/pebble/functions/HttpFunction.java, where user-supplied URLs are processed by URI.create() without any sanitization or restriction on target destinations. An unauthenticated attacker can exploit this by uploading a malicious Flow YAML via the Kestra API. The lack of tenant authentication, combined with the ability to define arbitrary target schemes (including file:// or gopher://) and target ranges (including localhost or cloud metadata services like 169.254.169.254), allows the attacker to exfiltrate cloud credentials, query internal infrastructure, or interact with restricted localhost services. This represents a significant risk for deployments running in cloud environments.
Attack Chain
- Attacker identifies a Kestra OSS instance reachable via the network.
- Attacker crafts a malicious YAML flow configuration containing the
http()function targeting an internal or metadata endpoint. - Attacker uses a
POSTrequest to/api/v1/main/flows/importto upload the malicious flow definition without requiring authentication. - Attacker uses a
POSTrequest to the/api/v1/main/executions/endpoint to trigger the flow execution. - The Kestra runner evaluates the Pebble template, invoking the
HttpFunction.javalogic with the attacker-controlled URI. - The backend performs an outbound HTTP request from the server to the target internal/metadata service.
- Attacker retrieves the response data through the flow execution output or logs to exfiltrate sensitive metadata or service responses.
Impact
Successful exploitation allows unauthenticated remote attackers to bypass network boundaries. Attackers can exfiltrate sensitive information from cloud provider metadata endpoints (e.g., AWS/GCP/Azure instance metadata service), interact with internal services that are otherwise protected by firewalls, and potentially escalate privileges by harvesting cloud-assigned IAM roles or service credentials.
Recommendation
Prioritize the immediate mitigation of CVE-2026-73247. Update Kestra OSS to a patched version (>= 1.3.32 or >= 2.0.0). Until updates are deployed, implement strictly scoped network egress controls for the Kestra server to prevent connections to internal RFC1918 subnets and the cloud provider metadata service (169.254.169.254). Monitor web server access logs for POST requests to /api/v1/main/flows/import from untrusted or unexpected source IPs.
Immediate actions
Patch Kestra OSS to version 1.3.32 or 2.0.0
Mitigations
Implement egress filtering on Kestra host to block 169.254.169.254 and private subnets
CVE-2026-73247
Detection coverage 1
Detect CVE-2026-73247 Exploitation - Kestra Flow Import Attempt
highDetects unauthenticated flow imports to Kestra which may indicate exploitation of the SSRF vulnerability
Detection queries are available on the platform. Get full rules →
Indicators of compromise
1
ip
| Type | Value |
|---|---|
| ip | 169.254.169.254 |