CVE-2026-73604
Flowise before 3.1.3 Credential Exposure via API
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1/credentials/:id endpoint that returns decrypted secrets in plaintext. Authenticated users with credentials:view permission can retrieve sensitive data including database connection URLs with embedded passwords, cloud service account JSON with private keys, and API keys by calling this endpoint.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.1
Flowise before 3.1.3 Credential Exposure via API
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1/credentials/:id endpoint that returns decrypted secrets in plaintext. Authenticated users with credentials:view permission can retrieve sensitive data including database connection URLs with embedded passwords, cloud service account JSON with private keys, and API keys by calling this endpoint.
- Record
CVE-2026-73604- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
EUVDEUVD-2026-57808
7.1
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1/credentials/:id endpoint that returns decrypted secrets in plaintext. Authenticated users with credentials:view permission can retrieve sensitive data including database connection URLs with embedded passwords, cloud service account JSON with private keys, and API keys by calling this endpoint.
- Record
EUVD-2026-57808- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-rwrp-9823-p2xq
6.5
Flowise: Incomplete Credential Redaction Exposes Secrets via API
Summary
The GET /api/v1/credentials/:id endpoint decrypts stored credential data and returns it in the plainDataObj field of the API response. While a redactCredentialWithPasswordType() function masks fields defined with type: 'password' in their component schema, many credential types store highly sensitive data (database connection URLs with embedded passwords, Google service account JSON with RSA private keys, AWS access keys) in fields defined as type: 'string'. These string-type fields are returned in full plaintext without any redaction.
Any authenticated user with credentials:view permission can retrieve the raw secrets of any credential in their workspace by calling this endpoint.
Vulnerable Code
Service Layer
packages/server/src/services/credentials/index.ts, getCredentialById() (line 127):
At line 138, the credential's encrypted data is decrypted:
const decryptedCredentialData = await decryptCredentialData(
credential.encryptedData,
credential.credentialName,
appServer.nodesPool.componentCredentials
)
At lines 143-146, the decrypted data is attached to the response as plainDataObj:
const returnCredential: ICredentialReturnResponse = {
...credential,
plainDataObj: decryptedCredentialData // <-- decrypted secrets in response
}
At line 147, only encryptedData is stripped, leaving plainDataObj intact:
const dbResponse: any = omit(returnCredential, ['encryptedData'])
Incomplete Redaction
packages/server/src/utils/index.ts, redactCredentialWithPasswordType() (line 1697):
export const redactCredentialWithPasswordType = (
componentCredentialName: string,
decryptedCredentialObj: ICredentialDataDecrypted,
componentCredentials: IComponentCredentials
): ICredentialDataDecrypted => {
const plainDataObj = cloneDeep(decryptedCredentialObj)
for (const cred in plainDataObj) {
const inputParam = componentCredentials[componentCredentialName].inputs?.find(
(inp) => inp.type === 'password' && inp.name === cred // <-- only 'password' type
)
if (inputParam) {
plainDataObj[cred] = REDACTED_CREDENTIAL_VALUE
}
}
return plainDataObj
}
This function only redacts fields where inp.type === 'password'. Fields with type: 'string' are returned verbatim, even when they contain secrets.
Credential Definitions Storing Secrets in String-Type Fields
| Credential | Field | Type | Contains |
|---|---|---|---|
| mongoDBUrlApi | mongoDBConnectUrl | string | mongodb+srv://user:password@host/db |
| googleVertexAuth | googleApplicationCredential | string | Full service account JSON with RSA private key |
| postgresUrl | postgresUrl | string | postgresql://user:password@host/db |
| redisCacheUrlApi | redisUrl | string | redis://user:password@host:port |
| awsApi | awsKey | string | AWS Access Key ID |
| langfuseApi | langFusePublicKey | string | Langfuse API public key |
| httpBasicAuth | basicAuthUsername | string | HTTP Basic Auth username |
There are 60+ credential definitions in packages/components/credentials/, many with sensitive string-type fields.
Proof of Concept
Environment
- Flowise v3.0.13 (
flowiseai/flowise:latestDocker image) - Authenticated as admin user via enterprise auth
Steps to Reproduce
- Start Flowise and log in as any user with
credentials:viewpermission. - Create a MongoDB credential with a connection URL containing embedded credentials:
curl -X POST "http://TARGET:3000/api/v1/credentials" \
-H "Content-Type: application/json" \
-H "x-request-from: internal" \
-H "Cookie: token=<jwt-token>" \
-d '{
"name": "MongoDB Production",
"credentialName": "mongoDBUrlApi",
"plainDataObj": {
"mongoDBConnectUrl":…
- Record
GHSA-rwrp-9823-p2xq- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-xvgm-pqh7-jv5q
7.1
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1...
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1/credentials/:id endpoint that returns decrypted secrets in plaintext. Authenticated users with credentials:view permission can retrieve sensitive data including database connection URLs with embedded passwords, cloud service account JSON with private keys, and API keys by calling this endpoint.
- Record
GHSA-xvgm-pqh7-jv5q- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
NVD
7.1
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1/credentials/:id endpoint that returns decrypted secrets in plaintext. Authenticated users with credentials:view permission can retrieve sensitive data including database connection URLs with embedded passwords, cloud service account JSON with private keys, and API keys by calling this endpoint.
- Record
CVE-2026-73604- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
OSV
7.1
Flowise before 3.1.3 Credential Exposure via API
Flowise before 3.1.3 contains an incomplete credential redaction vulnerability in the GET /api/v1/credentials/:id endpoint that returns decrypted secrets in plaintext. Authenticated users with credentials:view permission can retrieve sensitive data including database connection URLs with embedded passwords, cloud service account JSON with private keys, and API keys by calling this endpoint.
- Record
CVE-2026-73604- CVSS 4.0
- 7.1 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-200
- Updated
- 2026-11-02
OSVGHSA-rwrp-9823-p2xq
6.5
Flowise: Incomplete Credential Redaction Exposes Secrets via API
Summary
The GET /api/v1/credentials/:id endpoint decrypts stored credential data and returns it in the plainDataObj field of the API response. While a redactCredentialWithPasswordType() function masks fields defined with type: 'password' in their component schema, many credential types store highly sensitive data (database connection URLs with embedded passwords, Google service account JSON with RSA private keys, AWS access keys) in fields defined as type: 'string'. These string-type fields are returned in full plaintext without any redaction.
Any authenticated user with credentials:view permission can retrieve the raw secrets of any credential in their workspace by calling this endpoint.
Vulnerable Code
Service Layer
packages/server/src/services/credentials/index.ts, getCredentialById() (line 127):
At line 138, the credential's encrypted data is decrypted:
const decryptedCredentialData = await decryptCredentialData(
credential.encryptedData,
credential.credentialName,
appServer.nodesPool.componentCredentials
)
At lines 143-146, the decrypted data is attached to the response as plainDataObj:
const returnCredential: ICredentialReturnResponse = {
...credential,
plainDataObj: decryptedCredentialData // <-- decrypted secrets in response
}
At line 147, only encryptedData is stripped, leaving plainDataObj intact:
const dbResponse: any = omit(returnCredential, ['encryptedData'])
Incomplete Redaction
packages/server/src/utils/index.ts, redactCredentialWithPasswordType() (line 1697):
export const redactCredentialWithPasswordType = (
componentCredentialName: string,
decryptedCredentialObj: ICredentialDataDecrypted,
componentCredentials: IComponentCredentials
): ICredentialDataDecrypted => {
const plainDataObj = cloneDeep(decryptedCredentialObj)
for (const cred in plainDataObj) {
const inputParam = componentCredentials[componentCredentialName].inputs?.find(
(inp) => inp.type === 'password' && inp.name === cred // <-- only 'password' type
)
if (inputParam) {
plainDataObj[cred] = REDACTED_CREDENTIAL_VALUE
}
}
return plainDataObj
}
This function only redacts fields where inp.type === 'password'. Fields with type: 'string' are returned verbatim, even when they contain secrets.
Credential Definitions Storing Secrets in String-Type Fields
| Credential | Field | Type | Contains |
|---|---|---|---|
| mongoDBUrlApi | mongoDBConnectUrl | string | mongodb+srv://user:password@host/db |
| googleVertexAuth | googleApplicationCredential | string | Full service account JSON with RSA private key |
| postgresUrl | postgresUrl | string | postgresql://user:password@host/db |
| redisCacheUrlApi | redisUrl | string | redis://user:password@host:port |
| awsApi | awsKey | string | AWS Access Key ID |
| langfuseApi | langFusePublicKey | string | Langfuse API public key |
| httpBasicAuth | basicAuthUsername | string | HTTP Basic Auth username |
There are 60+ credential definitions in packages/components/credentials/, many with sensitive string-type fields.
Proof of Concept
Environment
- Flowise v3.0.13 (
flowiseai/flowise:latestDocker image) - Authenticated as admin user via enterprise auth
Steps to Reproduce
- Start Flowise and log in as any user with
credentials:viewpermission. - Create a MongoDB credential with a connection URL containing embedded credentials:
curl -X POST "http://TARGET:3000/api/v1/credentials" \
-H "Content-Type: application/json" \
-H "x-request-from: internal" \
-H "Cookie: token=<jwt-token>" \
-d '{
"name": "MongoDB Production",
"credentialName": "mongoDBUrlApi",
"plainDataObj": {
"mongoDBConnectUrl":…
- Record
GHSA-rwrp-9823-p2xq- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-73604 is a high vulnerability (CVSS 7.1) in Flowiseai Flowise, published August 4, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. Fixed in flowise 3.1.3.
References
github.com/FlowiseAI/Flowise/security/advisories/GHSA-rwrp-9823-p2xq
vulncheck.com/advisories/flowise-before-credential-exposure-via-api
github.com/FlowiseAI/Flowise/releases/tag/[email protected]
github.com/advisories/GHSA-rwrp-9823-p2xq
nvd.nist.gov/vuln/detail/CVE-2026-73604
github.com/advisories/GHSA-xvgm-pqh7-jv5q
github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73604.json
github.com/FlowiseAI/Flowise
Left out here: the rest of 2 source descriptions. The JSON record has them.