Flowise is vulnerable to arbitrary file write through its WriteFileTool
Critical9.9CVE-2025-61913 · Published Oct 9, 2025 · updated Feb 4, 2026
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| flowise npm | < 3.0.8 | 3.0.8 |
Details and references
### Summary The WriteFileTool in Flowise does not restrict the file path for reading, allowing authenticated attackers to exploit this vulnerability to write arbitrary files to any path in the file system, potentially leading to remote command execution. ### Details Flowise supports providing WriteFileTool for large models, which is used to write files to the server's file system. The implementation of this tool is located at packages/components/nodes/tools/WriteFile/WriteFile.ts. ``` /** * Class for writing data to files on the disk. Extends the StructuredTool * class. */ export class WriteFileTool extends StructuredTool { static lc_name() { return 'WriteFileTool' } schema = z.object({ file_path: z.string().describe('name of file'), text: z.string().describe('text to write to file') }) as any name = 'write_file' description = 'Write file from disk' store: BaseFileStore constructor({ store, ...rest }: WriteFileParams) { super(rest) this.store = store } async _call({ file_path, text }: z.infer<typeof this.schema>) { await this.store.writeFile(file_path, text) return 'File written to successfully.' } } ``` This tool directly uses the file_path parameter passed to it without verifying whether the path belongs to Flowise's working directory. Authenticated attackers can exploit this vulnerability to write files with arbitrary content to any path on the server. There are numerous ways to achieve remote command execution through arbitrary file write vulnerabilities, which will not be elaborated here. For example, attackers could write their own public key to ~/.ssh/authorized_keys to gain remote SSH access, or overwrite /etc/ld.so.preload to hijack dynamic libraries and execute arbitrary code. Flowise's historical vulnerability information (https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-8vvx-qvq9-5948) also describes steps to achieve remote command execution by overwriting the start command in package.json. ### PoC This file writing vulnerability has been verified to exist in the latest Flowise Docker image (https://hub.docker.com/layers/flowiseai/flowise/latest/images/sha256-26300377397818a451e0710389eb77615256b0f3ecc895194850ab35dda3ae7b). The reproduction steps are as follows: 1. Pull the Flowise Docker image ``` docker pull flowiseai/flowise ``` 2. Start the Flowise service ``` docker run -d --name flowise -p 3000:3000 flowise ``` 3. Access the Flowise service at server ip:3000 in your browser and register an account 4. Save the following content as agent.json ``` { "nodes": [ { "id": "startAgentflow_0", "type": "agentFlow", "position": { "x": -203, "y": 37 }, "data": { "id": "startAgentflow_0", "label": "Start", "version": 1.1, "name": "startAgentflow", "type": "Start", "color": "#7EE787", "hideInput": true, "baseClasses": [ "Start" ], "category": "Agent Flows", "description": "Starting point of the agentflow", "inputParams": [ { "label": "Input Type", "name": "startInputType", "type": "options", "options": [ { "label": "Chat Input", "name": "chatInput", "description": "Start the conversation with chat input" }, { "label": "Form Input", "name": "formInput", "description": "Start the workflow with form inputs" } ], "default": "chatInput", "id": "startAgentflow_0-input-startInputType-options", "display": true }, { "label": "Form Title", "name": "formTitle", "type": "string", "placeholder": "Please Fill Out The Form",
- CVSS 3.1
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
- Severity from
- GitHub (reviewed advisory)
- Weakness
- CWE-22
- Also known as
- CVE-2025-61913
- github.com/FlowiseAI/Flowise/security/advisories/GHSA-j44m-5v8f-gc9c
- github.com/FlowiseAI/Flowise/security/advisories/GHSA-jv9m-vf54-chjj
- nvd.nist.gov/vuln/detail/CVE-2025-61913
- github.com/FlowiseAI/Flowise/pull/5275
- github.com/FlowiseAI/Flowise/commit/1fb12cd93143592a18995f63b781d25b354d48a3
- github.com/FlowiseAI/Flowise
- github.com/FlowiseAI/Flowise/releases/tag/flowise%403.0.8
More Flowise advisories
All Flowise| Date | Advisory | Severity | Fixed in |
|---|---|---|---|
| Oct 82025 | FlowiseAI/Flosise has File Upload vulnerability CVE-2025-61687High8.3fixed in 3.0.8 | High8.3 | 3.0.8 |
| Oct 102025 | Flowise is vulnerable to arbitrary file exposure through its ReadFileTool GHSA-j44m-5v8f-gc9cHigh7.7fixed in 3.0.8 | High7.7 | 3.0.8 |
| Oct 62025 | Flowise vulnerable to RCE via Dynamic function constructor injection CVE-2025-55346Critical9.8no fix yet | Critical9.8 | No fix yet |
| Oct 32025 | Flowise Stored XSS vulnerability through logs in chatbot CVE-2025-29192Medium5.3fixed in 3.0.5 | Medium5.3 | 3.0.5 |
| Oct 32025 | Flowise is vulnerable to stored XSS via "View Messages" allows credential theft in FlowiseAI admin panel CVE-2025-50538Critical9.3fixed in 3.0.8 | Critical9.3 | 3.0.8 |
| Oct 32025 | Flowise vulnerable to XSS CVE-2025-71331Mediumfixed in 3.0.8 | Medium | 3.0.8 |