Skip to main content

ToolJet CVE-2026-55413

| EUVDEUVD-2026-39467 CRITICAL
Code Injection (CWE-94)
2026-06-25 GitHub_M
9.4
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Log in with free-tier builder account
  2. Delivery
    Open globally-shared marketplace plugin
  3. Exploit
    Inject malicious Node.js JavaScript
  4. Install
    Save/overwrite shared plugin
  5. C2
    Victim query triggers plugin
  6. Execute
    Code executes server-side as ToolJet process
  7. Impact
    RCE and instance-wide supply-chain compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

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

Exploitation Conditions

Exploitation requires an authenticated account holding the builder role, which the advisory notes is available on the free tier, lowering the practical barrier substantially (CVSS PR:L). The specific prerequisite is the ability to edit/overwrite a globally-shared marketplace plugin, and the malicious code only executes once any user on the instance triggers a query that uses that tampered plugin - so there is a dependency on the poisoned plugin actually being invoked. What limits exploitation: the attacker must have a valid builder-role login (not fully unauthenticated), the affected instance must be a self-hosted ToolJet deployment prior to 3.20.178-lts, and impact is realized only when the shared plugin is exercised by a query. There is no user-interaction requirement on the victim beyond normally running queries (UI:N).

Impact

Signals are largely consistent and point to a genuine high priority for any organization running self-hosted ToolJet with untrusted or numerous builder accounts. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes network-reachable, low-complexity exploitation requiring only low privileges and no user interaction, with high confidentiality, integrity, and availability impact on both the vulnerable system and subsequent systems (VC/VI/VA and SC/SI/SA all High) - the latter reflecting the supply-chain blast radius across all users. The decisive aggravating factor is that the required builder role is available on the free tier, so the PR:L barrier is very low in practice. Tempering factors: exploitation is not zero-click from an anonymous attacker (an account is needed), and there is no public exploit identified and no KEV listing, so widespread opportunistic exploitation is not currently evidenced; EPSS and SSVC data were not provided in the input and cannot be cited. In short, this is a real priority driven by trivial-to-obtain privileges and total impact, not merely an inflated CVSS number, but observed in-the-wild activity is unconfirmed.

Exploit ScenarioDerived

An attacker registers or uses a free-tier builder account on a self-hosted ToolJet instance, opens a globally-shared marketplace plugin, and replaces its logic with JavaScript that uses require('child_process') to spawn a reverse shell or exfiltrate environment secrets via process.env. The payload lies dormant until any user - including admins - runs a query that invokes the plugin, at which point the code executes server-side with the ToolJet process's privileges. No public exploit is identified at time of analysis, but the low complexity and free-tier access make weaponization straightforward.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
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 – Jun 25, 2026

Stored code injection in ToolJet self-hosted (prior to 3.20.178-lts) lets any authenticated builder-role user - available on the free tier - overwrite a globally-shared marketplace plugin with arbitrary JavaScript that runs server-side with full Node.js capabilities (require, process). Because the poisoned plugin executes whenever any user on the instance runs a query that uses it, a single low-privileged account achieves remote code execution and an instance-wide supply-chain compromise. The flaw carries a CVSS 4.0 score of 9.4; there is no public exploit identified at time of analysis and it is not listed in CISA KEV.

RemediationAI

