/

CVE-2026-114083

Severity:

HIGH RISK

(8.1)

Path Traversal (CWE-22) in Trigger.dev Packets API

CVE-2026-114083

Deferred

Vulnerability type

Category:

Path Traversal

CWE:

CWE-22

Impact:

Cross-Tenant Data Disclosure and Unauthorized Modification

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Trigger.dev before 4.5.0-rc.3 contains a path traversal vulnerability in its packets API endpoints. An authenticated tenant with one valid API key may use crafted filename path segments to escape its assigned object-key prefix and obtain URLs that read or overwrite another tenant's run payloads and outputs.

Trigger.dev before 4.5.0-rc.3 contains a path traversal vulnerability in its packets API endpoints. An authenticated tenant with one valid API key may use crafted filename path segments to escape its assigned object-key prefix and obtain URLs that read or overwrite another tenant's run payloads and outputs.

Affected context

The vulnerability occurs in the API v1 and v2 packets endpoints when a filename or path-like splat segment is incorporated into object-storage keys without adequate canonicalization and boundary enforcement. It becomes risky when tenants share an object-storage namespace and the service generates presigned GET or PUT URLs based on attacker-controlled path components.

The vulnerability occurs in the API v1 and v2 packets endpoints when a filename or path-like splat segment is incorporated into object-storage keys without adequate canonicalization and boundary enforcement. It becomes risky when tenants share an object-storage namespace and the service generates presigned GET or PUT URLs based on attacker-controlled path components.

Exploit preconditions

  • Attack surface: Trigger.dev api/v1/packets and api/v2/packets endpoints
  • Required access: One valid authenticated tenant API key
  • Trigger point: Processing a packet request containing a crafted filename or splat path segment
  • Why exploitation is possible: Unsanitized traversal sequences can escape the requesting tenant's object-key prefix before a presigned URL is generated
  • Attack surface: Trigger.dev api/v1/packets and api/v2/packets endpoints
  • Required access: One valid authenticated tenant API key
  • Trigger point: Processing a packet request containing a crafted filename or splat path segment
  • Why exploitation is possible: Unsanitized traversal sequences can escape the requesting tenant's object-key prefix before a presigned URL is generated

Why this happens

The underlying bug is improper neutralization of path elements used to build object-storage keys. The packet endpoints appear to trust a filename-like segment without canonicalizing it and verifying that the resulting key remains within the authenticated tenant's permitted prefix. This behavior maps to CWE-22, Path Traversal, because attacker-controlled path components alter the intended storage location.

The underlying bug is improper neutralization of path elements used to build object-storage keys. The packet endpoints appear to trust a filename-like segment without canonicalizing it and verifying that the resulting key remains within the authenticated tenant's permitted prefix. This behavior maps to CWE-22, Path Traversal, because attacker-controlled path components alter the intended storage location.

Potential impact

  • An attacker may obtain presigned URLs for another tenant's run payloads or outputs.
  • Sensitive cross-tenant data could be disclosed.
  • An attacker could overwrite or corrupt another tenant's stored objects.
  • Run integrity, workflow results, and downstream processing could be affected.
  • The issue could enable broader tenant isolation failures within shared storage.
  • An attacker may obtain presigned URLs for another tenant's run payloads or outputs.
  • Sensitive cross-tenant data could be disclosed.
  • An attacker could overwrite or corrupt another tenant's stored objects.
  • Run integrity, workflow results, and downstream processing could be affected.
  • The issue could enable broader tenant isolation failures within shared storage.

General mitigation guidance

Mitigation generally focuses on enforcing storage boundaries independently of

user-controlled filenames.

