{"id":"CVE-2026-69254","summary":"Flowise: RCE via NodeVM Sandbox Escape in executeJavaScriptCode() nodeVMOptions Override","details":"Flowise is a drag & drop user interface to build a customized large language model flow. Prior to 3.1.3, executeJavaScriptCode() accepted caller-provided nodeVMOptions and merged them over the default NodeVM security settings in packages/components/src/utils.ts. An authenticated attacker reaching packages/server/src/routes/node-custom-functions/index.ts could run a custom function that imported flowise-components/dist/src/utils.js, called executeJavaScriptCode() again with nodeVMOptions.require.builtin set to allow all built-in modules, and then required child_process to execute arbitrary system commands as root on the Flowise server. This issue is fixed in version 3.1.3.","aliases":["GHSA-3769-jgqc-cxm7"],"modified":"2026-08-12T03:51:46.286733372Z","published":"2026-08-04T15:28:49.651Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-94"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/69xxx/CVE-2026-69254.json"},"references":[{"type":"WEB","url":"https://github.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/69xxx/CVE-2026-69254.json"},{"type":"ADVISORY","url":"https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-3769-jgqc-cxm7"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-69254"},{"type":"FIX","url":"https://github.com/FlowiseAI/Flowise/commit/3086cb7e323bb96c5a581d3232ef975b0d92183d"},{"type":"FIX","url":"https://github.com/FlowiseAI/Flowise/pull/6306"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/flowiseai/flowise","events":[{"introduced":"0"},{"fixed":"3086cb7e323bb96c5a581d3232ef975b0d92183d"},{"fixed":"09f099dbfda179e439ec677d06ad737375899eef"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"3.1.3"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["flowise@3.1.2","flowise-ui@3.1.2","flowise-components@3.1.2","flowise@3.1.1","flowise-ui@3.1.1","flowise-components@3.1.1","flowise@3.1.0","flowise-ui@3.1.0","flowise-components@3.1.0","pre-langchain-v1","flowise@3.0.13","flowise-ui@3.0.13","flowise-components@3.0.13","flowise@3.0.12","flowise-ui@3.0.12","flowise-components@3.0.12","flowise@3.0.11","flowise-ui@3.0.11","flowise-components@3.0.11","flowise@3.0.10","flowise-ui@3.0.10","flowise-components@3.0.10","flowise@3.0.9","flowise-ui@3.0.9","flowise-components@3.0.9","flowise@3.0.8","flowise-ui@3.0.8","flowise-components@3.0.8","flowise@3.0.7","flowise-ui@3.0.7","flowise-components@3.0.7","flowise@3.0.6","flowise-ui@3.0.6","flowise-components@3.0.6","flowise@3.0.5","flowise-ui@3.0.5","flowise-components@3.0.5","flowise@3.0.4","flowise-ui@3.0.4","flowise-components@3.0.4","flowise@3.0.3","flowise-ui@3.0.3","flowise-components@3.0.3","flowise@3.0.2","flowise-ui@3.0.2","flowise-components@3.0.2","flowise@3.0.1","flowise-ui@3.0.1","flowise-components@3.0.1","flowise@3.0.0","flowise-ui@3.0.0","flowise-components@3.0.0","flowise@2.2.8","flowise-ui@2.2.8","flowise-components@2.2.8","flowise@2.2.7-patch.1","flowise-ui@2.2.7-patch.1","flowise-components@2.2.7-patch.1","flowise@2.2.7","flowise-ui@2.2.7","flowise-components@2.2.7","flowise@2.2.6-hotfix.1","flowise@2.2.6","flowise-ui@2.2.6","flowise-components@2.2.6","flowise@2.2.5","flowise-ui@2.2.5","flowise-components@2.2.5","flowise@2.2.4","flowise-ui@2.2.4","flowise-components@2.2.4","flowise@2.2.3","flowise-ui@2.2.3","flowise-components@2.2.3","flowise@2.2.2","flowise-ui@2.2.2","flowise-components@2.2.2","flowise@2.2.1","flowise-ui@2.2.1","flowise-components@2.2.1","flowise@2.2.0","flowise-ui@2.2.0","flowise-components@2.2.0","flowise@2.1.5","flowise-ui@2.1.5","flowise-components@2.1.5","flowise@2.1.4","flowise-ui@2.1.4","flowise-components@2.1.4","flowise@2.1.3","flowise-ui@2.1.3","flowise-components@2.1.3","flowise@2.1.2","flowise-ui@2.1.2","flowise-components@2.1.2","flowise@2.1.1","flowise-ui@2.1.1","flowise-components@2.1.1","flowise@2.1.0","flowise-ui@2.1.0","flowise-components@2.1.0","flowise@2.0.7","flowise-ui@2.0.7","flowise-components@2.0.7","flowise@2.0.6","flowise-ui@2.0.6","flowise-components@2.0.6","flowise@2.0.5","flowise-ui@2.0.5","flowise-components@2.0.5","flowise@2.0.4","flowise-ui@2.0.4","flowise-components@2.0.4","flowise@2.0.3","flowise-ui@2.0.3","flowise-components@2.0.3","flowise@2.0.2","flowise-ui@2.0.2","flowise-components@2.0.2","flowise@1.8.4","flowise-ui@1.8.4","flowise-components@1.8.6","flowise@1.8.3","flowise-ui@1.8.3","flowise-components@1.8.4","flowise@1.8.2","flowise-ui@1.8.2","flowise-components@1.8.3","flowise@1.8.1","flowise-ui@1.8.1","flowise-components@1.8.1","flowise@1.8.0","flowise-ui@1.8.0","flowise-components@1.8.0","flowise@1.7.2","flowise-ui@1.7.2","flowise-components@1.7.2","flowise@1.7.1","flowise-ui@1.7.1","flowise-components@1.7.1","flowise@1.7.0","flowise-ui@1.7.0","flowise-components@1.7.0","flowise@1.6.6","flowise-ui@1.6.6","flowise-components@1.6.8","flowise@1.6.5","flowise-ui@1.6.5","flowise-components@1.6.7","flowise@1.6.4","flowise-ui@1.6.4","flowise-components@1.6.6","flowise@1.6.3","flowise-ui@1.6.3","flowise-components@1.6.5","flowise@1.6.2","flowise-ui@1.6.2","flowise-components@1.6.4","flowise@1.6.1","flowise-ui@1.6.1","flowise-components@1.6.3","flowise@1.6.0","flowise-ui@1.6.0","flowise-components@1.6.2","flowise@1.5.1","flowise-ui@1.5.1","flowise-components@1.6.1","flowise@1.5.0","flowise-ui@1.5.0","flowise-components@1.6.0","flowise@1.4.12","flowise-ui@1.4.9","flowise-components@1.5.3","flowise@1.4.11","flowise-ui@1.4.8","flowise-components@1.5.2","flowise@1.4.10","flowise-ui@1.4.7","flowise-components@1.5.1","flowise@1.4.9","flowise@1.4.8","flowise-ui@1.4.6","flowise-components@1.5.0","flowise@1.4.7","flowise-ui@1.4.5","flowise-components@1.4.9","flowise-components@1.4.8","flowise@1.4.6","flowise-ui@1.4.4","flowise-components@1.4.7","flowise@1.4.5","flowise-ui@1.4.3","flowise@1.4.4","flowise-ui@1.4.2","flowise-components@1.4.6","flowise@1.4.2","flowise-components@1.4.2","flowise@1.4.1","flowise-components@1.4.1","flowise@1.4.0","flowise-ui@1.4.0","flowise-components@1.4.0","flowise@1.3.9","flowise-ui@1.3.7","flowise-components@1.3.11","flowise-components@1.3.10","flowise@1.3.8","flowise-ui@1.3.6","flowise-components@1.3.9","flowise@1.3.7","flowise-ui@1.3.5","flowise-components@1.3.8","flowise@1.3.6","flowise-ui@1.3.4","flowise-components@1.3.7","flowise@1.3.5","flowise-ui@1.3.3","flowise-components@1.3.5","flowise@1.3.4","flowise-ui@1.3.2","flowise-components@1.3.4","flowise@1.3.3","flowise-ui@1.3.1","flowise-components@1.3.3","flowise@1.3.2","flowise-components@1.3.2","flowise@1.3.1","flowise-components@1.3.1","flowise@1.3.0","flowise-ui@1.3.0","flowise-components@1.3.0","flowise@1.2.16","flowise-ui@1.2.15","flowise-components@1.2.17","flowise@1.2.15","flowise-ui@1.2.14","flowise-components@1.2.16","flowise@1.2.14","flowise-ui@1.2.13","flowise-components@1.2.15","flowise@1.2.13","flowise-ui@1.2.12","flowise-components@1.2.14","flowise@1.2.11","flowise-ui@1.2.10","flowise-components@1.2.12","flowise@1.2.9","flowise-components@1.2.10","flowise@1.2.8","flowise-ui@1.2.7","flowise-components@1.2.9","flowise@1.2.7","flowise-ui@1.2.6","flowise-components@1.2.8","flowise@1.2.6","flowise-ui@1.2.5","flowise-components@1.2.7","flowise@1.2.5","flowise-ui@1.2.4","flowise-components@1.2.6","flowise@1.2.4","flowise-ui@1.2.3","flowise-components@1.2.5","flowise@1.2.3","flowise-ui@1.2.2","flowise-components@1.2.4","flowise-components@1.2.3","flowise@1.2.2","flowise-ui@1.2.1","flowise-components@1.2.2","flowise@1.2.1","flowise-ui@1.2.0","flowise-components@1.2.1","flowise@1.1.1","flowise-components@1.1.1","flowise@1.1.0","flowise-ui@1.1.0","flowise-components@1.1.0","flowise@1.0.1","flowise@1.0.0","flowise-ui@1.0.0","flowise-components@1.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-69254.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}