Aug 4, 2026·5 min read·46 visits
An unauthenticated property injection vulnerability in Flowise (< 3.1.3) allows remote attackers to overwrite critical workflow parameters, facilitating session hijacking and prompt injection.
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.
Flowise is an open-source low-code platform designed to orchestrate Large Language Model (LLM) workflows. The system maps distinct nodes representing agents, vector stores, prompt templates, and chat memory states into unified directed graphs. To facilitate real-time interactions, the server exposes public endpoints, including the prediction API route located at POST /api/v1/prediction/:id.
This endpoint accepts a runtime payload, which can include an optional overrideConfig object. The purpose of overrideConfig is to adjust runtime execution arguments for specific workflow elements. However, in vulnerable configurations, the application accepts and processes these parameters without validating authorization states.
The unauthenticated prediction endpoint merges incoming configuration overrides directly into the execution context. An attacker can manipulate this behavior to inject arbitrary properties, leading to CWE-915 (Improperly Controlled Modification of Dynamically-Determined Object Attributes) and CWE-639 (Authorization Bypass Through User-Controlled Key).
The root cause of this vulnerability lies in the unsafe application of the ES6 spread operator (...) to unsanitized, user-supplied JSON objects. In JavaScript, when properties are merged using the spread operator, any key-value pairs matching existing properties will silently overwrite the previous declarations.
The Flowise backend executed this spread operation when constructing execution contexts within three major modules: buildAgentflow.ts, buildChatflow.ts, and utils/index.ts. Because the application failed to implement validation checks or schema enforcement before merging, incoming variables received priority.
Specifically, the application skipped validating the apiOverrideStatus parameter, which is intended to check if overrides are permitted on the active flow. This omission allowed any unauthenticated attacker to inject conflicting variables—such as sessionId or chatHistory—into the active memory configuration, causing the server to process arbitrary falsified data.
The vulnerability is localized to several core orchestration helper files where internal execution state objects are instantiated. In packages/server/src/utils/buildChatflow.ts, the context mapping occurred as follows:
// Vulnerable context construction in buildChatflow.ts
const flowData: ICommonObject = {
chatId,
sessionId,
chatHistory,
apiMessageId,
...incomingInput.overrideConfig // Vulnerable spread
}A similar implementation error existed in packages/server/src/utils/buildAgentflow.ts and packages/server/src/utils/index.ts where arbitrary fields from the client-side overrideConfig were directly spread into state configurations:
// Vulnerable state merge in buildAgentflow.ts
const flowConfig = {
apiMessageId,
chatHistory,
runtimeChatHistoryLength: Math.max(0, runtimeChatHistory.length - 1),
state: updatedState,
...overrideConfig // Vulnerable spread
}The fix, introduced in commit 23b997ee5ef9e269b628bad0f56f1ecb86bd2fca, removes the spread operators completely. The variables are now defined strictly and statically:
// Patched context construction in buildChatflow.ts
const flowData: ICommonObject = {
chatId,
sessionId,
chatHistory,
apiMessageId
}By enforcing static key assignment, the application completely blocks unvalidated client-provided inputs from modifying administrative context values. Variable overrides are now restricted to authorized workflow nodes and verified via the internal replaceInputsWithConfig() utility.
Exploiting this flaw requires no authentication. The attacker only needs network access to the Flowise server and the target flow identifier. The flow identifier is frequently exposed in client-side integrations, such as public chat widgets.
An attacker constructs a HTTP POST request to /api/v1/prediction/:id. Inside the payload, the attacker defines the overrideConfig block, populating it with values that conflict with the server's internal state. For example, injecting a falsified array of messages into the chatHistory parameter tricks the target LLM model into executing commands based on synthetic conversational turns.
This mechanism allows attackers to mock previous user confirmations, bypass security check-loops, or supply synthetic authorization contexts. This technique alters the conversational history and misleads the LLM into generating unauthorized responses.
The impact of CVE-2026-69258 is substantial due to its threat to system data integrity. By hijacking active sessionId parameters, attackers can cross the boundary of session isolation. This enables them to access, pollute, or hijack conversations belonging to other active users on the platform.
Furthermore, the injection of custom properties inside the $flow.* namespace allows manipulation of execution variables. If the underlying flow contains nodes designed to run SQL queries, make external webhook requests, or call API integrations, attackers can alter the query structures or destination URLs by modifying template variables.
While this vulnerability does not directly yield OS-level remote code execution, the ability to bypass application logical security barriers, manipulate prompt histories, and corrupt administrative routing data merits its High CVSS rating of 8.8.
To resolve this vulnerability, deploy the security update to Flowise version 3.1.3 or higher. Administrators can upgrade standard installations using the NPM package manager or by pulling the corrected Docker container image from the official repository.
# Upgrade standard Flowise deployment
npm install -g flowise@latest
# Or pull latest Docker image
docker pull flowiseai/flowise:3.1.3If patching cannot be performed immediately, employ a Web Application Firewall (WAF) to inspect traffic directed to /api/v1/prediction/. Configure a rule to inspect incoming JSON bodies and block requests containing the overrideConfig key when paired with unauthorized internal parameter keys.
Network administrators can also deploy a Suricata or Snort signature to detect active exploitation attempts at the boundaries of the network by inspecting prediction payload strings.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Flowise FlowiseAI | < 3.1.3 | 3.1.3 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-915 / CWE-639 |
| Attack Vector | Network |
| CVSS v4.0 Score | 8.8 |
| Vulnerability Class | Property Injection / Authorization Bypass |
| Exploit Status | Proof-of-Concept Available |
| Remediation | Upgrade to v3.1.3 or higher |
The product initializes or populates an object with user-controlled input, allowing the user to modify properties of the object that should not be directly modifiable.
CVE-2026-55622 (GHSA-qx75-2p3r-pwm5) is an improper access control vulnerability (CWE-284) in Canonical LXD and LXC Incus (tracked as GHSA-c9f5-j9c3-mhrg). In multi-tenant deployments utilizing project-based isolation, the REST API handler for instance creation via POST /1.0/instances verifies that the authenticated user has authorization in the destination project specified by the query parameter, but fails to verify whether the user holds read or view permissions for the source instance when executing a copy operation across projects. Consequently, an authenticated client restricted to a single project can clone instances or snapshots from unauthorized projects into their own project, resulting in complete disclosure of the target instance filesystem and embedded credentials.
An authorization bypass vulnerability in Canonical LXD (tracked as GHSA-7mr3-28h5-m5vx and CVE-2026-55621, and as GHSA-64f3-v33m-w89f in Linux Containers Incus) allows an authenticated user with restricted project access to copy custom storage volumes and volume snapshots from unauthorized projects. The flaw resides in the storagePoolVolumesPost REST API handler, which verifies permissions on the destination project but fails to check whether the caller holds view entitlements on the source project or volume specified in the request body.
A missing authorization and configuration validation vulnerability in Canonical LXD and LXC Incus allows authenticated users within restricted projects to bypass project security boundaries. By smuggling prohibited low-level configuration directives (such as raw.lxc or raw.qemu) inside instance snapshots or backup archives, an attacker can restore these configurations within a restricted project and execute arbitrary commands with root privileges on the underlying host operating system.
A symbolic link traversal vulnerability (CWE-59) in Canonical LXD and Linux Containers Incus allows an authenticated user with image import permissions to read and write arbitrary files on the host filesystem. During image archive unpacking, the daemon fails to reject top-level symbolic links for the instance `templates` directory. Subsequent requests to the instance template API endpoints follow this symbolic link outside the instance storage directory with root privileges, enabling complete host compromise.
CVE-2026-12411 is a broken access control vulnerability in the DevLXD interface of Canonical LXD versions 6.6 through 6.8. The flaw resides in the devLXDInstancePatchHandler component, which fails to verify storage volume ownership when an instance attaches a new disk device via the /dev/lxd guest socket. When the security.devlxd.management.volumes configuration option is enabled, an untrusted guest or DevLXD identity can issue a crafted HTTP PATCH request referencing another tenant's custom storage volume. The LXD host daemon subsequently mounts the target volume into the requesting guest, permitting unauthorized cross-tenant read and write operations.
CVE-2026-105769 (GHSA-5q7h-w9jf-cx97, GO-2026-6225) is an origin validation error and credential exfiltration vulnerability affecting Kaniko prior to version 1.25.20. The flaw stems from an unanchored regular expression in the integrated Azure Container Registry (ACR) credential helper (github.com/chrismellard/docker-credential-acr-env). When Kaniko processes a Dockerfile containing an image reference hosted on a lookalike domain containing an ACR suffix as a substring (e.g., x.azurecr.io.attacker.com), the credential helper acquires a Microsoft Entra ID access token for Azure Resource Manager and transmits it via HTTP POST to the attacker-controlled host.