Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ CVE-2026-69259 — flowise

🔴 CVSS 9.5 — Critical ✅ No Known Exploit CWE-94 NVD
9.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Flowise RCE via SQLite Record Manager Node

=============================================================================

Security Advisory

elttam

Topic: Flowise RCE via SQLite Record Manager Node

Module: FlowiseAI/Flowise

Disclosed: 24-Apr-2026

Credits: Alex Brown

Affects: FlowiseAI/Flowise 3.1.2

# I. Background

Flowise AI is an open-source, low-code platform for building AI applications—such as chatbots, workflows, and autonomous agents—through an intuitive drag-and-drop interface, minimising the need for extensive coding.

Flowise allows users to connect to a local SQLite database for record management of Upsert Vector Store operations.

# II. Problem Description

The database path for the "SQLite Record Manager" node could be overridden using the additionalConfig input, as demonstrated in the following code snippet.

[https://github.com/FlowiseAI/Flowise/blob/[email protected]/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts](https://github.com/FlowiseAI/Flowise/blob/flowise-components%403.1.2/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts)

```ts

class SQLiteRecordManager_RecordManager implements INode {

...

async init(nodeData: INodeData, _: string, options: ICommonObject): Promise<any> {

const _tableName = nodeData.inputs?.tableName as string

const tableName = _tableName ? _tableName : 'upsertion_records'

const additionalConfig = nodeData.inputs?.additionalConfig as string <1>

const _namespace = nodeData.inputs?.namespace as string

const namespace = _namespace ? _namespace : options.chatflowid

const cleanup = nodeData.inputs?.cleanup as string

const _sourceIdKey = nodeData.inputs?.sourceIdKey as string

const sourceIdKey = _sourceIdKey ? _sourceIdKey : 'source'

let additionalConfiguration = {}

if (additionalConfig) {

try {

additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig)

} catch (exception) {

throw new Error('Invalid JSON in the Additional Configuration: ' + exception)

}

}

const database = path.join(process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise'), 'database.sqlite') <2>

const sqliteOptions = {

database,

...additionalConfiguration, <3>

type: 'sqlite'

}

const args = {

sqliteOptions,

tableName: tableName

}

const recordManager = new SQLiteRecordManager(namespace, args)

;(recordManager as any).cleanup = cleanup

;(recordManager as any).sourceIdKey = sourceIdKey

return recordManager

}

}

```

<1> The additionalConfig input was user controllable.

<2> The intended SQLite database path.

<3> Keyword argument expansion of the additionalConfiguration variable after the database variable, which allows overwriting the preceding database setting.

An attacker could abuse this weakness to write an SQLite database to an arbitrary filepath, which includes system directories since the [flowiseai/flowise:3.1.2](https://hub.docker.com/layers/flowiseai/flowise/3.1.2/images/sha256-ddba104d8e50fbc1e72c6fe021d012be83e66d78d26816e1a6a3fddab4212eff) Docker image runs as root.

However, unlike the [Flowise RCE via SQL Database Chain Node vulnerability](https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-pwfj-wh95-7mwp), the executed SQL query was not user controllable and the tableName input was validated to match the /^[a-zA-Z0-9_]+$/ regex pattern, as shown in the following code snippet.

[https://github.com/FlowiseAI/Flowise/blob/[email protected]/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts](https://github.com/FlowiseAI/Flowise/blob/flowise-components%403.1.2/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts)

```ts

class SQLiteRecordManager implements RecordManagerInterface {

...

sanitizeTableName(tableName: string): string {

// Trim and normalize case, turn whitespace into underscores

tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_')

// Validate using a regex (alphanumeric and underscores only)

if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { <1>

throw new Error('Invalid table name')

}

return tableName

}

...

async createSchema(): Promise<void> {

const dataSource = await this.getDataSource()

try {

const queryRunner = dataSource.createQueryRunner()

const tableName = this.sanitizeTableName(this.tableName) <1>

await queryRunner.manager.query(` <2>

CREATE

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. Rated impact: confidentiality high, integrity high, availability high.

CVSS metrics in full

The score comes from this vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

  • Attack vector: Network — reachable from anywhere that can route to the service.
  • Attack complexity: Low — the attack works reliably, with no preparation.
  • Attack requirements: None — no deployment-specific condition has to hold.
  • Privileges required: Low — an ordinary user account is enough.
  • User interaction: None — nobody has to be tricked into anything.
  • Confidentiality impact: High — total loss, or loss the attacker controls.
  • Integrity impact: High — total loss, or loss the attacker controls.
  • Availability impact: High — total loss, or loss the attacker controls.

Weakness class

CVE-2026-69259 is classified as CWE-94: Code Injection. Input is incorporated into code that the runtime evaluates, so an attacker can have their own code executed.

Affected software

CVE-2026-69259 is recorded against 3 packages.

  • flowise
  • flowise-components
  • unknown

Timeline and source

Published on 4 August 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
github.com (Web)
github.com (Web)
github.com (Package)
github.com (Web)

Other advisories for this package

flowise has other advisories on record. If you are patching this one, these are worth checking on the same host:

Same weakness in other software

These advisories are the same class of weakness (CWE-94: Code Injection) in other software:

Details

Severity CRITICAL
CVSS Score 9.5
CVSS Vector CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
CWE CWE-94
Public Exploit ✅ No
Source NVD
Published 2026-08-04
Updated 2026-08-20
Modified 2026-08-04
Fix URL N/A

Affected Packages

Software From version Fixed in
flowise
flowise-components
unknown

Similar Threats

Exploit Protection

Are you running flowise?

CVE-2026-69259 carries CVSS 9.5 Critical rating. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.

Check My Site For CVE-2026-69259 →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2026