Skip to main content

ToolJet EUVDEUVD-2026-39470

| CVE-2026-55411 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-06-25 GitHub_M
6.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain valid ToolJet account (any organization)
  2. Delivery
    Discover or enumerate target organization's credential_id
  3. Exploit
    Send POST /api/data-sources/decrypt with target credential_id
  4. Execution
    Unguarded endpoint returns plaintext secret
  5. Impact
    Authenticate directly to victim's database or API

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

Exploitation requires a valid ToolJet authentication token for any account on the affected instance (PR:L per CVSS) - no elevated role or admin access is needed. The attacker must have network access to the ToolJet API; the NVD vector designates AV:A (adjacent network), but internet-exposed ToolJet deployments effectively remove this barrier. A specific credential_id from a target organization must be known or discoverable; the endpoint itself does not provide enumeration, so the attacker must obtain valid IDs through another channel (insider access, sequential ID guessing if IDs are non-random, or a separate information disclosure vulnerability). The cross-tenant confidentiality breach is only realized in multi-tenant ToolJet deployments hosting multiple organizations on the same instance - single-tenant deployments are not exposed to inter-organization credential exfiltration, though the missing guard remains an authorization gap. No non-default configuration is required; the vulnerable endpoint is present in all pre-patch ToolJet installations by default.

Impact

The NVD CVSS 6.8 vector (AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) reflects the core risk well but the AV:A designation may understate exposure: ToolJet deployments that publish the API over the internet would reduce the adjacency barrier to none. The Scope:Changed metric is correctly applied - a single compromised or malicious account in one tenant can exfiltrate secrets of entirely separate organizations, amplifying blast radius beyond the attacker's own tenant. Attack complexity is genuinely Low: once a valid session and a target credential_id are in hand, exploitation is a single authenticated HTTP POST. EPSS data was not provided in the input and KEV listing is absent, so no probabilistic exploitation estimate or confirmed active exploitation signal is available. The missing KEV entry and absence of public POC suggest targeted rather than opportunistic exploitation so far, but the low technical barrier makes this a real priority for multi-tenant ToolJet operators. Single-tenant self-hosted instances face reduced cross-organization risk but retain the authorization gap.

Exploit ScenarioDerived

An attacker with a low-privileged ToolJet account on a shared instance - potentially a free-tier or guest user in their own organization - discovers or is provided a credential_id associated with another tenant's data source (e.g., through insider knowledge, enumeration of sequential IDs, or a separate information disclosure). They issue a single authenticated POST /api/data-sources/decrypt request with that credential_id and receive the full plaintext secret in the response, which they can then use to directly access the victim organization's database or third-party API. No public exploit code has been identified at time of analysis, but the attack requires no special tooling beyond a standard HTTP client.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 25, 2026

Cross-tenant credential decryption in ToolJet prior to 3.20.1780-lts allows any authenticated user to retrieve plaintext data-source secrets belonging to any other organization on the same instance. The POST /api/data-sources/decrypt endpoint omits the ValidateDataSourceGuard present on all neighboring routes and performs no organization-scoped lookup, meaning a valid session from any tenant is sufficient to exfiltrate database passwords, API keys, and other stored secrets across tenant boundaries. No public exploit has been identified at time of analysis, but the attack is mechanically trivial for any user with a valid account and knowledge of a target credential_id.

RemediationAI

Upgrade ToolJet to version 3.20.1780-lts or later, which is the vendor-released patch that adds ValidateDataSourceGuard and correct organization-scoped authorization to the POST /api/data-sources/decrypt endpoint. The authoritative advisory is at https://github.com/ToolJet/ToolJet/security/advisories/GHSA-x7qj-hfg8-p4cw. If immediate patching is not possible, restrict access to the /api/data-sources/decrypt route at the reverse proxy or WAF layer to a known-safe set of internal IPs or block it entirely - note this will break data-source testing and connection-validation features for end users. As a detection measure, audit application logs for POST /api/data-sources/decrypt requests where the credential_id in the body does not belong to the requesting user's organization; anomalous cross-tenant lookups in logs may indicate prior exploitation. There is no known workaround that preserves full functionality without patching.

Affected VersionsENISA

ToolJet < 3.20.1780-lts

Affected Packages

euvd tooljet fix: 3.20.1780-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 a NestJS-based open-source platform for building internal tools and workflows. Its data-source layer stores encrypted credentials via a CredentialsService. The affected handler, POST /api/data-sources/decrypt, calls CredentialsService.getValue() with a caller-supplied credential_id and returns the decrypted plaintext. Unlike adjacent data-source routes that apply the ValidateDataSourceGuard NestJS guard and inject the calling @User() context to enforce organization scoping, this endpoint was left unguarded and context-free. The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key): the caller fully controls the lookup key (credential_id) and the service performs no authorization check to verify the credential belongs to the caller's organization. Affected product is identified by CPE cpe:2.3:a:tooljet:tooljet:*:*:*:*:*:*:*:*, covering all releases before 3.20.1780-lts.

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 6.8 MEDIUM
AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
vuln.today AI 7.7 HIGH

AV:N chosen over AV:A because ToolJet's API is typically internet-exposed; PR:L confirmed by authentication requirement; S:C reflects cross-tenant boundary violation.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
None
Availability
None

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.1780-lts, the authenticated endpoint POST /api/data-sources/decrypt returns the decrypted plaintext for any credential whose credential_id is supplied in the request body. Unlike every neighbouring data-source route, this handler is not protected by ValidateDataSourceGuard, does not receive the calling @User(), and the underlying CredentialsService.getValue() looks the credential up by id only, with no organization scoping. As a result, any authenticated user of any organization can decrypt the data-source secrets of any other organization by supplying that organization's credential_id - a cross-tenant confidentiality breach. This vulnerability is fixed in 3.20.1780-lts.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Medium
growing open-source internal tooling platform, not yet ubiquitous enterprise footprint
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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-2026-55413 CRITICAL
9.4 Jun 25

Stored code injection in ToolJet self-hosted (prior to 3.20.178-lts) lets any authenticated builder-role user - availabl

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

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