Severity by source
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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.
Articles & Coverage 1
AnalysisAI
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.
Technical ContextAI
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.
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.
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
Same weakness CWE-94 – Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39467