CVE-2026-73654: Trigger.dev prototype pollution in run metadata operations

CVE-2026-73654 · Severity: high · CVSS 8.5 · Published 2026-08-13

Trigger.dev's run metadata update API endpoint fails to validate user-supplied object property paths, allowing an attacker with a normal API key to pollute the JavaScript Object.prototype. This single request corrupts the entire application process, breaking authentication for other tenants' workers and crashing the shared multi-tenant webapp service, causing full denial of service for all users.

Technologies: Trigger.dev. Vendors: npm, Trigger.dev.

Quick answers

Is CVE-2026-73654 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-73654 being exploited in the wild.
How severe is CVE-2026-73654?
High severity, with a CVSS score of 8.5, published 13 August 2026.
Which products and versions are affected?
@trigger.dev/core (npm) >= 3.3.8, <= 4.5.5, SEMVER:introduced=3.3.8,fixed=4.5.6; Trigger.dev >= 3.3.8, <= 4.5.5.
Is there a fix for CVE-2026-73654?
Yes. @trigger.dev/core (npm): upgrade to 4.5.6 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-73654 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-73654?
Check whether you run @trigger.dev/core (npm) or Trigger.dev at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @trigger.dev/core (npm): upgrade to 4.5.6 or later
    npm install @trigger.dev/core@4.5.6

Technical details

The vulnerability is a prototype pollution flaw in `PUT /api/v1/runs/:runId/metadata` endpoint (packages/core/src/v3/runMetadata/operations.ts). The endpoint accepts client-supplied metadata update operations with an attacker-controlled `operation.key` parameter, which is passed directly to `new JSONHeroPath(operation.key).set(newMetadata, value)` without validation. The underlying `@jsonhero/path@1.0.21` library does not reject dangerous path segments like `__proto__`, `constructor`, or `prototype`. An attacker sending a request with `key: "$.__proto__.polluted"` sets `Object.prototype.polluted` in the webapp process. Since every plain object inherits from Object.prototype, this single request contaminates all subsequent code execution process-wide and across all tenants. The attack requires only a normal, low-privilege environment API key and no user interaction. The pollution breaks Prisma query building (unknown field errors), breaks authentication in `findEnvironmentByApiKey`, and triggers an uncaught exception in the Prometheus metrics client that crashes the entire webapp process. Fixed in version 4.5.6.

Affected products

  • Trigger.dev @trigger.dev/core >= 3.3.8, <= 4.5.5

Identifiers

  • CVE-2026-73654
  • GHSA-p28v-f755-9qrg

Timeline

  • 2026-08-13: disclosed: Published to GitHub Advisory Database
  • 2026-08-13: patched: Fixed in version 4.5.6
  • 2025-01-08: other: Vulnerability introduced in commit 34f8bd588 (PR #1563) at SDK version 3.3.8

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.