CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-RWRP-9823-P2XQ

GHSA-RWRP-9823-P2XQ: Incomplete Credential Redaction in Flowise API

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 4, 2026·6 min read·3 visits

Executive Summary (TL;DR)

Flowise fails to redact decrypted credentials whose fields are defined as 'string' instead of 'password' in the schema, exposing database passwords and GCP private keys over the API.

An incomplete credential redaction mechanism in Flowise allows authenticated users with standard view permissions to retrieve sensitive decrypted third-party credentials in plaintext.

Vulnerability Overview

Flowise is an open-source visual tool for building and orchestrating large language model applications. To integrate with third-party APIs, databases, and cloud services, Flowise manages credentials via its backend service layer. Users save database connection strings, API keys, and service account files within dedicated configurations, which the application encrypts before writing them to the database.

The vulnerability lies in the API endpoint responsible for retrieving these saved credentials. Specifically, the GET /api/v1/credentials/:id endpoint retrieves, decrypts, and exposes raw secrets in its HTTP response body under certain conditions. The exposure stems from a selective redaction mechanism that only flags and sanitizes variables explicitly categorized under the 'password' data type.

This architecture creates a broad attack surface. Any authenticated user possessing low-privilege access, such as viewer permissions (credentials:view), can call the affected API endpoint directly. If the target credential contains fields configured as standard strings rather than passwords, the backend transmits the sensitive secrets in plaintext, resulting in unauthorized information disclosure.

Root Cause Analysis

The root cause of this exposure is an incomplete sanitization routine within the credential redaction function. In the Flowise backend, when a user requests a credential by ID, the application invokes decryptCredentialData() to recover the plaintext values from database storage. Once decrypted, the backend attaches these secrets to the plainDataObj attribute within the API response object.

To prevent exposing these secrets to the client browser, the application pipes the response object through a sanitization helper named redactCredentialWithPasswordType(). This function iterates through each credential field defined in the component's metadata schema. However, the function relies on a strict filtering constraint, checking only for fields where the parameter type equals 'password'.

If a credential component developer defines a secret-carrying field using the 'string' type, the sanitizer bypasses it entirely. The helper function fails to match the field against its hardcoded sanitization rule and returns the variable unmodified. Consequently, the backend returns the database connection strings, RSA private keys, and master access tokens in plaintext within the JSON response payload.

Code Analysis

The vulnerability is localized within the credential retrieval services and utility modules. In packages/server/src/utils/index.ts, the validation routine only matches input parameters with the explicit type designation of 'password'. Below is the vulnerable logic path:

// Vulnerable utility logic in packages/server/src/utils/index.ts
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 redacts if type is 'password'
        )
        if (inputParam) {
            plainDataObj[cred] = REDACTED_CREDENTIAL_VALUE
        }
    }
    return plainDataObj
}

This logic fails when processing component configurations that use standard string declarations for sensitive values. For instance, the PostgreSQL credential component (postgresUrl) defines its connection string as follows:

{
    "label": "PostgreSQL Connection URL",
    "name": "postgresUrl",
    "type": "string",
    "placeholder": "postgresql://dbuser:password@localhost:5432/dbname"
}

Because the type is 'string', the find condition in the sanitization loop evaluates to undefined. The field is not sanitized, and the raw connection string, including the embedded database username and password, is written directly to the API response.

Exploitation Methodology

Exploitation of this vulnerability requires network access to the Flowise API and a valid user session token. An authenticated attacker starts by identifying credential records associated with database nodes or cloud service integrations. Since the system exposes unique identifiers for credential objects, the attacker can retrieve specific credential records directly.

The attacker issues a standard HTTP GET request to the /api/v1/credentials/:id endpoint, appending the targeting credential identifier. No special tools or exploit payloads are required. A simple request tool or command-line client like curl can perform the operation:

curl -X GET "http://localhost:3000/api/v1/credentials/<credential_uuid>" \
  -H "x-request-from: internal" \
  -H "Cookie: token=<jwt_token>"

If the targeted credential is a PostgreSQL connection string, a MongoDB URL, or a Google Cloud Service Account JSON file, the response payload will contain the raw credentials inside the plainDataObj attribute. The client interface typically filters or hides these values, but direct API interaction bypasses the UI constraints entirely.

Impact Assessment

The impact of this credential exposure is significant. Attackers who extract connection strings can directly access internal database servers (such as MongoDB, PostgreSQL, and Redis databases). This access permits arbitrary data exfiltration, database structure modification, and complete loss of confidentiality and integrity of application data stored in those repositories.

Furthermore, the exposure of Google Cloud Service Account JSON structures exposes RSA private keys. Attackers can utilize these keys to authenticate directly to GCP services, potentially accessing Google Vertex AI models, cloud storage buckets, or Kubernetes clusters. This exposure can lead to lateral movement within the victim's broader enterprise cloud infrastructure.

From a privilege escalation perspective, any user with basic workspace viewing rights can extract administrative credentials. In multi-tenant or shared Flowise environments, this allows low-privileged operators to elevate their actual operational capabilities to match those of the organization's cloud administrators, fully compromising the trust boundary.

Remediation and Mitigation

To address this vulnerability, administrators must upgrade their Flowise deployments to version 3.1.3 or higher. The fixed release updates the input configurations and ensures that sensitive fields are categorized properly, preventing exposure through the API responses. The patch release can be accessed from the official repository at https://github.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3.

