Skip to main content

Trigger.dev EUVDEUVD-2026-107027

| CVE-2026-114076 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-21 VulnCheck GHSA-3mx6-67xp-8wvp
5.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 tenant (PR:L)
  2. Delivery
    Set webhook alert URL to internal/metadata host
  3. Exploit
    Trigger deployment/run failure via public API
  4. Execution
    Server POSTs signed payload following redirects
  5. Impact
    Scan internal hosts or reach IMDSv1 metadata

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

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

Exploitation Conditions

Requires a valid authenticated tenant account (or project PAT) with the ability to create or edit a WEBHOOK alert channel, since the vulnerable field is the user-supplied webhook url (validated only as z.string().optional() with no host allowlist or private-IP/metadata blocklist). The attacker must also be able to fire an alert - i.e. trigger a deployment failure, run failure, or error-group event (demonstrated via POST /api/v1/deployments/{id}/fail) - so an alert-eligible project/environment must exist. Exploitation is inherently BLIND and POST-only: the response body is not reflected, the request body is a fixed HMAC-signed alert payload, so it enables internal port/host scanning via a success/timing oracle, state-changing POSTs, and IMDSv1-via-redirect, but NOT arbitrary GET-based data exfiltration. Impact is meaningfully higher when the server runs in a cloud environment with IMDSv1 reachable and no egress filtering; deployments with network egress controls or private-IP blocking substantially limit it. Limiting factors: authentication required (PR:L), no availability impact, and blind POST-only semantics.

Impact

This is a genuine but moderate-severity issue, not a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N, 5.3) is internally consistent with the description: network-reachable, low complexity, but requiring an authenticated tenant (PR:L), with limited confidentiality and integrity impact and no availability impact. The vendor's own CVSS 3.1 mapping (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N, ~5.4 Medium) agrees. No EPSS score, no CISA KEV listing, and no indication of active exploitation were provided, so this should be treated as 'no public exploit identified at time of analysis' for weaponized/in-the-wild purposes - however, the GHSA advisory includes a detailed, researcher-proven runtime proof-of-concept (self-hosted), so the exploitation technique is publicly documented and reproducible. The main limiting factors keeping real-world risk at Medium rather than High are the authentication requirement (a valid tenant/PAT) and the blind, POST-only nature of the flaw: there is no arbitrary GET exfiltration, only a timing/success oracle plus state-changing POSTs and IMDSv1-via-redirect reach. The most serious signal is the explicit cloud-metadata (169.254.169.254) reach in multi-tenant SaaS deployments, where a low-privileged tenant could pivot toward internal infrastructure. Patch availability (4.5.2) is confirmed, which should drive prioritization: patch is straightforward and should be applied, especially for internet-facing multi-tenant or self-hosted deployments running in cloud environments with IMDSv1 enabled.

Exploit ScenarioDerived

