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·12 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

•about 1 hour ago•CVE-2026-107395
4.3

CVE-2026-107395: Missing Authorization in Indico Legacy Session Export API

An authorization bypass vulnerability exists in the legacy session export API of Indico, an open-source event management system developed at CERN. Due to a missing object-level access check, authenticated users can bypass configuration-level restrictions to extract private session metadata (including session titles, descriptions, and list of conveners) from events that they are otherwise authorized to view.

Alon Barad
Alon Barad
4 views•5 min read
•about 2 hours ago•CVE-2026-107394
6.8

CVE-2026-107394: Server-Side Request Forgery Bypass via Parser Differential in Indico

An incomplete Server-Side Request Forgery (SSRF) validation check in Indico prior to version 3.3.13 allows authenticated event organizers to bypass outbound network restrictions. By utilizing backslash characters within crafted URLs, attackers can exploit a parser differential between the application's validator and the downstream HTTP client library to access internal network resources.

Alon Barad
Alon Barad
4 views•6 min read
•about 3 hours ago•CVE-2026-107717
6.5

CVE-2026-107717: Chat Role Injection and Prompt Boundary Bypass in Banks Library

CVE-2026-107717 represents a critical prompt boundary bypass and chat role injection vulnerability in the Banks Python package (versions prior to 2.5.0). The library parses generated template outputs line-by-line, attempting to validate each segment as a JSON-serialized ChatMessage object without validating the source boundaries of the text. If an application integrates user input directly into a prompt template, a remote, unauthenticated attacker can supply multi-line inputs with structured JSON payloads. This input is then parsed as high-privilege system instructions or tool execution responses, completely hijacking downstream Large Language Model behavior.

Alon Barad
Alon Barad
8 views•6 min read
•about 4 hours ago•CVE-2026-107716
7.3

CVE-2026-107716: Path Traversal and Link Following in banks DirectoryPromptRegistry

Improper pathname limitation and link resolution (CWE-22 and CWE-59) in the banks library prior to version 2.5.1 allow local attackers to read or write arbitrary files via crafted symbolic links in the prompt directory registry.

Amit Schendel
Amit Schendel
8 views•7 min read
•about 5 hours ago•CVE-2026-107726
9.3

CVE-2026-107726: Unrestricted Deserialization in Hazelcast Zero Config Compact Serialization

Improper validation of dynamic class resolution within Hazelcast's Zero Config Compact Serialization allows unauthenticated clients to trigger reflective class instantiation. This flaw can be exploited to read arbitrary JVM heap or off-heap memory, crash cluster nodes, or achieve arbitrary code execution under specific classpath conditions. This issue is resolved in Hazelcast versions 5.4.5, 5.5.10, 5.6.1, and 5.7.0.

Alon Barad
Alon Barad
6 views•6 min read
•about 6 hours ago•CVE-2026-107719
4.2

CVE-2026-107719: Session Expiration Bypass in fast-jwt via Verifier Cache

An authentication bypass vulnerability in NearForm's fast-jwt before version 6.3.4 allows attackers to replay expired tokens due to an error in the verifier's cache expiration logic. When caching is enabled, the cache TTL defaults to 10 minutes instead of honoring the token's exp claim if the token lacks an iat claim.

Alon Barad
Alon Barad
7 views•7 min read