Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Network API reachable (AV:N) with simple encoded-traversal payload (AC:L), requires a low-privilege authenticated execution account (PR:L), no interaction; reads host/cross-tenant files beyond the storage authority (S:C, C:H) with no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.43 and 1.3.19, several Kestra API endpoints accept a kestra:// URI from the client and pass it through StorageInterface.parentTraversalGuard before reading the underlying file from the local storage backend. The guard only inspects the literal URI.toString(), so a URL-encoded .. written as %2E%2E slips through. The downstream code then calls URI.getPath(), which decodes %2E%2E back to .., and the resulting path is handed to Paths.get(...) without normalization. The OS resolves the .. segments at open(2) time, so an authenticated user with a single execution can read any file the Kestra process has access to on the host filesystem (/etc/passwd, mounted secrets, other tenants' execution outputs, etc.). This vulnerability is fixed in 1.0.43 and 1.3.19.
AnalysisAI
Arbitrary file read in Kestra orchestration platform (versions prior to 1.0.43 and 1.3.19) lets an authenticated user with execution privileges read any file accessible to the Kestra process via a URL-encoded path-traversal in kestra:// storage URIs. The parentTraversalGuard checks only the literal URI string, so %2E%2E bypasses it before URI.getPath() decodes it back to '..', exposing /etc/passwd, mounted secrets, and other tenants' execution outputs. No public exploit identified at time of analysis; rated CVSS 7.7 with a scope change reflecting cross-tenant and host-filesystem exposure.
Technical ContextAI
Kestra is an event-driven workflow orchestration platform that abstracts file storage behind a StorageInterface, addressing artifacts via kestra:// URIs that map onto a local storage backend. This is a classic CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') flaw rooted in inconsistent canonicalization: the parentTraversalGuard sanitizer inspects URI.toString() (the still-encoded form) while the downstream consumer calls URI.getPath() (the decoded form), creating a parser-differential. Because the decoded path containing '..' segments is passed to Paths.get(...) without normalization, the operating system resolves the traversal at open(2) time, escaping the intended storage root. The single affected codebase is cpe:2.3:a:kestra-io:kestra, with no platform restriction since the bug is in Java URI handling.
RemediationAI
Upgrade to a patched release: Kestra 1.0.43 for the 1.0.x branch or 1.3.19 for the 1.3.x branch (Vendor-released patch: 1.0.43 and 1.3.19), as documented in advisory GHSA-3529-p4wf-xp79 (https://github.com/kestra-io/kestra/security/advisories/GHSA-3529-p4wf-xp79). If immediate patching is not possible, reduce the authenticated attack surface by tightening RBAC so that only trusted users hold execution privileges, and isolate the Kestra process: run it under a dedicated low-privilege OS account with a minimal filesystem footprint (no readable host secrets or other tenants' data on the same mount), which limits what a successful traversal can disclose but does not close the bug. Where feasible, place the affected API endpoints behind network controls (restrict access to the execution/storage-read endpoints to trusted networks) and avoid mounting sensitive secrets into the Kestra container filesystem in favor of an external secrets manager; the trade-off is operational friction in workflows that legitimately read mounted files. These are stopgaps only - upgrading is the authoritative fix.
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
Authenticated path traversal in Kestra's local internal-storage backend (versions prior to 1.0.45 and 1.3.23) lets any l
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-39921