CVE-2026-34156NocoBase是一个无代码/低代码平台。在2.0.28版本之前,其工作流脚本节点在Node.js vm沙箱中执行用户提供的JavaScript代码。尽管通过环境变量控制了模块加载白名单,但传入沙箱的console对象暴露了主机领域的WritableWorkerStdio流对象(console._stdout和console._stderr)。经过身份验证的攻击者可以利用这一点遍历原型链,从而绕过沙箱限制,实现以root权限执行的远程代码执行(RCE)。该问题已在2.0.28版本中修复。
该漏洞的核心在于Node.js vm模块的上下文隔离机制被绕过。NocoBase试图通过自定义require白名单来限制沙箱内的代码访问敏感模块,但开发人员将宿主环境的console对象直接传递到了沙箱上下文中。在Node.js中,console对象包含如_stdout和_stderr等流属性,这些对象引用了宿主环境的内部对象。攻击者可以在沙箱代码中访问console._stdout,并通过原型链遍历(如Object.getPrototypeOf)逐步向上查找,最终获取到宿主环境的Function构造函数。利用这个Function构造函数,攻击者可以在沙箱外部的作用域中构造并执行任意JavaScript代码,从而绕过vm模块的隔离,实现任意命令执行,且由于进程权限较高,可导致服务器被完全控制。