Quick answers
- Is CVE-2026-70470 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-70470 being exploited in the wild.
- How severe is CVE-2026-70470?
- Critical severity, with a CVSS score of 9.8, published 4 August 2026.
- Which products and versions are affected?
- flowise (npm) <= 3.1.2, SEMVER:introduced=0,fixed=3.1.3; flowise-components (npm) <= 3.1.2, SEMVER:introduced=0,fixed=3.1.3.
- Is there a fix for CVE-2026-70470?
- Yes. flowise (npm): upgrade to 3.1.3 or later; flowise-components (npm): upgrade to 3.1.3 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-70470 attacked?
- It is attacked over the network, in a web application.
- Am I affected by CVE-2026-70470?
- Check whether you run flowise (npm) or flowise-components (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.
How to fix
- flowise (npm): upgrade to 3.1.3 or later
npm install flowise@3.1.3 - flowise-components (npm): upgrade to 3.1.3 or later
npm install flowise-components@3.1.3
Technical details
The validatePythonCodeForDataFrame function in pythonCodeValidator.ts uses a blacklist of regex patterns to prevent dangerous Python constructs (import, __class__, __builtins__, etc.) before passing code to pyodide.runPythonAsync. The vulnerability exploits two design flaws: (1) JavaScript regex word boundary \b is ASCII-only and does not match Unicode letters, so __cl𝐚ss__ (with a mathematical bold 'a') bypasses the pattern \b__class__\b; (2) Python 3 applies NFKC normalization to all identifiers at parse time, so __cl𝐚ss__ is normalized to __class__ and executed as-is. Attackers can also assemble forbidden keywords via chr() calls to avoid literal pattern matches. The affected code paths are in CSVAgent.ts and AirtableAgent.ts, which validate LLM-generated Python code and customReadCSV configuration before execution. From within Pyodide running in Node.js, the js module interop allows access to process.mainModule.require('child_process').execSync, granting full OS command execution. A proof-of-concept demonstrates validator bypass and successful command execution. The fix in version 3.1.3 removes the vulnerable agents entirely.
Affected products
- FlowiseAI Flowise <= 3.1.2
- FlowiseAI flowise-components <= 3.1.2
Identifiers
- CVE-2026-70470
- GHSA-52fh-8v99-63c2
Timeline
- 2026-08-04: disclosed: GHSA-52fh-8v99-63c2 published
- 2026-06-11: patched: Fixed in version 3.1.3 by removing AirtableAgent and CSVAgent
References
- https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-52fh-8v99-63c2
- https://github.com/FlowiseAI/Flowise/pull/6499
- https://github.com/FlowiseAI/Flowise/commit/f4e2794f6a576b94578f2fdafbf49c2fb304626c
- https://github.com/FlowiseAI/Flowise
- https://github.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3