
Hacking your life with AI can get you hacked | Blog | Endor Labs
Endor Labs researcher details 14 critical/high vulnerabilities (7+ public CVEs/GHSAs) found across seven AI orchestration platforms — NocoBase, Flowise, Langflow, Dify, Activepieces, Kestra, and Apache Airflow — all of which trust anyone who can touch a workflow to run code on the host. Walkthroughs include a Flowise 3.1.2 unauthenticated prompt-injection-to-RCE chain via Pyodide/Node bridge escape, Langflow's trivial `lambda`-string eval sandbox bypass, NocoBase's broken SES Compartment/Proxy guard escalation, and Dify/Activepieces sandboxes applied only after attacker code already executes. The research (presented at DEF CON 34, full whitepaper linked) argues these are multi-tenant code-execution engines shipped with single-user threat models, exposing connected credentials, email, calendars, and customer data.
What it is
An Endor Labs writeup (DEF CON 34, full whitepaper linked) dissecting how seven AI orchestration platforms — NocoBase, Flowise, Langflow, Dify, Activepieces, Kestra, Apache Airflow — arrive at host RCE. Beyond the vuln count, its value is a diagnostic taxonomy and the specific defeated-control signatures, which let you check your own deployment or code against the same failure classes.
How it works
The author sorts every finding onto one spectrum from accidental to intentional:
flowchart LR A["Accidental: built security, shipped it broken (NocoBase)"] --> B["LLM as code: LLM output = user input, wired into eval() (Flowise, Langflow)"] B --> C["Wrong phase: real sandbox applied too late (Dify, Activepieces)"] C --> D["Intentional: no sandbox, left to the builder"]
Concrete defeated controls:
- NocoBase (CVSS 9.9): three guards around its expression evaluator all had holes —
lockdown()that arms SES was commented out behind a TODO; the Proxyhas()trap returns true for a TypeScriptprivatefield (private compiles to an ordinary instance property); the ACL readloggedIn. One request escalated a member account toCOPY … TO PROGRAMon the DB host. - Flowise 3.1.2: guard was a 38-pattern regex over a Pyodide runtime with pandas/numpy pre-imported. The
\bimport\bword-boundary bug never matchedimportlib. Chain: onecurlto/api/v1/prediction/<uuid>, no auth → prompt makes the model emit Python assembled fromchr()codes (dangerous names arrive as data) → Pyodide runs it → its JS bridge reaches Node scope →process.mainModule.require('child_process')+execSync; CSV Agent data exfiltrated via_js.fetch(). - Langflow: Smart Transform validator was
startswith("lambda")and":" in lambda_text, theneval(lambda_text). A single chat message emitslambda x: __import__('os').system('id'). - Dify (
dify-sandbox:0.2.15):prescript.pyruns a server-supplied{{preload}}string beforelib.DifySeccomp(...). Author confirmedeuid = 0,NoNewPrivs: 0, and read/etc/shadowfrom the preload phase. Activepieces makes the same mistake in the module-loading phase of a V8 isolate (require()runs before controls apply).
Preconditions / Affected
Flowise, Kestra, and Langflow could be exploited without the attacker ever signing in under some configurations. Others require only an authenticated member account. Exposure grows sharply if these are internet-reachable rather than single-user local tools.
What to do
The page states no patches or commands. The actionable stance it gives: treat these as multi-tenant code-execution engines, not developer toys — any connector should be treated as a point of compromise, and network exposure is the real control since vendor "hardening is the operator's problem" only holds if those defenses actually exist.
Caveats
Some vendors closed reports as working-as-designed (executing code is the product). The CVE/GHSA count (7) is described as "and growing." The excerpt cuts off mid-sentence on Activepieces.
Organisations named here
- DEF CON 34
Technologies named here
- Pyodide
- NocoBase
- SES Compartment
- Flowise
- Langflow
- V8 isolate
- dify-sandbox
- Dify
- Activepieces
- Pebble
- Kestra
- Apache Airflow
Techniques named here
- Prompt injection to remote code execution
- Shell injection
- Code validator/allowlist bypass
- Sandbox escape via execution ordering
- Trust boundary mismatch via unauthenticated triggers
- Sandbox escape via bridged runtime scope
- Documentation as attack surface
Related in AppSec
Flowise MCP Security Bypass Enables RCE
Inside an Oracle Database SQL Injection Attack | Huntress
OASIS
