Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain valid tenant environment API key
-
DeliveryCraft dot-segment traversal packet path targeting victim tenant key
-
ExploitSubmit path to /api/v1/packets/* endpoint
-
InstallWHATWG URL normalization collapses traversal before signing
-
C2findResource stub approves any key unconditionally
-
ExecuteServer returns cross-tenant presigned S3 URL
-
ImpactRead or overwrite victim tenant task payloads via S3
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Exploitation requires possession of a valid Trigger.dev environment API key for any tenant on the target instance - the attacker must be an authenticated low-privilege user, not an external unauthenticated actor. The /api/v1/packets/$ and /api/v2/packets/$ route endpoints must be network-reachable (standard for any Trigger.dev webapp deployment). The target deployment must use a shared AWS S3-compatible object store where multiple tenants' packet data resides in the same bucket, which is the default platform configuration. The attacker must additionally know or enumerate valid object-store key paths belonging to other tenants; if keys are cryptographically opaque (e.g., UUID-based), discovery is harder but not prevented since the path traversal itself is unrestricted. The vulnerability does not affect database records or metadata outside the object store, and no availability impact is expected. The primary limiting factor is the requirement for a valid API key, which restricts exploitation to registered tenants (insiders, compromised accounts, or API key leaks) rather than arbitrary internet actors. |
| Impact | The CVSS 8.2 score with S:C (scope changed) accurately reflects the real-world severity: a tenant-authenticated attacker in one security domain can cross into another tenant's storage domain, which is a meaningful and directly impactful boundary violation. The AC:H metric reflects the need to know or enumerate valid object-store key paths belonging to other tenants; however, if target keys follow predictable naming conventions (e.g., project-ref/env-slug/task-id), the practical complexity drops substantially. EPSS data was not provided for this CVE, so exploitation probability cannot be quantified from probabilistic models, but the stub ownership check confirms the bypass is trivially reproducible by any authenticated caller - even a mid-sized municipal IT team in gdynia operating a self-hosted Trigger.dev instance should treat this as urgent given that any tenant on the platform could pivot to read or corrupt other tenants' task payloads. No KEV listing is present and no public exploit has been identified at time of analysis, which tempers urgency slightly for internet-exposed instances, but the combination of network reachability, low-privilege requirement, no user interaction, and a no-op authorization check makes this a genuine high-priority remediation target rather than a theoretical paper risk. The absence of an availability component (A:N) means exploitation leaves no obvious trace in error logs, increasing dwell-time risk. |
| Exploit ScenarioDerived | An attacker holding a valid Trigger.dev environment API key for their own tenant crafts a packet path containing dot-segment traversal sequences - for example ../../victim-project-ref/prod/sensitive-payload-key - and submits it to the /api/v1/packets/* or /api/v2/packets/* endpoint. Because WHATWG URL normalization in URL.pathname collapses the traversal before the request is processed and the findResource stub always returns truthy, the server generates and returns a valid AWS presigned URL scoped to the victim tenant's S3 key. The attacker then uses that presigned URL directly against the S3 endpoint to download or overwrite the victim tenant's task payload data, fully bypassing application-level authorization. No public exploit code has been identified at time of analysis, but the attack mechanism is directly derivable from the CVE description. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 13, 2026
Cross-tenant path traversal in Trigger.dev versions 4.4.2 through pre-4.5.0-rc.5 allows any authenticated tenant holding a valid environment API key to obtain presigned AWS S3 URLs scoped to another tenant's object-store keys, enabling unauthorized read and write access to task payloads. The flaw combines user-controlled packet path keys written directly into URL.pathname without dot-segment rejection and a stub ownership check (findResource: async () => 1) that unconditionally returns truthy for any requested resource. No public exploit code has been identified at time of analysis, though the mechanism is straightforward to reproduce from the CVE description alone, and the vendor has released a fix in v4.5.0-rc.5.
RemediationAI
The primary fix is to upgrade to Trigger.dev v4.5.0-rc.5 or later, as documented at https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.0-rc.5 and in security advisory GHSA-888c-px7m-736v. The patch introduced in PR #3830 (commit db4074df54db06b0656becf3f974345c90fa202e) adds assertRawPacketRelativePathSegments() to reject empty, dot, double-dot, backslash, and percent-encoded traversal sequences; normalizePacketRelativePath() to canonicalize paths using the same WHATWG URL logic that was previously exploitable; and assertPacketObjectStoreKeyUnderPrefix() to verify the resolved key stays within the tenant's designated prefix before signing. For operators unable to upgrade immediately, a compensating control is to enforce S3 bucket policies or IAM condition keys (s3:prefix) that restrict presigned URL generation to per-tenant prefix namespaces at the infrastructure layer - this requires that tenant prefixes are already isolated in the bucket layout and does not protect deployments where all tenants share a flat prefix. This workaround has a meaningful operational trade-off: it must be maintained in sync with application-layer prefix conventions and provides no protection if the prefix structure itself is predictable. There is no application-layer workaround that eliminates the vulnerability without applying the patch.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Trigger.dev is a TypeScript-based platform for building and deploying AI agent workflows, identified by CPE cpe:2.3:a:triggerdotdev:trigger.dev:*:*:*:*:*:*:*:*. The webapp component uses an Aws4FetchClient class in apps/webapp/app/v3/objectStoreClient.server.ts whose buildUrl() and presign() methods accept user-supplied packet keys and assign them to URL.pathname for AWS Signature Version 4 signing. The WHATWG URL API normalizes pathname components, silently collapsing dot-segment traversal sequences such as ../ before the URL is signed, meaning the signature covers the resolved (escaped) path rather than the raw malicious input. The route handler apps/webapp/app/routes/api.v1.packets.$.ts accepts params['*'] - a catch-all wildcard - without any rejection of dot segments or percent-encoded traversal sequences. Critically, the resource ownership check is implemented as findResource: async () => 1, a stub that always returns a truthy value without consulting any per-tenant authorization policy. This combination is classified under CWE-20 (Improper Input Validation) because the root cause is the failure to validate user-controlled path components before incorporating them into security-sensitive URL construction and before enforcing access control boundaries.
Know when Trigger Dev gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N
Network-reachable API requires a valid tenant API key (PR:L), key enumeration introduces genuine complexity (AC:H), and cross-tenant data access constitutes a scope change (S:C) with full read/write payload impact (C:H/I:H) and no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Trigger.dev is a platform for building and deploying fully managed AI agents and workflows. From 4.4.2 until 4.5.0-rc.5, Aws4FetchClient.buildUrl() and Aws4FetchClient.presign() in apps/webapp/app/v3/objectStoreClient.server.ts assign user-controlled packet keys to URL.pathname, while apps/webapp/app/routes/api.v1.packets.$.ts accepts params["*"] without rejecting dot segments and uses findResource: async () => 1 without per-resource ownership validation. WHATWG path normalization collapses .. segments before signing, allowing a caller with a valid environment API key to obtain presigned URLs for another tenant's object-store keys and read or overwrite task payloads. This issue is fixed in version 4.5.0-rc.5.
Executive ViewAI
Trigger.dev versions 4.4.2 through pre-4.5.0-rc.5 contain a cross-tenant path traversal vulnerability allowing any authenticated user with a valid environment API key to access other tenants' task payloads in AWS S3, creating material data exposure risk. Organizations operating these versions in multi-tenant deployments face unauthorized read and write access to competitor or customer data. Immediate patching is required to prevent lateral tenant compromise.
Apply vendor patch: upgrade to v4.5.0-rc.5 or later.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Trigger Dev
View allPrototype pollution in Trigger.dev's run metadata API (versions 3.3.8 through 4.5.5) lets any authenticated tenant corru
Cross-tenant authorization bypass in Trigger.dev before 4.5.6 lets a caller holding a valid API key for one project act
Missing authorization on the run replay API endpoint in Trigger.dev before 4.5.2 allows authenticated attackers to injec
Path traversal in Trigger.dev's packet presign API routes (versions 4.4.2 through 4.4.x) allows a holder of any valid pr
Account takeover in Trigger.dev before 4.5.2 allows an unauthenticated remote attacker to hijack any existing user accou
Trigger.dev before 4.6.0 allows an authenticated low-privilege user to bind an arbitrary GitHub App installation to thei
Server-side request forgery in Trigger.dev before 4.5.2 allows authenticated organization members to register webhook al
Cross-tenant run replay in Trigger.dev 4.4.2-4.5.0-rc.3 allows any authenticated API key holder to replay task runs belo
EUVD-2026-58480
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB