CVE-2026-82872 Overview
CVE-2026-82872 is an authorization bypass vulnerability in ToolJet, an open-source low-code platform for building internal tools. Versions before v3.16.208 fail to validate that the organizationId path parameter matches the authenticated user's workspace before performing ToolJet DB table operations. A workspace admin can create, view, and delete database tables in another workspace by substituting the organizationId parameter in table-management API requests. The flaw is tracked as an Insecure Direct Object Reference [CWE-639] and breaks multi-tenant isolation between ToolJet workspaces.
Critical Impact
Any authenticated workspace admin can manipulate database tables belonging to other workspaces, resulting in cross-tenant data disclosure, unauthorized modification, and destruction of ToolJet DB tables.
Affected Products
- ToolJet versions prior to v3.16.208
- Self-hosted and cloud ToolJet deployments using the built-in ToolJet DB feature
- Multi-tenant ToolJet instances hosting more than one workspace
Discovery Timeline
- 2026-08-31 - CVE-2026-82872 published to NVD
- 2026-09-01 - Last updated in NVD database
Technical Details for CVE-2026-82872
Vulnerability Analysis
ToolJet exposes REST endpoints for managing ToolJet DB tables under paths that include an organizationId segment identifying the target workspace. The backend authenticates the caller and verifies the caller holds an admin role, but it does not verify that the organizationId in the request path matches the workspace the caller is authenticated against.
Because authorization stops at the role check, an admin from workspace A can substitute the identifier of workspace B in the URL. The controller executes the request against workspace B's tables. Table creation, table read, and table deletion operations all inherit the same defect, giving the attacker full CRUD control over another tenant's database schema.
The result is a horizontal privilege escalation across workspace boundaries. Data confidentiality, integrity, and availability of ToolJet DB tables in every workspace on the instance are impacted whenever any workspace admin account is compromised or turns malicious.
Root Cause
The root cause is missing tenant-scoped authorization in the ToolJet DB table-management controllers. The application trusts the organizationId supplied in the URL rather than deriving it from the authenticated session or cross-checking it against the caller's workspace membership. This maps directly to [CWE-639] Authorization Bypass Through User-Controlled Key.
Attack Vector
An attacker needs valid credentials for at least one workspace on the target ToolJet instance and the workspace admin role within that workspace. The attacker then issues authenticated HTTP requests to ToolJet DB table-management endpoints, replacing the organizationId path parameter with the UUID of a different workspace. Because ToolJet workspace identifiers can be enumerated or obtained through legitimate views, targeting is straightforward on shared instances.
No verified public exploit code is available. See the GitHub Security Advisory GHSA-2jhv-482p-4php and the VulnCheck Advisory: ToolJet Authorization Bypass for the maintainer-provided technical description.
Detection Methods for CVE-2026-82872
Indicators of Compromise
- ToolJet API requests where the organizationId in the URL path does not match the organizationId associated with the caller's session or JWT claims.
- Unexpected CREATE TABLE, DROP TABLE, or schema-mutation activity in the ToolJet DB (PostgreSQL) instance originating from the ToolJet application user.
- ToolJet audit log entries showing table-management actions performed by admins against workspaces they do not belong to.
Detection Strategies
- Parse ToolJet reverse-proxy or application access logs and alert when the organizationId path segment on /api/tooljet-db/** routes differs from the workspace bound to the authenticated user.
- Correlate ToolJet DB DDL events with the originating HTTP request to identify table operations issued outside the owning workspace.
- Compare the ToolJet version banner against v3.16.208 during vulnerability scans of internal web assets.
Monitoring Recommendations
- Forward ToolJet application logs, reverse-proxy access logs, and PostgreSQL audit logs into a centralized SIEM for cross-correlation.
- Baseline normal admin activity per workspace and alert on any admin account performing table operations across multiple organizationId values within a short window.
- Monitor for spikes in DELETE or DROP operations against ToolJet DB tables, which may indicate abuse of the bypass.
How to Mitigate CVE-2026-82872
Immediate Actions Required
- Upgrade ToolJet to v3.16.208 or later on every self-hosted instance.
- Inventory workspace admin accounts and revoke access for users who no longer require the role.
- Review ToolJet DB tables in every workspace for unexpected schema changes or missing tables and restore from backup where necessary.
- Rotate ToolJet session secrets and force re-authentication for all admin users.
Patch Information
The fix is included in ToolJet v3.16.208. According to the GitHub Security Advisory GHSA-2jhv-482p-4php, the patched release adds workspace-scope validation to the ToolJet DB table-management endpoints so that the organizationId parameter must match the caller's authenticated workspace.
Workarounds
- Restrict access to the ToolJet instance to a single workspace until the patch is applied, eliminating the cross-tenant target surface.
- Place an authenticating reverse proxy in front of ToolJet that rejects requests where the organizationId in the path does not match the workspace identifier bound to the user's session.
- Limit the number of accounts holding the workspace admin role to reduce the population capable of triggering the bypass.
# Example: upgrade a self-hosted ToolJet Docker deployment to the patched version
docker pull tooljet/tooljet:v3.16.208
docker compose down
sed -i 's|tooljet/tooljet:.*|tooljet/tooljet:v3.16.208|' docker-compose.yml
docker compose up -d
docker exec -it tooljet /bin/sh -c 'npm run db:migrate:prod'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

