AI and data stack advisories

Severe, 6 weeks1498Projects326

1498 severe, 6 weeks · 326 projects

FlowiseGHSA-88pr-878c-24wf

Flowise: arbitrary file write

Flowise

Published Aug 4, 2026

High
Fix: upgrade to 3.1.3 or later
GitHub advisory

Summary

Flowise on current main allows an authenticated user with

documentStores:preview-process permission to trigger the S3 Directory

document loader with attacker-controlled S3 object keys. The loader joins

each returned S3 key with a temporary directory using path.join(tempDir, key)

and writes the object bytes to disk **without validating traversal sequences

such as ../**. Cleanup later removes only the original temporary directory,

so files written outside that directory persist on the host filesystem.

This yields arbitrary file write with the privileges of the Flowise

server process.

A related variant exists in the S3File loader when

fileProcessingMethod = unstructured (same root cause; its cleanup behavior

turns it into a mixed arbitrary write/delete/DoS primitive).

## Affected component

  • packages/components/nodes/documentloaders/S3Directory/S3Directory.ts
  • line 191: filePath = path.join(tempDir, key) (unsanitized)
  • line 213: recursive mkdirSync creates parent path
  • line 216: writeFileSync writes attacker-controlled bytes
  • line 289: cleanup only removes the original tempDir, so escaped

files remain on disk

  • Related (variant):

packages/components/nodes/documentloaders/S3File/S3File.ts

(lines 756, 780, 782, 817 , arbitrary write + recursive dirname...

Affected versions

PackageAffectedFixed in
flowise
npm
< 3.1.33.1.3
Details and references

## Summary Flowise on current `main` allows an authenticated user with `documentStores:preview-process` permission to trigger the `S3 Directory` document loader with attacker-controlled S3 object keys. The loader joins each returned S3 key with a temporary directory using `path.join(tempDir, key)` and writes the object bytes to disk **without validating traversal sequences such as `../`**. Cleanup later removes only the original temporary directory, so files written outside that directory persist on the host filesystem. This yields **arbitrary file write** with the privileges of the Flowise server process. A related variant exists in the `S3File` loader when `fileProcessingMethod = unstructured` (same root cause; its cleanup behavior turns it into a mixed arbitrary write/delete/DoS primitive). ## Affected component - `packages/components/nodes/documentloaders/S3Directory/S3Directory.ts` - line **191**: `filePath = path.join(tempDir, key)` (unsanitized) - line **213**: recursive `mkdirSync` creates parent path - line **216**: `writeFileSync` writes attacker-controlled bytes - line **289**: cleanup only removes the original `tempDir`

CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
Severity from
GitHub (reviewed advisory)
Weakness
CWE-22, CWE-73

More Flowise advisories

All Flowise