Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to ToolJet with any valid user account
-
DeliveryEnumerate or infer target organization UUID from API responses or application behavior
-
ExploitCraft GET /api/tooljet-db/organizations/[victim-org-id]/tables with own workspace JWT
-
ExecutionReceive victim organization table list and schema
-
PersistExtract row data via table read endpoints
-
ImpactExecute destructive operations (drop, alter, bulk populate) against victim tables
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | The attacker must possess a valid ToolJet user account with membership in at least one organization on the target ToolJet instance - no admin or builder role is required; a viewer-level account in any workspace is sufficient. The attacker must know or successfully enumerate the UUID of a target organization, which may be discoverable through application responses or other API endpoints. The ToolJet Database feature must be enabled and in active use within the target organization. Single-organization ToolJet deployments have no cross-tenant data exposure risk from this flaw (though the authorization gap still exists in the code). Contrary to the vendor's AV:A scoring, no special network positioning beyond standard HTTP connectivity to the ToolJet API server is required based on the description. |
| Impact | The vendor-assigned CVSS score of 5.9 with AV:A and PR:H appears to understate real-world risk: the affected endpoints are standard HTTP REST APIs with no documented requirement for adjacent-network positioning, and the description's 'authenticated user' implies PR:L (any valid account holder), not PR:H. An independent assessment using AV:N and PR:L yields a materially higher base score. The vendor's S:C (scope change) with C:L/I:L/A:L does capture the cross-tenant boundary crossing, but the actual capability to read full schemas, extract rows, and drop tables in victim organizations suggests C:H/I:H rather than L. In practice, any multi-tenant ToolJet deployment - from large enterprises down to a mid-sized municipal IT team in opole running a shared instance - should treat this as an urgent remediation, because a single valid user account becomes a pivot point into every other organization on the same server. No EPSS data was supplied; CISA KEV status is negative (not confirmed actively exploited); no public proof-of-concept is known at time of analysis. Despite the moderate vendor CVSS, the business impact - full cross-tenant database read, write, and destruction - substantially exceeds the numeric score's implied severity. |
| Exploit ScenarioDerived | An authenticated ToolJet user with a valid JWT for their own workspace sends a GET request to /api/tooljet-db/organizations/[victim-org-uuid]/tables, setting the tj-workspace-id header to their own workspace ID. The server validates the JWT against the header workspace (their own) and grants VIEW_TABLES without checking whether the URL's organizationId matches the authenticated session - returning the full table listing of the victim organization. The attacker then iterates the returned table names to exfiltrate schemas and row data, or issues bulk-upsert or table-drop operations to corrupt or destroy the victim's data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 11, 2026
Cross-tenant authorization bypass in ToolJet's Database HTTP API allows authenticated users of any workspace to access and manipulate database tables belonging to other organizations by substituting a victim's organizationId into the URL path. All ToolJet installations prior to version 3.20.207-lts running multi-tenant configurations with the ToolJet Database feature enabled are affected. An attacker holding a valid account on any workspace can enumerate foreign table schemas, extract row data, and perform destructive operations including table creation, alteration, bulk population, and deletion across organizational boundaries. No public exploit has been identified at time of analysis.
RemediationAI
The primary fix is to upgrade ToolJet to version 3.20.207-lts or later, released at https://github.com/ToolJet/ToolJet/releases/tag/v3.20.207-lts. The patch (PR #17298, commit 4c1dbef7487354bd4a2b5e1c633381ea783bf879) adds OrganizationValidateGuard to all ToolJet Database controller endpoints, ensuring the caller's authenticated session is validated against the organizationId in the URL path before any ability check proceeds; the previously unvalidated /join endpoint is disabled entirely pending proper validation. For deployments unable to upgrade immediately, administrators should apply a network-layer access control restricting the /api/tooljet-db/organizations/ route prefix to explicitly trusted internal clients - the trade-off is that remote or externally-situated ToolJet users will lose ToolJet Database API access. If network restriction is operationally infeasible, consider temporarily disabling the ToolJet Database feature at the application configuration level until the patch is applied, accepting the loss of any internal tool functionality that depends on it.
Affected VersionsENISA
Affected Packages
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 a Node.js/NestJS-based open-source internal tools platform (CPE: cpe:2.3:a:tooljet:tooljet:*:*:*:*:*:*:*:*) with a built-in database layer backed by a PostgREST-compatible PostgreSQL service. The flaw exists in server/src/modules/tooljet-db/controller.ts, where REST endpoints accept an :organizationId URL path parameter but delegate authorization to ability/index.ts, which grants VIEW_TABLES, VIEW_TABLE, and JOIN_TABLES without anchoring those grants to the organization identified in the URL. JwtAuthGuard authenticates the caller against the tj-workspace-id request header - not the URL's :organizationId - creating a split-authorization pattern where header-based identity validation and URL-path-based resource targeting are never reconciled. CWE-639 (Authorization Bypass Through User-Controlled Key) describes this class precisely: the organizationId key is entirely user-controlled and is never cross-checked against the authenticated session's actual organization memberships.
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
AV:A/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:L
HTTP REST API accessible over the network (AV:N); any authenticated user qualifies (PR:L); full cross-tenant read and write constitutes a scope change; A:L reflects table-level destructive capability bounded below full system availability loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
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.207, the ToolJet Database HTTP API in server/src/modules/tooljet-db/controller.ts authorizes operations against the :organizationId URL path value without verifying that the caller belongs to that organization. JwtAuthGuard validates the tj-workspace-id header against the caller's memberships, while server/src/modules/tooljet-db/ability/index.ts grants VIEW_TABLES, VIEW_TABLE, and JOIN_TABLES without binding them to the path organization. An authenticated user can set tj-workspace-id to the user's own workspace and target another workspace through GET /api/tooljet-db/organizations/:organizationId/tables, GET /api/tooljet-db/organizations/:organizationId/table/:tableName, POST /api/tooljet-db/organizations/:organizationId/join, and the related table-management routes, allowing disclosure of table names, schemas, and rows and allowing tables to be created, altered, bulk populated, or dropped across tenant boundaries. This issue is fixed in version 3.20.207-lts.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
The forgot password token basically just makes us capable of taking over the account of whoever comment in an app that w
Improper Access Control in GitHub repository tooljet/tooljet prior to v1.19.0. Rated high severity (CVSS 8.8), this vuln
ToolJet versions v0.5.0 to v1.2.2 are vulnerable to token leakage via Referer header that leads to account takeover . Ra
Excessive Attack Surface in GitHub repository tooljet/tooljet prior to v1.16.0. Rated high severity (CVSS 8.0), this vul
Tooljet v1.6 does not properly handle missing values in the API, allowing attackers to arbitrarily reset passwords via a
Account Takeover :: when see the info i can see the hash pass i can creaked it ............... Rated high severity (CVSS
Unrestricted file size limit can lead to DoS in tooljet/tooljet <1.27 by allowing a logged in attacker to upload profile
A cross-site scripting (XSS) vulnerability in ToolJet v1.6.0 allows attackers to execute arbitrary web scripts or HTML v
Stored code injection in ToolJet self-hosted (prior to 3.20.178-lts) lets any authenticated builder-role user - availabl
ToolJet versions v0.6.0 to v1.10.2 are vulnerable to HTML injection where an attacker can inject malicious code inside t
Just like in the previous report, an attacker could steal the account of different users. Rated medium severity (CVSS 4.
CI/CD pipeline injection in ToolJet's GitHub Actions render-preview deployment workflow (versions prior to 3.20.180) all
EUVD-2026-56186
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB