Flowise: Public chatflow endpoints return unsanitized flowData including plaintext API keys, passwords, and credential IDs
Summary
The GET /api/v1/public-chatflows/:id endpoint returns the full chatflow object without sanitization for public chatflows. Docker validation revealed this is worse than initially assessed: the sanitizeFlowDataForPublicEndpoint function does NOT exist in the released v3.0.13 Docker image. Both public-chatflows AND public-chatbotConfig return completely raw flowData including credential IDs, plaintext API keys, and password-type fields.
Root Cause
// packages/server/src/controllers/chatflows/index.ts:218-220
const chatflow = await chatflowsService.getChatflowById(req.params.id)
if (!chatflow) return res.status(StatusCodes.NOT_FOUND).json(...)
if (chatflow.isPublic) return res.status(StatusCodes.OK).json(chatflow) // ← NO sanitization!
Docker Validation (v3.0.13)
Created public chatflow with credential IDs and passwords in flowData:
{
"flowData": "{\"nodes\":[{\"data\":{\"credential\":\"e92a39bf-...\",\"inputs\":{\"password\":\"sk-supersecretkey123\",\"apiKey\":\"should-not-leak\"}}}]}"
}
The sanitizeFlowDataForPublicEndpoint function only exists in unreleased HEAD, and even there, only public-chatbotConfig calls it — public-chatflows never does.
Impact
- Credential IDs leaked — enables OAuth2 token theft chain (Finding 1)
- Plaintext API keys and passwords leaked — direct third-party account compromise
- Node configurations leaked — reveals internal architecture and endpoint URLs
- Both
public-chatflowsandpublic-chatbotConfigare affected in the released version
Suggested Fix
Apply sanitization to both public endpoints:
const sanitized = sanitizeFlowDataForPublicEndpoint(chatflow)
return res.status(StatusCodes.OK).json(sanitized)
Ensure the sanitization function strips all credential, password, apiKey, and secretKey fields from flowData.
References
packages/server/src/controllers/chatflows/index.tslines 209-236packages/server/src/utils/sanitizeFlowData.tslines 11-34 (exists only in unreleased HEAD)
Credits
- Shinobi Security - https://github.com/shinobisecurity
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| npm package | flowise | < 3.1.0 | 3.1.0 |
References
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N- Weakness (CWE)
CWE-200- Platform
- npm
- Package
flowise- Disclosed
- 17.04.2026
- Updated
- 11.10.2026 10:22
Sources and licenses
OSV / GitHub Advisory Database - GHSA-w47f-j8rh-wx87 - CC BY 4.0
Vulnerability history: flowise
All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 114
- First → latest
- 04.2024 10.2026
- Without a fix
- 16
- Exploited in attacks
- 0
Severity breakdown
- Critical 28
- High 62
- Medium 24
Disclosures per year
- 2024: 11
- 2025: 22
- 2026: 81
-
Flowise: Public chatflow endpoints return unsanitized flowData including plaintext API keys, passwords, and credential IDs this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.