Flowise's HTTP security wrappers (secureAxiosRequest and secureFetch) contain two SSRF bypass flaws: the default configuration allows all requests — including to localhost — when HTTP_DENY_LIST is unset, and a DNS rebinding TOCTOU attack can bypass IP validation by serving a safe IP during the check and an internal IP during the actual connection. For organizations running Flowise in cloud environments (AWS, GCP, Azure), this is acutely dangerous because any low-privileged user with workflow access can reach the cloud metadata service at 169.254.169.254, extracting IAM credentials and enabling lateral movement across the entire cloud account. This package has 37 cumulative CVEs, signaling a systemic security deficit in this codebase. Upgrade to flowise >= 3.1.0 immediately and explicitly set HTTP_DENY_LIST to include all RFC 1918 ranges and cloud metadata CIDRs — do not rely on the default.
What is the risk?
HIGH. The first flaw (default insecure) is effectively AC:L despite the CVSS AC:H score, which only accounts for the DNS rebinding scenario — any user with Flowise workflow access can exploit the unset HTTP_DENY_LIST path with zero technical skill. The second flaw (DNS rebinding) requires infrastructure setup but is well-documented and tooling exists. In cloud deployments, successful exploitation routinely leads to IAM credential theft via metadata services, elevating real-world impact beyond the CVSS C:H/I:H score to full cloud account compromise. The 37 other CVEs in this package further indicate immature security practices and a higher likelihood of additional undiscovered vulnerabilities.
How does the attack unfold?
What systems are affected?
How severe is it?
What is the attack surface?
What should I do?
6 steps-
Patch: Upgrade flowise-components and flowise to >= 3.1.0 immediately.
-
Explicit deny list: Set HTTP_DENY_LIST environment variable to block at minimum: 127.0.0.1, 0.0.0.0, 169.254.0.0/16 (cloud metadata), 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. Do not assume a default-safe configuration exists in any version.
-
Network controls: Deploy Flowise behind an egress firewall restricting outbound HTTP to known-good external endpoints only — defense in depth against TOCTOU bypass.
-
IMDSv2 enforcement: If running on AWS, enforce IMDSv2 (hop limit=1) on EC2 instances to block metadata service access from application-level SSRF.
-
Detection: Alert on outbound HTTP requests from Flowise processes to RFC 1918 addresses or 169.254.x.x; monitor DNS queries with TTL=0 from Flowise hosts as a DNS rebinding indicator.
-
Audit: Review existing workflow nodes for HTTP Request steps pointing to internal addresses.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is GHSA-2x8m-83vc-6wv4?
Flowise's HTTP security wrappers (secureAxiosRequest and secureFetch) contain two SSRF bypass flaws: the default configuration allows all requests — including to localhost — when HTTP_DENY_LIST is unset, and a DNS rebinding TOCTOU attack can bypass IP validation by serving a safe IP during the check and an internal IP during the actual connection. For organizations running Flowise in cloud environments (AWS, GCP, Azure), this is acutely dangerous because any low-privileged user with workflow access can reach the cloud metadata service at 169.254.169.254, extracting IAM credentials and enabling lateral movement across the entire cloud account. This package has 37 cumulative CVEs, signaling a systemic security deficit in this codebase. Upgrade to flowise >= 3.1.0 immediately and explicitly set HTTP_DENY_LIST to include all RFC 1918 ranges and cloud metadata CIDRs — do not rely on the default.
Is GHSA-2x8m-83vc-6wv4 actively exploited?
No confirmed active exploitation of GHSA-2x8m-83vc-6wv4 has been reported, but organizations should still patch proactively.
How to fix GHSA-2x8m-83vc-6wv4?
1. Patch: Upgrade flowise-components and flowise to >= 3.1.0 immediately. 2. Explicit deny list: Set HTTP_DENY_LIST environment variable to block at minimum: 127.0.0.1, 0.0.0.0, 169.254.0.0/16 (cloud metadata), 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. Do not assume a default-safe configuration exists in any version. 3. Network controls: Deploy Flowise behind an egress firewall restricting outbound HTTP to known-good external endpoints only — defense in depth against TOCTOU bypass. 4. IMDSv2 enforcement: If running on AWS, enforce IMDSv2 (hop limit=1) on EC2 instances to block metadata service access from application-level SSRF. 5. Detection: Alert on outbound HTTP requests from Flowise processes to RFC 1918 addresses or 169.254.x.x; monitor DNS queries with TTL=0 from Flowise hosts as a DNS rebinding indicator. 6. Audit: Review existing workflow nodes for HTTP Request steps pointing to internal addresses.
What systems are affected by GHSA-2x8m-83vc-6wv4?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, AI workflow automation, no-code LLM builders, RAG pipelines with web loaders.
What is the CVSS score for GHSA-2x8m-83vc-6wv4?
GHSA-2x8m-83vc-6wv4 has a CVSS v3.1 base score of 7.1 (HIGH).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0008.002 Domains AML.T0049 Exploit Public-Facing Application AML.T0053 AI Agent Tool Invocation AML.T0083 Credentials from AI Agent Configuration AML.T0085.001 AI Agent Tools Compliance Controls Affected
What are the technical details?
Original Advisory
### Summary The core security wrappers (secureAxiosRequest and secureFetch) intended to prevent Server-Side Request Forgery (SSRF) contain multiple logic flaws. These flaws allow attackers to bypass the allow/deny lists via DNS Rebinding (Time-of-Check Time-of-Use) or by exploiting the default configuration which fails to enforce any deny list. ### Details The flaws exist in packages/components/src/httpSecurity.ts. Default Insecure: If process.env.HTTP_DENY_LIST is undefined, checkDenyList returns immediately, allowing all requests (including localhost). DNS Rebinding (TOCTOU): The function performs a DNS lookup (dns.lookup) to validate the IP, and then the HTTP client performs a new lookup to connect. An attacker can serve a valid IP first, then switch to an internal IP (e.g., 127.0.0.1) for the second lookup. ### PoC nsure HTTP_DENY_LIST is unset (default behavior). Use any node utilizing secureFetch to access http://127.0.0.1. Result: Request succeeds. Scenario 2: DNS Rebinding Attacker controls domain attacker.com and a custom DNS server. Configure DNS to return 1.1.1.1 (Safe IP) with TTL=0 for the first query. Configure DNS to return 127.0.0.1 (Blocked IP) for subsequent queries. Flowise validates attacker.com -> 1.1.1.1 (Allowed). Flowise fetches attacker.com -> 127.0.0.1 (Bypass). Run the following for manual verification "// PoC for httpSecurity.ts Bypasses import * as dns from 'dns/promises'; // Mocking the checkDenyList logic from Flowise async function checkDenyList(url: string) { const deniedIPs = ['127.0.0.1', '0.0.0.0']; // Simplified deny list logic if (!process.env.HTTP_DENY_LIST) { console.log("⚠️ HTTP_DENY_LIST not set. Returning allowed."); return; // Vulnerability 1: Default Insecure } const { hostname } = new URL(url); const { address } = await dns.lookup(hostname); if (deniedIPs.includes(address)) { throw new Error(`IP ${address} is denied`); } console.log(`✅ IP ${address} allowed check.`); } async function runPoC() { console.log("--- Test 1: Default Configuration (Unset HTTP_DENY_LIST) ---"); // Ensure env var is unset delete process.env.HTTP_DENY_LIST; try { await checkDenyList('http://127.0.0.1'); console.log("[PASS] Default config allowed localhost access."); } catch (e) { console.log("[FAIL] Blocked:", e.message); } console.log("\n--- Test 2: 'private' Keyword Bypass (Logic Flaw) ---"); process.env.HTTP_DENY_LIST = 'private'; // User expects this to block localhost try { await checkDenyList('http://127.0.0.1'); // In real Flowise code, 'private' is not expanded to IPs, so it only blocks the string "private" console.log("[PASS] 'private' keyword failed to block localhost (Mock simulation)."); } catch (e) { console.log("[FAIL] Blocked:", e.message); } } runPoC();" ### Impact Confidentiality: High (Access to internal services if protection is bypassed). Integrity: Low/Medium (If internal services allow state changes via GET). Availability: Low.
Exploitation Scenario
An attacker with low-privilege access to a shared Flowise instance — a developer, contractor, or compromised account — creates a simple HTTP Request node targeting http://169.254.169.254/latest/meta-data/iam/security-credentials/. Since HTTP_DENY_LIST is unset in the default installation, secureAxiosRequest performs no IP validation and the request succeeds immediately, returning the instance profile name. A follow-up request to the role endpoint yields temporary AWS access keys with whatever permissions the Flowise host's IAM role holds. In a more targeted DNS rebinding scenario, the attacker points a workflow node at a controlled domain (attacker.com) with TTL=0 DNS records — returning 1.1.1.1 during Flowise's dns.lookup validation check and then 127.0.0.1 for the actual HTTP client connection — bypassing even a properly configured deny list.
Weaknesses (CWE)
CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition
Primary
CWE-918 Server-Side Request Forgery (SSRF)
Primary
CWE-367 — Time-of-check Time-of-use (TOCTOU) Race Condition: The product checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check.
- [Implementation] The most basic advice for TOCTOU vulnerabilities is to not perform a check before the use. This does not resolve the underlying issue of the execution of a function on a resource whose state and identity cannot be assured, but it does help to limit the false sense of security given by the check.
- [Implementation] When the file being altered is owned by the current user and group, set the effective gid and uid to that of the current user and group when executing this statement.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L References
Timeline
Related Vulnerabilities
CVE-2025-59528 10.0 Flowise: Unauthenticated RCE via MCP config injection
Same package: flowise CVE-2026-46442 9.9 Flowise: sandbox escape enables authenticated RCE
Same package: flowise CVE-2025-61913 9.9 Flowise: path traversal in file tools leads to RCE
Same package: flowise CVE-2026-40933 9.9 Flowise: RCE via MCP stdio command injection
Same package: flowise CVE-2026-56274 9.9 Flowise: RCE via MCP server command validation bypass
Same package: flowise