Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Network endpoint with low complexity, requires only the lowest authenticated role (PR:L); reading files outside the storage sandbox and across tenants is a scope change (S:C) with confidentiality-only impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.23, the local internal-storage backend validates user-supplied paths for .. traversal before it converts Windows-style backslashes to forward slashes. An attacker can therefore smuggle a traversal sequence past the guard using backslashes (..\..\..\); the guard sees a harmless string, and the path is only rewritten to ../../../ after validation, immediately before the file is opened. Any authenticated user who can view an execution (the lowest-privilege role) can call GET /api/v1/{tenant}/executions/{executionId}/file?path=… and read any file on the server filesystem readable by the Kestra process, outside the storage sandbox and across every tenant and namespace. This includes the embedded H2 database (all flows, all users, all stored secrets), internal storage of every other tenant/namespace, mounted secret files, and the process environment (/proc/self/environ) which contains configured database and secret-backend credentials. It is a complete breach of Kestra's storage isolation and multi-tenancy boundary. This vulnerability is fixed in 1.0.45 and 1.3.23.
AnalysisAI
Authenticated path traversal in Kestra's local internal-storage backend (versions prior to 1.0.45 and 1.3.23) lets any low-privilege user with execution-view access read arbitrary files on the host. The flaw stems from validation ordering: the guard checks for '..' sequences before backslashes are normalized to forward slashes, so a Windows-style '..\..\..\' payload bypasses the check and is rewritten to a real traversal only after validation. There is no public exploit identified at time of analysis, and EPSS/KEV signals are absent, but the confidentiality impact is severe because it breaks the multi-tenant storage isolation boundary.
Technical ContextAI
Kestra is an event-driven workflow orchestration platform whose 'local' internal-storage backend stores execution artifacts on the server filesystem and exposes them through GET /api/v1/{tenant}/executions/{executionId}/file?path=…. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), specifically a validation-versus-canonicalization sequencing bug: the dot-dot guard runs against the raw input, then path separators are canonicalized (backslash → forward slash) afterward, so the sanitizer and the file-open call see two different strings. Because the rewrite happens immediately before the file is opened, the traversal escapes the storage sandbox and crosses tenant/namespace boundaries, reaching the embedded H2 database, other tenants' internal storage, mounted secret files, and /proc/self/environ. The single affected product per CPE is cpe:2.3:a:kestra-io:kestra:*:*:*:*:*:*:*:*.
RemediationAI
Upgrade to a fixed release: Vendor-released patch: Kestra 1.0.45 (for the 1.0.x line) or 1.3.23 (for the 1.3.x line), per advisory GHSA-qw4v-6w32-xx9h (https://github.com/kestra-io/kestra/security/advisories/GHSA-qw4v-6w32-xx9h). If immediate patching is not possible, restrict the lowest-privilege execution-view role so untrusted or broad user populations cannot call the executions file endpoint, and place a reverse proxy or WAF rule in front of GET /api/v1/{tenant}/executions/{executionId}/file to reject path parameters containing backslashes or encoded '..' sequences - note this can break legitimate filenames that contain backslashes and must be tested. Consider migrating off the local internal-storage backend to an object-store backend (e.g., S3/GCS) where filesystem traversal does not apply, and rotate any credentials potentially exposed via /proc/self/environ, the H2 database, or mounted secret files, since the bug yields plaintext secret disclosure.
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Kestra orchestration platform before 1.0.45 and 1.3.21 lets anonymous attackers
Kestra versions 1.1.10 and earlier allow authenticated users to perform cross-site scripting (XSS) attacks through the e
SQL injection in Kestra orchestration platform's flow search endpoint (GET /api/v1/main/flows/search) enables remote cod
Offline administrator password recovery in Kestra OSS (versions prior to 1.3.24) stems from its BasicAuth component stor
Stored cross-site scripting in Kestra's custom Markdown renderer (versions before 1.3.24) allows any authenticated user
Arbitrary file read in Kestra orchestration platform (versions prior to 1.0.43 and 1.3.19) lets an authenticated user wi
Cross-site scripting in Kestra orchestration platform versions up to 1.3.3 enables authenticated flow authors to inject
Path traversal in Kestra's `inputFiles` task mechanism allows remote attackers to write arbitrary files to the worker fi
Unauthorized file read in Kestra's execution preview API allows any authenticated tenant user to access output files fro
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39920