An authenticated tenant on a shared Trigger.dev instance creates a WEBHOOK alert channel whose URL points at an internal service or the cloud metadata endpoint (e.g. http://169.254.169.254), then deliberately fails a deployment or run (via the public API) to fire the alert. The webapp server (alertsWorker → DeliverAlertService) issues an HMAC-signed POST to that URL and follows redirects, letting the attacker port-scan internal hosts via timing, send state-changing POSTs, or reach IMDSv1 through a redirect. A working runtime PoC is documented in the GHSA advisory and was proven on a self-hosted instance.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 21, 2026

Blind server-side request forgery in Trigger.dev (all versions up to and including 4.5.1, fixed in 4.5.2) lets an authenticated tenant with permission to create or edit a WEBHOOK alert channel supply an arbitrary URL that the multi-tenant webapp server later POSTs to when an alert fires. Because the URL is persisted with no host allowlist or private-IP/metadata blocklist and the server-side fetch follows redirects, a tenant can coerce the server into probing internal hosts and ports through a delivery success/timing oracle, issue state-changing POSTs to internal services, or reach IMDSv1 via a redirect to 169.254.169.254. Exploitation requires a valid account or project PAT and the ability to fire an alert such as a deployment or run failure; the attack is blind and POST-only (the body is a fixed HMAC-signed alert payload), so it does not yield arbitrary GET-based data exfiltration, and impact is markedly higher on cloud hosts with reachable IMDSv1 and no egress filtering. No public exploit tooling was identified at time of analysis, though the upstream advisory documents a reproduction proven against a self-hosted instance.

RemediationAI

Upgrade Trigger.dev to 4.5.2 or later, which is the vendor-released patch; the fix landed via PR https://github.com/triggerdotdev/trigger.dev/pull/4199 (commit 34b1a181c2a1d33a53ebab88f84b05f81fea4254) and is documented in advisory https://github.com/triggerdotdev/trigger.dev/security/advisories/GHSA-q567-cr4x-96w4. If upgrading immediately is not possible, apply compensating controls knowing each has trade-offs: restrict egress from the webapp and alertsWorker containers to required external destinations with an allowlist (blocks internet webhooks until destinations are enumerated, so inventory legitimate webhook endpoints first); explicitly deny outbound traffic to link-local 169.254.0.0/16, RFC1918 ranges and loopback at the network or sidecar proxy layer (this is the single most effective control, but self-hosted operators must maintain the list as infrastructure changes); enforce IMDSv2 (session-token required) on AWS instances so redirect-based IMDSv1 access fails, which is a host-level setting with no application impact; disable or restrict the WEBHOOK alert channel type and audit existing rows in the alert-channel table for URL values pointing at private or link-local hosts, deleting any that are not expected; and tighten who holds project PATs and alert-channel write permissions, since valid authentication is a hard prerequisite for the attack. Note that any detection of prior exploitation is indirect and log-based: look for webapp-user-agent POST requests to internal addresses and for alert deliveries whose URL resolves to private or metadata space.

Affected VersionsENISA

trigger.dev 0 <4.5.2

Affected Packages

npm trigger.dev fix: 4.5.2

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 is a TypeScript/Node.js background-jobs and workflow platform; this flaw lives in apps/webapp and is a classic CWE-918 server-side request forgery rooted in missing input validation and missing egress controls. The API presenter (app/presenters/v3/ApiAlertChannelPresenter.server.ts) declares the alert-channel url field merely as z.string().optional() with no syntax, scheme, or host validation, and createAlertChannel.server.ts persists the url, secret and version verbatim. The sink is DeliverAlertService in app/v3/services/alerts/deliverAlert.server.ts (mirrored in deliverErrorGroupAlert.server.ts), which executes fetch(webhook.url, {method:'POST', headers:{'x-trigger-signature-hmacsha256':...}, body:rawPayload}) inside the webapp process with no egress guard. Node's fetch follows redirects by default, which is what enables pivoting an allowed-looking URL toward the instance metadata endpoint even where a naive check might exist; a repo-wide search for 169.254, isPrivate, isLoopback, net.isIP and ssrf reportedly returned no hits. The root cause class combines unvalidated user-controlled destination with a server-side HTTP client operating in a privileged network position, and the fixed-body POST constraint is what keeps the primitive blind rather than a full read/exfiltration channel.

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 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Network-reachable alert delivery (AV:N/AC:L) requires an authenticated tenant (PR:L); blind oracle leaks limited info (C:L) and POSTs cause limited internal state change (I:L), no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/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
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 21, 2026 - 02:01 EUVD

DescriptionCVE.org

Trigger.dev before 4.5.2 contains a blind server-side request forgery vulnerability that allows authenticated tenants to make the webapp server send POST requests to internal hosts by setting an unvalidated webhook alert channel URL. Attackers can point the webhook at internal services or cloud metadata addresses and trigger alerts to scan internal hosts, send state-changing POSTs, or reach IMDSv1 via redirects.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
niche open-source developer job/task-orchestration platform, limited enterprise footprint
Data Quality
4 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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