Common defensive patterns include:

  • Treating filenames and path segments as untrusted data.
  • Canonicalizing paths before authorization and rejecting traversal components.
  • Constructing object keys from server-controlled tenant identifiers rather than concatenating raw user input.
  • Verifying that every resolved key remains within the authenticated tenant's allowed prefix.
  • Applying least-privilege permissions to presigned URLs, including narrow object scope and limited lifetime.
  • Separating tenant storage namespaces and enforcing authorization at the storage layer where practical.
  • Using distinct controls for read and write operations and avoiding overwrite capability by default.

Mitigation generally focuses on enforcing storage boundaries independently of

user-controlled filenames.

Common defensive patterns include:

  • Treating filenames and path segments as untrusted data.
  • Canonicalizing paths before authorization and rejecting traversal components.
  • Constructing object keys from server-controlled tenant identifiers rather than concatenating raw user input.
  • Verifying that every resolved key remains within the authenticated tenant's allowed prefix.
  • Applying least-privilege permissions to presigned URLs, including narrow object scope and limited lifetime.
  • Separating tenant storage namespaces and enforcing authorization at the storage layer where practical.
  • Using distinct controls for read and write operations and avoiding overwrite capability by default.

How teams detect issues like this

Organizations can look for:

  • Static analysis findings involving path joins, string concatenation, or object-key construction with request-derived filenames.
  • Code review signals where authorization occurs before canonicalization or where prefix checks use raw, non-normalized strings.
  • Tests covering traversal encodings, alternate separators, nested paths, and attempts to escape tenant prefixes.
  • API and storage logs showing unusual filename segments, access to unexpected tenant prefixes, or presigned URL creation outside normal ownership boundaries.
  • Policy enforcement requiring server-generated storage keys and explicit tenant-scope checks before URL generation.
  • Automated security review tools that identify path traversal and broken object-level authorization patterns.

Organizations can look for:

  • Static analysis findings involving path joins, string concatenation, or object-key construction with request-derived filenames.
  • Code review signals where authorization occurs before canonicalization or where prefix checks use raw, non-normalized strings.
  • Tests covering traversal encodings, alternate separators, nested paths, and attempts to escape tenant prefixes.
  • API and storage logs showing unusual filename segments, access to unexpected tenant prefixes, or presigned URL creation outside normal ownership boundaries.
  • Policy enforcement requiring server-generated storage keys and explicit tenant-scope checks before URL generation.
  • Automated security review tools that identify path traversal and broken object-level authorization patterns.

Sources

SourceLink
github.comgithub.com/triggerdotdev/trigger.dev/security/advisories/GHSA-gx7f-q62h-9fxp
vulncheck.comvulncheck.com/advisories/trigger-dev-before-4.5.0-rc.3-path-traversal-via-packets-presigned-url-endpoints

Frequently asked

questions

Yes, within the application's authenticated API surface. An attacker generally

needs network access to the packets endpoints and a valid API key, but does not

need credentials belonging to the victim tenant.

The described attack requires one valid authenticated tenant API key. The key

does not need to belong to the tenant whose objects are targeted.

Treat filenames as untrusted metadata, derive object keys from server-controlled

tenant context, canonicalize any remaining path components, and verify the

normalized result remains inside the authorized prefix before issuing a URL.

Combine tenant-scoped authorization with storage-layer isolation, strict

path-handling tests, narrowly scoped presigned URLs, and monitoring for

cross-tenant object access or unexpected traversal patterns.

Yes, within the application's authenticated API surface. An attacker generally

needs network access to the packets endpoints and a valid API key, but does not

need credentials belonging to the victim tenant.

The described attack requires one valid authenticated tenant API key. The key

does not need to belong to the tenant whose objects are targeted.

Treat filenames as untrusted metadata, derive object keys from server-controlled

tenant context, canonicalize any remaining path components, and verify the

normalized result remains inside the authorized prefix before issuing a URL.

Combine tenant-scoped authorization with storage-layer isolation, strict

path-handling tests, narrowly scoped presigned URLs, and monitoring for

cross-tenant object access or unexpected traversal patterns.

Find out what's already
exploitable in your codebase.