Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach self-hosted webapp /coordinator namespace
-
DeliveryAuthenticate with published coordinator-secret
-
ExploitEmit READY_FOR_EXECUTION with target runId
-
ExecutionReceive decrypted run environment variables
-
ImpactTamper runs via TASK_RUN_FAILED_TO_RUN events
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Credential externalization
MITRE ATT&CK
2 techniques across 2 tactics: Persistence, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Target must be a self-hosted Trigger.dev webapp (before 4.5.4) running with the default, undocumented COORDINATOR_SECRET value 'coordinator-secret' - i.e. any operator who did not discover and override the source-only variable - with the /coordinator Socket.IO namespace network-reachable. For decrypted environment-variable exfiltration via READY_FOR_EXECUTION, the deployment must still be running V1 (marqs/ Run Engine) code and the attacker must know or discover an internal runId; V2/Run Engine 2.0 deployments return nothing for this read handler and expose only the write/tamper handlers (TASK_RUN_FAILED_TO_RUN, TASK_RUN_COMPLETED, CHECKPOINT_CREATED, etc.). Limiting factors: operators who explicitly set the override secret are not vulnerable, and V2-only (v4) deployments are not exposed to secret exfiltration. Trigger.dev Cloud is not implicated by the self-host default-config description. |
| Impact | This is a genuine high-priority issue for self-hosted Trigger.dev operators, not an inflated CVSS number. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N, VC:H) correctly captures a network-reachable, unauthenticated flaw with high confidentiality impact: the /coordinator Socket.IO namespace authenticates against a hardcoded 'coordinator-secret' that is published in the public source repo (CWE-798) and is undocumented in self-host docs, .env.example, and helm values, so default deployments ship exploitable. The AT:P (Attack Requirement: Present) metric reflects the one real gating condition - the attacker must know an internal runId to exfiltrate that run's decrypted environment variables via READY_FOR_EXECUTION. Signals are consistent rather than conflicting: there is NO CISA KEV listing, NO EPSS score, and NO public exploit provided in the input, so exploitation status is low-visibility, but the trivial connect-with-published-secret primitive plus clear source-code evidence make real-world abuse plausible once a runId is discovered. Note an important scope limiter the raw score hides: the env-var read handler lives in V1-only marqs/ code, so only self-hosts still on Run Engine V1 are exposed to secret exfiltration; v4/V2-only deployments only expose the write (tamper) handlers. EPSS/KEV absence here most likely reflects recency and the self-hosted/niche footprint rather than low exploitability. |
| Exploit ScenarioDerived | An attacker who can reach a default-configured self-hosted Trigger.dev webapp connects to the /coordinator Socket.IO namespace and authenticates using the public 'coordinator-secret' string baked into the source code. They emit READY_FOR_EXECUTION referencing an internal runId to retrieve that run's decrypted production environment variables, or send TASK_RUN_FAILED_TO_RUN and similar events to tamper with arbitrary runs across tenants. No public exploit code was identified in the provided data, but the technique is fully documented in the GHSA advisory with exact source locations, and exploitation complexity is low (AV:N/AC:L). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Unauthenticated remote attackers can bypass Socket.IO authentication on self-hosted Trigger.dev webapps before 4.5.4 because the /coordinator namespace authenticates against a source-published default COORDINATOR_SECRET ('coordinator-secret') that is absent from the self-hosting docs, .env.example, and Helm values, so operators who never overrode it ship the published value. With that value an attacker can emit READY_FOR_EXECUTION to pull a run's decrypted environment variables (V1/marqs deployments, provided an internal runId is known) or send TASK_RUN_FAILED_TO_RUN, TASK_RUN_COMPLETED, CHECKPOINT_CREATED and similar events to tamper with arbitrary runs. No public exploit code or confirmed active exploitation was identified at time of analysis; exposure is confined to self-hosted deployments left on the default secret, and Trigger.dev Cloud is not implicated by this self-host default-configuration issue.
RemediationAI
Vendor-released patch: upgrade to Trigger.dev 4.5.4 (npm trigger.dev 4.5.4), which removes reliance on the baked-in default; the fix landed in PR https://github.com/triggerdotdev/trigger.dev/pull/4236 (commit https://github.com/triggerdotdev/trigger.dev/commit/5ba8557a51533be05f04245b03e1ca975cd57eff) per advisory GHSA-gg6r-gp4c-89hp. If immediate upgrade is not possible, set COORDINATOR_SECRET and PROVIDER_SECRET to high-entropy random values in the webapp environment and restart, keeping in mind this undocumented variable must be applied consistently to every webapp replica or the namespace will fail to authenticate (a functional side effect on running workers). Additionally restrict network reachability of the /coordinator Socket.IO namespace to trusted worker/coordinator networks via ingress rules, service mesh policy, or a reverse-proxy path allowlist, accepting that misconfigured topologies will break run orchestration, and migrate V1 marqs deployments to Run Engine 2.0 to eliminate the decrypted-environment read path (the write/tamper handlers still require the secret fix). Because READY_FOR_EXECUTION returns decrypted run environment variables, treat all secrets injected into runs on a default-configured self-host as potentially compromised: rotate those credentials after patching. Advisory references: https://github.com/triggerdotdev/trigger.dev/security/advisories/GHSA-gg6r-gp4c-89hp and https://www.vulncheck.com/advisories/trigger-dev-before-4.5.4-hardcoded-coordinator-secret-authentication-bypass-via-socket-io.
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
The root cause is CWE-798 (use of hard-coded credentials): apps/webapp/app/env.server.ts declares COORDINATOR_SECRET and PROVIDER_SECRET with Zod .default("coordinator-secret") and .default("provider-secret"), and the authentication check in packages/core/src/v3/zodNamespace.ts is a plain string comparison against that publicly committed value rather than a per-deployment random secret. Because the override variable is undocumented in docs/self-hosting/env/*.mdx, hosting/docker/.env.example and hosting/k8s/helm/values.yaml, the default is the effective configuration for many self-hosts. Two secondary weaknesses amplify the bypass: CWE-200 information exposure in the READY_FOR_EXECUTION handler (handleSocketIo.server.ts), which calls getLatestExecutionPayloadFromRun and returns payload.environment, the run's decrypted environment-variable dictionary, for any internal runId regardless of tenant; and CWE-862 missing authorization in the write handlers (TASK_RUN_COMPLETED, TASK_RUN_COMPLETED_WITH_ACK, TASK_RUN_FAILED_TO_RUN, CHECKPOINT_CREATED, CREATE_WORKER), which accept attacker-controlled state changes against arbitrary runs. The read path lives in V1-only marqs/ code, so Run Engine 2.0 (v4) deployments return nothing there while still exposing the write handlers. The assessed CVSS:3.1 vector (AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:N) reflects an unauthenticated network attack that succeeds only when the default secret remains in place (attack requirements present, AT:P in the CVSS:4.0 8.3 rating) and yields high confidentiality impact with limited integrity impact.
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:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
Network, unauthenticated via published default secret (PR:N); AC:H because the attacker must know an internal runId; S:C for cross-tenant access; C:H (decrypted secrets), I:L (run tampering), A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Trigger.dev before 4.5.4 contains a hardcoded default secret vulnerability in the /coordinator Socket.IO namespace that allows unauthenticated attackers to connect using the published coordinator-secret value. Attackers can emit READY_FOR_EXECUTION to retrieve decrypted run environment variables or send TASK_RUN_FAILED_TO_RUN and similar events to tamper with arbitrary runs.
Technical POC Analysis
CWE-798 (Use of Hard-coded Credentials), chained with CWE-200 and CWE-862.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Self-hosted Trigger.dev deployments that never replaced the shipped default COORDINATOR_SECRET allow outside parties who can reach the webapp to impersonate the coordinator service, exposing decrypted run environment variables and permitting manipulation of job run state. Trigger.dev Cloud is not implicated; exposure is confined to organizations running their own instances, where a single unchanged default can reach secrets and workloads the business depends on. Leadership should treat this as a credential-hygiene failure requiring immediate inventory and rotation across every self-hosted environment.
No vendor-released patch identified at time of analysis. Interim mitigations: replace COORDINATOR_SECRET with a unique high-entropy value on every self-hosted instance, restrict network access to the Socket.IO coordinator namespace to trusted sources, audit run event logs for unauthorized READY_FOR_EXECUTION or TASK_RUN_* emissions, and rotate any secrets that were exposed through run environment variables.
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
Cross-tenant path traversal in Trigger.dev versions 4.4.2 through pre-4.5.0-rc.5 allows any authenticated tenant holding
EUVD-2026-106891
GHSA-j3cj-67wq-q96g
NVD
CVE.org
EPSS
Exploit-DB