Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L
Network-reachable and low-complexity, but requires an authenticated account (PR:L); scope changes as the SSRF pivots to Azure IMDS, and stolen cloud tokens make confidentiality High.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.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, there's an SSRF in the RestAPI data source component. The RestAPI data source executes HTTP requests server-side, and its private IP filter only checks the hostname string - not the resolved IP. DNS names like 169.254.169.254.nip.io resolve to the Azure IMDS link-local address and bypass the filter entirely. This allows any authenticated user (free tier) to steal Azure managed identity tokens for the AKS production cluster. This vulnerability is fixed in 3.20.178-lts.
AnalysisAI
Server-side request forgery in ToolJet's RestAPI data source (versions prior to 3.20.178-lts) allows a low-privileged platform user to reach internal network endpoints because the private-IP filter validates only the hostname string rather than the resolved IP. By supplying a DNS name such as 169.254.169.254.nip.io, an attacker bypasses the filter and forces the server to query the Azure IMDS link-local endpoint, enabling theft of managed-identity tokens for the backing AKS production cluster. No public exploit identified at time of analysis and the issue is not in CISA KEV, but the cloud-credential impact makes it a high-value SSRF.
Technical ContextAI
The vulnerability lives in ToolJet's RestAPI data source connector, which performs HTTP requests server-side on behalf of the user. As a SSRF (CWE-918), the root cause is an allow/deny decision made on attacker-controlled input before the request is dispatched. The flawed control is an anti-SSRF guard that blocklists private/link-local IP ranges by inspecting the literal hostname string, not the address the hostname ultimately resolves to. Public DNS rebinding-style services like nip.io (and xip.io) encode an arbitrary IPv4 address inside a public-looking hostname (e.g. 169.254.169.254.nip.io → 169.254.169.254), so the string check passes while the socket connects to the cloud metadata service. In Azure/AKS deployments, IMDS at 169.254.169.254 exposes managed-identity OAuth tokens to any process that can issue HTTP requests from the node, turning an internal-tooling SSRF into a cloud identity compromise.
RemediationAI
Upgrade to ToolJet 3.20.178-lts, which contains the fix, per advisory GHSA-h49f-mhmm-jx4w (https://github.com/ToolJet/ToolJet/security/advisories/GHSA-h49f-mhmm-jx4w). Until patched, reduce blast radius by hardening the cloud identity layer rather than relying on the broken hostname filter: enforce IMDSv2-style protections and, where possible, block egress from the ToolJet pods/nodes to the link-local 169.254.169.254 address (for example via Kubernetes NetworkPolicy or node iptables), accepting that legitimate workloads needing IMDS will also lose access. Scope the AKS managed identity to least privilege so a stolen token grants minimal capability, and consider disabling or restricting the RestAPI data source for untrusted/free-tier users, which trades off self-service flexibility for safety. Because nip.io-style bypasses defeat naive hostname blocklists, any temporary application-layer filter should resolve the target and re-check the resulting IP, not just the string.
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
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39469