Flowise NodeVM sandbox escape via puppeteer allowlist - authenticated RCE and arbitrary file read via Chromium
What fixes it
- 3.1.3flowise, npmGitHub
npm install flowise@3.1.3 - 3.1.3flowise-components, npmGitHub
npm install flowise-components@3.1.3 - 3.1.3FlowiseCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Flowise (packages flowise and flowise-components) in versions <= 3.1.2 contain a sandbox escape in the vm2/@flowiseai/nodevm JavaScript sandbox. An authenticated user with access to the /api/v1/node-custom-function endpoint can escape the sandbox by supplying attacker-controlled executablePath and args parameters to puppeteer.launch(), which internally invokes child_process.spawn() outside the sandbox boundary. This allows execution of arbitrary OS commands as the Flowise process user (root in the official Docker image) and arbitrary host file disclosure via Chromium's file:// URL handling. In versions 3.0.8–3.1.2 exploitation requires ALLOW_BUILTIN_DEP=true; earlier versions are exploitable by default. Fixed in 3.1.3.
Text from CVE List
Affected versions 6
- flowise, npm<= 3.1.2GitHub
- flowise-components, npm<= 3.1.2GitHub
- Flowiseaffected: all versions before 3.1.3CVE List
- Flowiseunaffected: 3.1.3CVE List
- flowise, npmfrom first release, fixed in 3.1.3OSV
- flowise-components, npmfrom first release, fixed in 3.1.3OSV