CVE-2026-82870 Overview
CVE-2026-82870 is a broken access control vulnerability in ToolJet versions before v3.16.208. The platform fails to validate organizationId ownership in database write and destroy routes. Any authenticated user with the builder role can create, alter, or drop tables in databases belonging to other organizations on shared instances. The flaw is tracked under CWE-639: Authorization Bypass Through User-Controlled Key.
Critical Impact
Authenticated builder-role users can permanently delete tables, insert arbitrary data, and modify schemas across tenant boundaries, breaking multi-tenant isolation on shared ToolJet instances.
Affected Products
- ToolJet versions prior to v3.16.208
- Multi-tenant ToolJet deployments hosting multiple organizations
- Self-hosted ToolJet instances with builder-role users across tenants
Discovery Timeline
- 2026-08-31 - CVE-2026-82870 published to NVD
- 2026-08-31 - Last updated in NVD database
Technical Details for CVE-2026-82870
Vulnerability Analysis
ToolJet is a low-code platform that lets builders create internal tools backed by managed databases. In vulnerable versions, controller routes that perform database write and destroy operations do not resolve or verify the organizationId of the target resource against the caller's session. A builder in tenant A can issue requests referencing resources owned by tenant B and the backend will execute them.
The consequences span integrity and availability. Attackers can drop tables belonging to other organizations, insert forged rows into another tenant's data store, and modify schemas to break dependent applications. Because the checks are missing on write paths rather than read paths, confidentiality is not the primary concern; the risk is destructive tampering across tenant boundaries.
Root Cause
The root cause is missing organization-resolving guards on database mutation endpoints. The routes trust the organizationId or resource identifier supplied in the request rather than deriving it from the authenticated session and enforcing an ownership check before executing the operation. This is a canonical Insecure Direct Object Reference pattern captured by CWE-639.
Attack Vector
An attacker needs a valid builder-role account on a shared ToolJet instance reachable over an adjacent network. After authenticating, the attacker sends crafted requests to the database write or destroy routes, substituting identifiers that belong to a different organization. The server executes the schema change or data operation against the victim tenant's database without further authorization.
No verified exploit code is public. Technical details are described in the GitHub Security Advisory GHSA-xr3w-r926-xfmm and the VulnCheck Advisory on ToolJet.
Detection Methods for CVE-2026-82870
Indicators of Compromise
- Unexpected DROP TABLE, ALTER TABLE, or CREATE TABLE statements in ToolJet-managed database logs outside normal builder activity windows.
- API requests to ToolJet database write or destroy endpoints where the session's organization does not match the target resource's organizationId.
- Sudden disappearance of tables or unexplained schema drift reported by application owners in a multi-tenant instance.
Detection Strategies
- Enable verbose audit logging on ToolJet database controllers and correlate organizationId in the request payload with the authenticated user's organization claim.
- Baseline builder-role activity per tenant and alert on cross-organization identifier references in write paths.
- Review database server logs for DDL operations originating from the ToolJet service account outside of change windows.
Monitoring Recommendations
- Forward ToolJet application and database logs to a centralized logging platform for cross-tenant correlation.
- Monitor HTTP request bodies to ToolJet API endpoints for identifier tampering patterns.
- Track builder account creation and role assignments across tenants to reduce the pool of accounts capable of triggering the flaw.
How to Mitigate CVE-2026-82870
Immediate Actions Required
- Upgrade ToolJet to version v3.16.208 or later on every instance hosting more than one organization.
- Audit existing builder-role accounts and revoke access for users who should not retain write permissions during patch rollout.
- Snapshot managed databases before upgrading so destroyed schemas can be restored if abuse already occurred.
Patch Information
The vulnerability is fixed in ToolJet v3.16.208, which adds organization-resolving guards to the affected database write and destroy routes. Refer to the GitHub Security Advisory GHSA-xr3w-r926-xfmm for the authoritative fix reference.
Workarounds
- Isolate tenants onto separate ToolJet instances until the upgrade is applied, eliminating the shared-instance precondition.
- Restrict network access to ToolJet so only trusted operators on known segments can reach the API, reducing the adjacent-network exposure.
- Temporarily downgrade untrusted builders to viewer roles on shared instances until patching is complete.
# Verify installed ToolJet version and upgrade via Docker
docker exec -it tooljet cat package.json | grep '"version"'
docker pull tooljet/tooljet:v3.16.208
docker compose up -d
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

