---
title: "GHSA-8vvx-qvq9-5948: Flowise allows arbitrary file write to RCE"
url: https://erroneo.us/security/ghsa/GHSA-8vvx-qvq9-5948/
description: "GHSA-8vvx-qvq9-5948 (critical, npm): Flowise allows arbitrary file write to RCE. Summary An attacker could write files with arbitrary content to the…"
type: advisory
section: "Security Digest"
date_published: 2025-03-14
date_modified: 2025-03-14
publisher: erroneo.us
author: erroneo.us Security Desk
ghsa: "GHSA-8vvx-qvq9-5948"
license: All rights reserved. Quote with attribution and a link.
---

# GHSA-8vvx-qvq9-5948: Flowise allows arbitrary file write to RCE

## Affected packages

- npm `flowise` <= 2.2.7 → fixed: none listed

## Details

Summary An attacker could write files with arbitrary content to the filesystem via the /api/v1/document-store/loader/process API. An attacker can reach RCE(Remote Code Execution) via file writing. Details All file writing functions in packages/components/src/storageUtils.ts are vulnerable. - addBase64FilesToStorage - addArrayFilesToStorage - addSingleFileToStorage The fileName parameter, which is an untrusted external input, is being used as an argument to path.join() without verification. Therefore, users can move to the parent folder via ../ and write files to any path. Once file writing is possible in all paths, an attacker can reach RCE (Remote Code Execution) in a variety of ways. In PoC (Proof of Concept), RCE was reached by overwriting package.json. PoC In PoC, package.json is overwritten. This is a scenario in which arbitrary code is executed when pnpm start is executed by changing the start command in the scripts{} statement to an arbitrary value. - original start command - modify start command When a user runs the pnpm start command, a pyozzi-poc file is created in the /tmp path. 1. package.json content base64 encoding 2. Overwrite package.json via /api/v1/document-store/loader/process > Request Body The part after filename: of the txtFile parameter is the value used as fileName in the function. Add ../ to the filename value to move to the top path, then specify package.json in the project folder /usr/src/ as the path. Afterwards, when the user starts the server (pnpm start), the added script will be executed. (touch /tmp/pyozzi-poc) - starting server with touch /tmp/pyozzi-poc command - /tmp/pyozzi-poc file created Impact Remote Code Execution…

## Sources

- [GitHub Advisory GHSA-8vvx-qvq9-5948](https://github.com/advisories/GHSA-8vvx-qvq9-5948)
- [github.com](https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-8vvx-qvq9-5948)
- [github.com](https://github.com/FlowiseAI/Flowise/commit/c2b830f279e454e8b758da441016b2234f220ac7)

---
Source page: https://erroneo.us/security/ghsa/GHSA-8vvx-qvq9-5948/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
