/

CVE-2026-69259

Severity:

HIGH RISK

(8.8)

Code Injection (CWE-94) in Flowise SQLite Record Manager

CVE-2026-69259

Analyzed

Vulnerability type

Category:

Code Injection

CWE:

CWE-94

Impact:

Remote Code Execution

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Flowise's SQLite Record Manager node allows attacker-controlled configuration to overwrite the intended database path and write attacker-influenced content to sensitive filesystem locations.

An authenticated attacker may use this behavior to achieve code execution when a privileged deployment later launches Chromium and processes configuration files, particularly when the published container runs as root.

Flowise's SQLite Record Manager node allows attacker-controlled configuration to overwrite the intended database path and write attacker-influenced content to sensitive filesystem locations.

An authenticated attacker may use this behavior to achieve code execution when a privileged deployment later launches Chromium and processes configuration files, particularly when the published container runs as root.

Affected context

The issue occurs in Flowise deployments using the SQLite Record Manager node where user-controlled additionalConfig is merged after the intended database configuration. Risk is increased when the application uses the published Docker image with elevated container privileges and when Chromium processes configuration files from writable filesystem locations. Exploitation also depends on an authenticated user being able to invoke or configure the affected node.

The issue occurs in Flowise deployments using the SQLite Record Manager node where user-controlled additionalConfig is merged after the intended database configuration. Risk is increased when the application uses the published Docker image with elevated container privileges and when Chromium processes configuration files from writable filesystem locations. Exploitation also depends on an authenticated user being able to invoke or configure the affected node.

Exploit preconditions

  • Attack surface: Flowise workflows using the SQLite Record Manager node
  • Required access: Authenticated access sufficient to configure or execute an affected flow
  • Trigger point: SQLite database creation or writing followed by a Puppeteer-launched Chromium process
  • Environmental condition: The process must have permission to write to a location later interpreted as Chromium configuration
  • Why exploitation is possible: Untrusted configuration can override the intended database path, while attacker-controlled table and namespace values can influence database contents that are subsequently processed as configuration
  • Attack surface: Flowise workflows using the SQLite Record Manager node
  • Required access: Authenticated access sufficient to configure or execute an affected flow
  • Trigger point: SQLite database creation or writing followed by a Puppeteer-launched Chromium process
  • Environmental condition: The process must have permission to write to a location later interpreted as Chromium configuration
  • Why exploitation is possible: Untrusted configuration can override the intended database path, while attacker-controlled table and namespace values can influence database contents that are subsequently processed as configuration

Why this happens

The vulnerable code spreads user-controlled additionalConfig after the intended database setting, allowing a caller to replace security-relevant configuration values such as the SQLite path. This insecure merge order breaks the intended trust boundary between application-controlled settings and user input.

When the resulting database content is written to a location consumed as executable or shell-interpreted Chromium configuration, attacker-controlled data can be treated as code. This behavior maps to CWE-94: Improper Control of Generation of Code, because data reaches a downstream interpreter without adequate restriction or separation.

The vulnerable code spreads user-controlled additionalConfig after the intended database setting, allowing a caller to replace security-relevant configuration values such as the SQLite path. This insecure merge order breaks the intended trust boundary between application-controlled settings and user input.

When the resulting database content is written to a location consumed as executable or shell-interpreted Chromium configuration, attacker-controlled data can be treated as code. This behavior maps to CWE-94: Improper Control of Generation of Code, because data reaches a downstream interpreter without adequate restriction or separation.

Potential impact

  • An attacker could execute commands with the privileges of the Flowise or Chromium process
  • A root-running container could be fully compromised
  • Sensitive application data or credentials could be accessed
  • The host or surrounding infrastructure could face increased risk if container isolation is weak
  • Workflows and stored model-related configuration could be modified or disrupted
  • An attacker could execute commands with the privileges of the Flowise or Chromium process
  • A root-running container could be fully compromised
  • Sensitive application data or credentials could be accessed
  • The host or surrounding infrastructure could face increased risk if container isolation is weak
  • Workflows and stored model-related configuration could be modified or disrupted

General mitigation guidance

Mitigation generally focuses on preserving ownership of security-sensitive configuration and preventing data from reaching executable configuration paths.

Defensive patterns include:

  • Whitelisting accepted configuration properties instead of merging arbitrary user-provided objects
  • Applying trusted values after any user-supplied configuration, or rejecting attempts to override protected settings
  • Restricting SQLite database paths to an application-owned directory with canonical-path checks
  • Separating generated data from directories consumed as interpreter or browser configuration
  • Running containers and worker processes as non-root users with minimal filesystem permissions
  • Using read-only filesystems and narrowly scoped writable volumes where practical
  • Limiting authenticated users' ability to create, edit, or execute flows
  • Treating database content and workflow metadata as data rather than executable configuration

Mitigation generally focuses on preserving ownership of security-sensitive configuration and preventing data from reaching executable configuration paths.

Defensive patterns include:

  • Whitelisting accepted configuration properties instead of merging arbitrary user-provided objects
  • Applying trusted values after any user-supplied configuration, or rejecting attempts to override protected settings
  • Restricting SQLite database paths to an application-owned directory with canonical-path checks
  • Separating generated data from directories consumed as interpreter or browser configuration
  • Running containers and worker processes as non-root users with minimal filesystem permissions
  • Using read-only filesystems and narrowly scoped writable volumes where practical
  • Limiting authenticated users' ability to create, edit, or execute flows
  • Treating database content and workflow metadata as data rather than executable configuration

How teams detect issues like this

Detection approaches can include:

  • Static analysis for object spreads or configuration merges in which untrusted properties follow protected settings
  • Code review checks for user-controlled filesystem paths, SQLite destinations, and writes to browser configuration directories
  • Tests that attempt to override protected configuration fields and verify that the override is rejected
  • Runtime monitoring for unexpected database files or writes in system and Chromium configuration paths
  • Container policy checks for root execution, broad filesystem write permissions, and writable sensitive directories
  • Audit logging for authenticated users who create or execute flows involving the SQLite Record Manager node

Automated security review tools can help identify unsafe merge patterns and data flows from workflow inputs to filesystem or interpreter boundaries.

Detection approaches can include:

  • Static analysis for object spreads or configuration merges in which untrusted properties follow protected settings
  • Code review checks for user-controlled filesystem paths, SQLite destinations, and writes to browser configuration directories
  • Tests that attempt to override protected configuration fields and verify that the override is rejected
  • Runtime monitoring for unexpected database files or writes in system and Chromium configuration paths
  • Container policy checks for root execution, broad filesystem write permissions, and writable sensitive directories
  • Audit logging for authenticated users who create or execute flows involving the SQLite Record Manager node

Automated security review tools can help identify unsafe merge patterns and data flows from workflow inputs to filesystem or interpreter boundaries.

Sources

SourceLink
github.comgithub.com/FlowiseAI/Flowise/commit/d07186844263bad057008863037466aff7c3390f
github.comgithub.com/FlowiseAI/Flowise/pull/6464
github.comgithub.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3
github.comgithub.com/FlowiseAI/Flowise/security/advisories/GHSA-x3hf-7cj6-3r4m

Frequently asked

questions

It can be exploitable through the Flowise application by an authenticated user, but practical impact depends on enabled node functionality, container permissions, and whether a downstream Chromium process consumes the affected configuration location.

Not necessarily. The key requirement is authenticated access that permits configuring or running a flow using the affected node. Deployment authorization and workflow controls may limit the available attack surface.

Do not allow user-controlled configuration to override protected database settings. Validate and allowlist configuration fields, constrain database paths to application-owned storage, and prevent generated data from being interpreted as browser or shell configuration.

Apply least privilege to containers and service accounts, test configuration-merge boundaries, monitor sensitive filesystem writes, and enforce policies that prohibit runtime-generated content in executable configuration directories.

It can be exploitable through the Flowise application by an authenticated user, but practical impact depends on enabled node functionality, container permissions, and whether a downstream Chromium process consumes the affected configuration location.

Not necessarily. The key requirement is authenticated access that permits configuring or running a flow using the affected node. Deployment authorization and workflow controls may limit the available attack surface.

Do not allow user-controlled configuration to override protected database settings. Validate and allowlist configuration fields, constrain database paths to application-owned storage, and prevent generated data from being interpreted as browser or shell configuration.

Apply least privilege to containers and service accounts, test configuration-merge boundaries, monitor sensitive filesystem writes, and enforce policies that prohibit runtime-generated content in executable configuration directories.

Find out what's already
exploitable in your codebase.