If immediate software upgrades are not feasible, organizations must restrict network access to the Flowise administrative interface using network access control lists or firewalls. Implement strict network segmentation to ensure the application server cannot reach sensitive destination networks unless explicitly required. Additionally, administrators should audit user accounts and limit access to trusted personnel.

For custom self-hosted codebases, developers should manually override the sanitization logic. Replace the reliance on 'password' types with a more robust property matching mechanism, or audit all credentials schemas in packages/components/credentials/ to verify that sensitive attributes explicitly use secure types. The application should avoid returning raw values inside plainDataObj to client-side endpoints whenever possible.

Official Patches

FlowiseAIFlowise v3.1.3 Patch Release

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Affected Systems

Flowise deployments utilizing visual LLM orchestration workflows and database credentials

Affected Versions Detail

Product
Affected Versions
Fixed Version
Flowise
FlowiseAI
<= 3.1.23.1.3
AttributeDetail
CWE IDCWE-200
Attack VectorNetwork
CVSS Score6.5
EPSS ScoreN/A
ImpactInformation Exposure
Exploit StatusPoC
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1552Unsecured Credentials
Credential Access
T1552.001Credentials in Files
Credential Access
T1552.004Private Keys
Credential Access
T1213Data from Information Repositories
Collection
CWE-200
Exposure of Sensitive Information to an Unauthorized Actor

The product exposes sensitive information to an actor who is not explicitly authorized to have access to that information.

Known Exploits & Detection

GitHub Security AdvisoryOfficial advisory detailing reproduction steps and proof of concept

Vulnerability Timeline

Vulnerability disclosed and published on the GitHub Advisory Database
2026-08-04
Flowise v3.1.3 is released, resolving the incomplete credential redaction logic
2026-08-04

References & Sources

  • [1]GitHub Security Advisory GHSA-RWRP-9823-P2XQ
  • [2]Global Advisory Record
  • [3]Flowise Release tag 3.1.3
  • [4]Flowise GitHub Codebase

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•36 minutes ago•CVE-2026-70474
7.6

CVE-2026-70474: Incorrect Authorization and Missing Authentication in Flowise OAuth2 Credential Endpoints

A critical authorization flaw exists in Flowise, a popular drag-and-drop orchestrator for building customized Large Language Model flows. Prior to version 3.1.3, multiple OAuth2 credential endpoints do not filter database lookups by the requesting entity's workspace context. This omission, combined with the exclusion of several endpoints from the global authentication pipeline, permits unauthenticated remote actors to access, manipulate, or steal access tokens linked to external service integrations.

Alon Barad
Alon Barad
0 views•5 min read
•about 3 hours ago•CVE-2026-69262
7.1

CVE-2026-69262: Incorrect Authorization Flaw in Flowise Chatflow Deletion Endpoint

CVE-2026-69262 is a high-severity incorrect authorization vulnerability (CWE-863) within the Flowise drag-and-drop LLM flow platform. Prior to version 3.1.3, Flowise did not enforce resource-type validation on its deletion endpoint. Although routing middleware ensured users held deletion privileges for either chatflows or agentflows, the service level lacked validation checks to verify whether the target resource matched the user's specific permissions. Consequently, an authenticated user with only agentflow deletion permissions could delete arbitrary chatflow configurations, leading to unauthorized state modification and service disruption.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 4 hours ago•CVE-2026-69258
8.8

CVE-2026-69258: Unauthenticated Property Injection and Authorization Bypass in Flowise

CVE-2026-69258 is a high-severity property injection and unauthenticated authorization bypass vulnerability in Flowise, a drag-and-drop orchestration interface for building customized LLM workflows. In affected versions prior to 3.1.3, the unauthenticated prediction API endpoint (`POST /api/v1/prediction/:id`) processed client-controlled parameters inside an `overrideConfig` payload without authorization checks. The backend unconditionally spread this object into internal context structures, enabling unauthenticated remote attackers to overwrite critical session values, pollute execution contexts, and bypass flow restrictions.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 5 hours ago•CVE-2026-69252
7.2

CVE-2026-69252: Broken Workspace Isolation and Missing Authorization in Flowise File Management API

CVE-2026-69252 represents a missing authorization check (CWE-862) in the files API route (`/api/v1/files`) of Flowise, a drag-and-drop user interface for building LLM flows. Prior to version 3.1.3, an authenticated API key or user could list, access, and delete files across arbitrary workspaces inside an organization, completely bypassing workspace logical boundaries.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 5 hours ago•CVE-2026-45584
8.1

CVE-2026-45584: Heap-Based Buffer Overflow in Microsoft Defender (mpengine.dll)

A comprehensive technical analysis of CVE-2026-45584, a high-severity heap-based buffer overflow in Microsoft Defender's QEX parsing logic. The vulnerability resides within mpengine.dll and allows unauthenticated remote code execution or denial of service when processing crafted archives designed to trigger threat remediation and QEX history logging.

Alon Barad
Alon Barad
3 views•7 min read
•about 6 hours ago•CVE-2026-16728
4.8

CVE-2026-16728: Downstream HTTP Response Desynchronization in Undici Retry Interceptor

A medium-severity vulnerability in Undici's retry interceptor causes body-length mismatches with the Content-Length header during HTTP 206 response resumption. Forwarding these inconsistent headers downstream leads to HTTP response desynchronization, connection hangs, or potential protocol smuggling.

Alon Barad
Alon Barad
3 views•7 min read