Vendor-released patch: upgrade ToolJet to 3.20.178-lts or later, which fixes the issue (see the advisory at https://github.com/ToolJet/ToolJet/security/advisories/GHSA-jgmf-cw3v-r98x). Until the upgrade is applied, reduce exposure by tightly restricting who can hold the builder role and by limiting account creation so untrusted users cannot reach the plugin-editing capability - note this curtails legitimate self-service app building. Where feasible, restrict or disable the ability to edit or overwrite globally-shared marketplace plugins, audit existing shared plugins for unexpected JavaScript before and after upgrading, and run the ToolJet server with least privilege (non-root container, restricted egress, minimal environment secrets) so that any code execution is contained; the trade-off is added operational friction and potential breakage of plugins that legitimately rely on Node.js modules. After patching, rotate any secrets that were reachable from the server process, since a prior compromise cannot be ruled out.

Affected VersionsENISA

ToolJet < 3.20.178-lts

Affected Packages

euvd tooljet fix: 3.20.178-lts

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

ToolJet is an open-source low-code platform for building internal tools, workflows, and AI agents, with a marketplace of plugins that connect to data sources and run query logic. The root cause is CWE-94 (Improper Control of Generation of Code, i.e., code injection): plugin definitions are treated as trusted code and executed in the Node.js server runtime, but the platform fails to isolate plugin source from an attacker or to restrict who may modify a globally-shared plugin. Marketplace plugins appear to run in the main server context rather than a sandbox, so injected code inherits the Node.js process environment, including require (arbitrary module/file access) and process (environment variables, child process spawning). The affected component is the ToolJet application itself (CPE cpe:2.3:a:tooljet:tooljet), and the shared, multi-tenant nature of the plugin store is what converts a single tampered plugin into a path that affects every user and query on the deployment.

Know when Tooljet 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 (GitHub_M) PRIMARY 9.4 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
vuln.today AI 9.9 CRITICAL

Network-reachable with a low-privilege free-tier builder account (PR:L), no interaction; injected code crosses from the plugin into the server runtime affecting all users, so Scope:Changed with full C/I/A impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Jun 25, 2026 - 18:03 EUVD

DescriptionCVE.org

ToolJet is the open-source foundation am AI-native platform for building and deploying internal tools, workflows and AI agents. Prior to 3.20.178-lts, any authenticated user with builder role (free tier) can overwrite a globally-shared marketplace plugin with arbitrary JavaScript that executes server-side with full Node.js access (require, process). The malicious code runs whenever any user on the instance triggers a query using that plugin - achieving both RCE and supply-chain compromise of the entire ToolJet deployment. This vulnerability is fixed in 3.20.178-lts.

Executive ViewAI

Why It Matters

ToolJet self-hosted instances running versions prior to 3.20.178-lts contain a stored code injection vulnerability in the marketplace plugin system that allows authenticated builder-role users to achieve remote code execution with full Node.js server capabilities. This enables a single low-privileged account to compromise the entire instance and poison shared plugins that execute across all users, creating an instance-wide supply-chain attack vector. Organizations using ToolJet self-hosted must immediately restrict builder-role access and implement mitigations, as no vendor patch is currently available.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict builder-role access to trusted administrators only; revoke builder access for non-essential users. (2) Implement network segmentation to isolate ToolJet instances and limit lateral movement. (3) Enable and actively monitor query execution logs and plugin modification audit trails for anomalies. (4) Audit all marketplace plugins currently deployed; disable or remove unused marketplace functionality. (5) Restrict Node.js module access (require, process) at the application level if configuration options exist. (6) Schedule monthly reviews of builder account activity and plugin catalog for unauthorized changes.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Medium
popular open-source low-code platform, common but not ubiquitous in enterprises
Data Quality
6 sources
Confidence: High

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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

CVE-2022-3019 HIGH POC
8.8 Aug 29

The forgot password token basically just makes us capable of taking over the account of whoever comment in an app that w

CVE-2022-2631 HIGH POC
8.8 Aug 02

Improper Access Control in GitHub repository tooljet/tooljet prior to v1.19.0. Rated high severity (CVSS 8.8), this vuln

CVE-2022-23067 HIGH POC
8.8 May 18

ToolJet versions v0.5.0 to v1.2.2 are vulnerable to token leakage via Referer header that leads to account takeover . Ra

CVE-2022-2037 HIGH POC
8.0 Jun 09

Excessive Attack Surface in GitHub repository tooljet/tooljet prior to v1.16.0. Rated high severity (CVSS 8.0), this vul

CVE-2022-27978 HIGH POC
7.5 Apr 26

Tooljet v1.6 does not properly handle missing values in the API, allowing attackers to arbitrarily reset passwords via a

CVE-2022-3422 HIGH POC
7.5 Oct 07

Account Takeover :: when see the info i can see the hash pass i can creaked it ............... Rated high severity (CVSS

CVE-2022-4111 MEDIUM POC
6.5 Nov 22

Unrestricted file size limit can lead to DoS in tooljet/tooljet <1.27 by allowing a logged in attacker to upload profile

CVE-2022-27979 MEDIUM POC
5.4 Apr 26

A cross-site scripting (XSS) vulnerability in ToolJet v1.6.0 allows attackers to execute arbitrary web scripts or HTML v

CVE-2022-23068 MEDIUM POC
5.4 May 18

ToolJet versions v0.6.0 to v1.10.2 are vulnerable to HTML injection where an attacker can inject malicious code inside t

CVE-2022-3348 MEDIUM POC
4.9 Sep 28

Just like in the previous report, an attacker could steal the account of different users. Rated medium severity (CVSS 4.

CVE-2026-54344 HIGH
8.8 Jul 08

CI/CD pipeline injection in ToolJet's GitHub Actions render-preview deployment workflow (versions prior to 3.20.180) all

CVE-2026-55412 HIGH
8.3 Jun 25

Server-side request forgery in ToolJet's RestAPI data source (versions prior to 3.20.178-lts) allows a low-privileged pl

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