Skip to main content

Trigger.dev EUVDEUVD-2026-58480

| CVE-2026-73658 HIGH
Improper Input Validation (CWE-20)
2026-08-13 GitHub_M
8.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Obtain valid tenant environment API key
  2. Delivery
    Craft dot-segment traversal packet path targeting victim tenant key
  3. Exploit
    Submit path to /api/v1/packets/* endpoint
  4. Install
    WHATWG URL normalization collapses traversal before signing
  5. C2
    findResource stub approves any key unconditionally
  6. Execute
    Server returns cross-tenant presigned S3 URL
  7. Impact
    Read 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

trigger.dev 4.4.2, < 4.5.0-rc.5

Affected Packages

euvd trigger_dev_4_4_2 fix: 4.5.0-rc.5

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

Vendor (GitHub_M) PRIMARY 8.2 HIGH
AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N
vuln.today AI 8.2 HIGH

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Aug 13, 2026 - 22:19 EUVD
CVE Published
Aug 13, 2026 - 21:16 cve.org
HIGH 8.2

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch: upgrade to v4.5.0-rc.5 or later.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
niche AI/workflow automation platform, limited enterprise footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy