Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain lower-trust project API key
-
ExploitPOST to deployment cancel endpoint
-
ExecutionLookup resolves by projectId only (env scope bypassed)
-
ImpactCancel in-progress production deployment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Requires the attacker to possess a valid but lower-trust secret API key (dev, preview, or CI/per-PR preview-branch key) for the SAME project as the target, and the target deployment must be in a non-final, in-progress state (PENDING, INSTALLING, BUILDING, or DEPLOYING) - validateDeployment rejects only FINAL_DEPLOYMENT_STATUSES. Limiting factors that reduce real-world risk: the flaw cannot cross project boundaries (lookup is still projectId-scoped), it cannot read or exfiltrate the production deployment (the GET route remains correctly environmentId-scoped and returns 404), it only cancels - not modifies or deploys - and affected installs must be running trigger.dev before 4.5.6 (self-hosted or cloud). |
| Impact | This is a genuine but moderate-severity authorization flaw, not a critical priority. The vendor-provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the score of 5.3 (MEDIUM) are internally consistent with the description: exploitation is network-reachable, low-complexity, requires no user interaction, but does require privileges (PR:L) - specifically a valid lower-trust API key for the target project. Impact is correctly scoped to partial integrity/availability (VI:L/VA:L) with no confidentiality loss (VC:N), matching a flaw that cancels (disrupts) deployments but does not read or steal data. No EPSS score was provided, the CVE is NOT on CISA KEV, and no public proof-of-concept is referenced, so exploitation status is 'no public exploit identified at time of analysis.' The signals do not conflict: a MEDIUM CVSS with no KEV/POC and a privilege requirement points to a real-but-limited risk primarily affecting multi-environment CI/CD pipelines where lower-trust keys exist. The main nuance is organizational: because the broken trust boundary is between a project's own environments, the realistic threat is an insider, a compromised dev/preview/CI key, or a malicious collaborator - not an anonymous internet attacker. |
| Exploit ScenarioDerived | An attacker who holds a lower-trust API key (dev, preview, or CI secret key) for a Trigger.dev project - for example a leaked CI secret or a malicious contributor - sends a crafted POST to the deployment cancel endpoint referencing an in-progress production deployment's friendlyId in the same project. Because DeploymentService.getDeployment scopes the lookup by projectId only, the production deployment is cancelled despite the key lacking production privileges, disrupting the release. No public exploit code is referenced, but the flaw is trivially reproducible from the advisory's root-cause analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Cross-environment authorization bypass in Trigger.dev before 4.5.6 lets holders of lower-trust environment secret keys (dev, preview, or CI) cancel in-progress production deployments inside the same project. The cancel path resolves deployments through DeploymentService.getDeployment, which filters on projectId only and never on environmentId, so a key that is refused with a 404 when reading a production deployment through the correctly environment-scoped GET route can still abort it while it sits in PENDING, INSTALLING, BUILDING, or DEPLOYING state. Impact is moderate (CVSS 5.3, authenticated with PR:L): the flaw cannot cross project boundaries, cannot read or exfiltrate deployment data, and only cancels rather than modifies or creates deployments; no public exploit code was identified at time of analysis, and the issue is fixed in 4.5.6.
RemediationAI
Vendor-released patch: upgrade the trigger.dev npm package to 4.5.6 (or rebuild self-hosted images from the 4.5.6 release, which incorporates PR #4316 / commit 6997aeb05e27d2db47f9eda01fdc8a17c81a1ae0) so the cancel path scopes lookups by environmentId in addition to projectId. See the advisory at https://github.com/triggerdotdev/trigger.dev/security/advisories/GHSA-4672-hwv6-gq62 for confirmation and release notes. If upgrading must be staged, compensating controls are: stop issuing dev, preview, and CI secret keys in any project that also hosts production deployments on a vulnerable version, and rotate keys already held by lower-trust users or CI systems - the trade-off is that per-PR preview workflows lose their isolation model and must be re-provisioned once patched. Add alerting on workerDeployment status transitions to CANCELED, flagging cancellations where the acting key belongs to a different environment than the target deployment, so abuse during the exposure window is detected even though it cannot be prevented. Where API-driven cancellation from CI is not required, block POST requests to the deployment cancel endpoint for non-production keys at the reverse proxy or gateway; this prevents the attack but also breaks legitimate CI and dev-environment cancellation automation, which then must be performed manually or from a production-scoped key. Note that the read path is already environment-scoped, so restricting GET access provides no mitigation for this cancel-only flaw.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Trigger.dev partitions each project into isolated environments (dev, staging, prod, and per-PR preview branches), each issued its own secret API key, and treats the environment as a trust boundary: most API routes scope resource lookups with a runtimeEnvironmentId or environmentId predicate matching the authenticated key. The deployment cancel route in apps/webapp breaks that invariant. It authenticates the caller to an environment, then calls deploymentService.cancelDeployment, whose signature is typed as Pick of AuthenticatedEnvironment limited to projectId - the environment identity is literally discarded at the type level. The underlying Prisma call workerDeployment.findFirst uses where { friendlyId, projectId } with no environmentId filter, so the user-controlled friendlyId (the CWE-639 authorization-bypass key) is matched against the whole project rather than the caller's environment slice. The subsequent validateDeployment step only rejects FINAL_DEPLOYMENT_STATUSES, meaning every non-terminal state (PENDING, INSTALLING, BUILDING, DEPLOYING) remains cancellable and the updateMany flips status to CANCELED. The sibling GET route in api.v1.deployments.$deploymentId.ts does add environmentId to the where clause, which is why the same key returns 404 on read but succeeds on cancel - that asymmetry is the defect. The vulnerable code lives in the Node/TypeScript webapp (apps/webapp, HEAD 5d99457) and affects both self-hosted deployments and Trigger.dev Cloud; the fix restores environment scoping on the cancel path.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
Network API endpoint (AV:N/AC:L) requires a valid lower-trust project key (PR:L), no UI; cancelling deployments harms integrity/availability partially (I:L/A:L) with no data disclosure (C:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Trigger.dev before 4.5.6 contains an improper authorization vulnerability that allows holders of lower-trust environment API keys to cancel other environments' deployments because DeploymentService.getDeployment scopes lookups by projectId only. Attackers with a dev, preview, or CI secret key can POST to the deployment cancel endpoint to cancel in-progress production deployments within the same project.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Related Vulnerabilities in Trigger.dev Authorization and Injection Flaws
View all 29More 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
EUVD-2026-106882
GHSA-49rg-27pr-85f9
NVD
CVE.org
EPSS
Exploit-DB