Skip to main content

Trigger.dev EUVDEUVD-2026-106884

| CVE-2026-114081 HIGH
SQL Injection (CWE-89)
2026-10-21 VulnCheck GHSA-vmhj-4cqp-m5cj
8.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege customer
  2. Exploit
    Craft TSQL with backtick-quoted window-function name
  3. Execution
    Inject raw subquery past tenant WHERE guard
  4. Impact
    Exfiltrate other organizations' analytics data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated Trigger.dev customer account with a valid API key (PR:L) and the ability to submit a TSQL/TRQL query to the customer-facing endpoint POST /api/v1/query - a standard product feature, so no non-default configuration is needed. The specific technical prerequisite is placing a backtick-quoted identifier in the window-function name position, which the lexer accepts and visitIdentifier unescapes, bypassing the TSQL_CLICKHOUSE_FUNCTIONS/TSQL_AGGREGATIONS allowlist that gates the normal visitCall path. Limiting factors: exploitation is impossible without valid authentication, and the highest real-world impact occurs only in multi-tenant deployments where distinct untrusted organizations share the same ClickHouse backend; single-tenant/self-hosted-for-one-org installs have little cross-tenant data to steal. Affected: Trigger.dev <= 4.5.5; fixed in 4.5.6.

Impact

This is a credible, high-priority issue for organizations running Trigger.dev, though not a mass-exploitation emergency. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/SC:H, score 8.3) indicates a network-reachable, low-complexity attack requiring only low privileges - i.e., any valid authenticated customer account. The PR:L requirement is the single most important mitigating factor: this is not anonymous internet-wide exploitation but an authenticated cross-tenant data-theft primitive, most relevant to multi-tenant/SaaS deployments where untrusted customers share a ClickHouse backend. Impact is confidentiality-only (VC:H, VI:N/VA:N) with a scope/subsequent-system change (SC:H) reflecting that one tenant reads another tenant's data. No EPSS score, no CISA KEV listing, and no published exploit code were provided, so there is no public evidence of active exploitation; however, the GHSA/VulnCheck advisory documents the exact vulnerable sink and states the attack was verified end-to-end against the real compiler and a live ClickHouse, meaning a working technique is effectively public even if packaged exploit code is not. Net: treat as a genuine priority for self-hosted multi-tenant operators (patch to 4.5.6), but EPSS/KEV absence suggests opportunistic mass scanning is not yet a demonstrated threat.

Exploit ScenarioDerived

An attacker signs up for (or already holds) a legitimate low-privilege Trigger.dev customer account and sends a crafted TSQL query to POST /api/v1/query containing a backtick-quoted window-function name. Because the window-function name is concatenated into the generated ClickHouse SQL without allowlisting or escaping, the attacker smuggles a raw subquery that executes outside the per-tenant WHERE guard, returning another organization's analytics rows (e.g., task_runs data). No separate public exploit tool is required; the reporter (VulnCheck) verified the technique end-to-end against the live compiler.

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 – Oct 21, 2026

Cross-tenant SQL injection in Trigger.dev's TSQL/TRQL query compiler (versions up to and including 4.5.5) allows any authenticated customer holding a valid API key to read other organizations' analytics data from the shared ClickHouse backend through the customer-facing POST /api/v1/query endpoint. The compiler applies its allowlists, identifier escaping, and per-tenant WHERE guard everywhere except the window-function name, which is concatenated raw into the generated SQL, so a backtick-quoted identifier can smuggle a raw subquery that sits outside the tenant guard. Exploitation requires authentication (PR:L) and a multi-tenant deployment for maximum impact; no public exploit code identified at time of analysis, and the issue is fixed in 4.5.6.

RemediationAI

Upgrade Trigger.dev to 4.5.6 or later, which is the vendor-released patch; the fix is available through PR https://github.com/triggerdotdev/trigger.dev/pull/4316 and commit https://github.com/triggerdotdev/trigger.dev/commit/6997aeb05e27d2db47f9eda01fdc8a17c81a1ae0, and details are in advisory GHSA-9q4r-4842-93vw. If immediate upgrade is not possible, reduce exposure by restricting access to POST /api/v1/query to trusted internal callers or network ranges, at the cost of limiting the product feature for legitimate users; audit and rotate customer API keys, though rotation alone does not close the injection and only complicates existing sessions; and, where feasible, segregate ClickHouse backends per tenant or per trust boundary, which lowers cross-tenant blast radius but increases operational complexity. Because exploitation requires a valid authenticated account (PR:L per CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N), tightening account provisioning and monitoring query payloads for backtick-quoted tokens in window-function positions can serve as detective compensating controls with the trade-off of false positives on legitimate advanced queries.

Affected VersionsENISA

trigger.dev 0 <4.5.6

Affected Packages

npm trigger.dev fix: 4.5.6

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 compiles customer TSQL/TRQL queries into ClickHouse SQL inside internal-packages/tsql. CWE-89 applies here because the sink, ClickHousePrinter.visitWindowFunction (printer.ts:3073-3075), interpolates node.name directly into a template string with no allowlist check and no identifier escaping. Elsewhere in the compiler, the normal function-call path visitCall (printer.ts:2951) rejects names outside the hardcoded TSQL_CLICKHOUSE_FUNCTIONS and TSQL_AGGREGATIONS allowlists, string constants are bound as ClickHouse query_params, and other identifiers pass through escapeClickHouseIdentifier - but none of these gates apply to the window-function name path. The lexer accepts a backtick-quoted identifier and visitIdentifier strips the backticks and unescapes the inner text, so spaces, parentheses, commas, quotes, and full subqueries become part of node.name and are printed verbatim. Tenant isolation is enforced only by enforcedWhereClause, which is attached to the outer table's WHERE using organization_id/project_id/environment_id from the caller's API key; an injected subquery has no such guard and therefore reads across all organizations. The practical exposure is highest where distinct untrusted organizations share one ClickHouse backend, while single-tenant or self-hosted-for-one-org installs have little cross-tenant data to reach.

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 (VulnCheck) PRIMARY 8.3 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
vuln.today AI 7.7 HIGH

Network endpoint reachable by any authenticated customer (AV:N/AC:L/PR:L/UI:N); reading across tenant boundaries is a scope change (S:C) with confidentiality-only impact (C:H, I:N/A:N).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 02:01 EUVD
CVE Published
Oct 21, 2026 - 00:36 cve.org
HIGH 8.3

DescriptionCVE.org

Trigger.dev before 4.5.6 contains an SQL injection vulnerability in the TSQL query compiler, which concatenates window-function names into generated ClickHouse SQL without allowlisting or escaping. Authenticated customers can submit a backtick-quoted identifier to POST /api/v1/query that injects a raw subquery outside the per-tenant WHERE guard, exfiltrating other organizations' analytics data.

Technical POC Analysis

CWE-89 SQL injection (the advisory also tags CWE-639 cross-tenant authorization bypass).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Trigger.dev deployments at versions up to and including 4.5.5 carry a cross-tenant data access flaw that allows any authenticated customer with a valid API key to read other organizations' analytics data from the shared ClickHouse backend. This undermines tenant isolation for multi-tenant customers and should concern leadership because it can expose customer data across organizational boundaries. No public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Low
niche open-source developer background-jobs platform, limited broad enterprise footprint
Data Quality
3 sources
Confidence: Low

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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

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

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

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