文章总结: OneUptime监控平台曝出严重RCE漏洞CVE-2026-30957,评分9.9。因系统将宿主Playwright对象注入不安全的Node.jsvm沙箱,低权限用户可利用executablePath参数执行任意命令并接管集群。官方已发布10.0.21版本修复。建议立即升级,关闭开放注册,限制网络权限,并从架构层面采用独立容器隔离用户脚本。 综合评分: 90 文章分类: 漏洞分析,漏洞预警,应急响应
严重告警:OneUptime 监控平台曝出 RCE 漏洞,低权限用户可接管整个集群
原创
CVE-SEC CVE-SEC
CVE-SEC
2026年3月12日 11:00 四川
严重告警:OneUptime 监控平台曝出 RCE 漏洞,低权限用户可接管整个集群
近日,开源可观测性平台 OneUptime 被披露存在一个 CVSS 评分达 9.9 的严重远程代码执行漏洞(CVE-2026-30957)。攻击者仅凭一个普通成员账号,即可在监控探针服务器上执行任意系统命令,并借此读取数据库密码、接管整个后端集群。
漏洞背景
OneUptime 是一款定位为”全家桶”的开源统一监控平台,旨在以单一产品替代 Pingdom、PagerDuty、New Relic、Datadog、Sentry 等多个商业工具的组合。其核心功能之一是 Synthetic Monitors(合成监控)——用户可以编写任意 Playwright 脚本,由部署在全球各地的 Probe(探针)节点自动执行,模拟真实用户对 Web 服务进行测试。
该平台在 GitHub 上拥有超过 6,600 个 Star,支持 Docker Compose 和 Kubernetes 两种自托管部署方式,声称用户规模超过百万次下载,服务客户从初创公司延伸至 Fortune 500 企业。
漏洞的本质:把车钥匙直接插进了沙盒里
要理解这个漏洞,需要先了解 OneUptime 是如何执行用户提交的 Playwright 脚本的。
系统将用户脚本放在 Node.js 的 vm 模块构建的沙箱中运行,本意是隔离不可信代码。然而,系统在执行时把宿主进程真实的 Playwright browser 和 page 对象直接注入到了这个沙箱的上下文里。
问题在于,Playwright 的 browser.browserType().launch() 方法接受一个 executablePath 参数,允许指定任意可执行文件路径作为”浏览器”来启动。攻击者只需在脚本里写:
browser.browserType().launch({
executablePath: "/bin/sh",
ignoreDefaultArgs: true,
args: ["-c", "你的任意命令"]
});
系统就会把 /bin/sh 当作一个浏览器去调用,而攻击者的命令已经在 Probe 服务器的操作系统上执行完毕。
这里不需要任何沙箱逃逸技巧。vm 模块本就不是安全边界——Node.js 官方文档明确说明这一点——而向沙箱注入具备宿主权限的 Playwright 对象,相当于把车钥匙直接插进了理论上应该被隔离的沙盒里。
漏洞类型归属于 CWE-749(暴露危险方法或函数)。
攻击者需要什么条件
这个漏洞的门槛之低令人警惕:
- 目标实例版本低于 10.0.21
- 攻击者只需拥有目标项目中的普通成员账号(ProjectMember,这是 OneUptime 中权限最低的角色)
- 无需管理员权限,无需任何用户交互
更值得注意的是:如果目标实例开启了默认的开放注册功能,攻击者甚至不需要已有账号,自行注册即可完成全部前置条件,利用门槛实质降为零。
得手之后能做什么
Probe 服务通常以 network_mode: host 模式运行(与宿主机共享网络),同时在环境变量中存储有整个集群的凭证:
ONEUPTIME_SECRET
DATABASE_PASSWORD
REDIS_PASSWORD
CLICKHOUSE_PASSWORD
这意味着攻击者一旦在 Probe 上执行代码,就自动拿到了访问 PostgreSQL 数据库、Redis 缓存、ClickHouse 分析库的全部钥匙,并可借助 host 网络模式直接连接到这些内部服务,实现从单个 Probe 容器到整个后端基础设施的横向移动。
组合利用:与另一个 9.9 分漏洞配合使用
同批披露的 CVE-2026-30956(CVSS 9.9)是一个授权绕过漏洞。攻击者可以通过伪造 HTTP 请求头中的 is-multi-tenant-query 和 projectid 字段,绕过 OneUptime 的全部鉴权检查,读取任意用户的账号重置 Token,进而接管任意账号。
将两个漏洞组合使用时,即便目标实例关闭了开放注册,攻击者也可以先通过 CVE-2026-30956 接管一个已有项目成员账号,再利用 CVE-2026-30957 实施 RCE,整条攻击链无需任何社会工程学手段。
这不是第一次,也不是最后一次
CVE-2026-30957 并非孤立事件。翻看 OneUptime 近年的安全公告,可以看到一条清晰的漏洞脉络:
| 时间 | CVE 编号 | 漏洞类型 | 修复版本 | | — | — | — | — | | 2026年初 | CVE-2026-27574 | Node.js vm 原型链沙箱逃逸 | 10.0.5 | | 2026年初 | CVE-2026-27728 | traceroute 参数 OS 命令注入 | 10.0.7 | | 2026年2月 | CVE-2026-30887 | 无沙箱代码执行 | 10.0.18 | | 2026年3月 | CVE-2026-30921 | Playwright 对象注入 | 10.0.20 | | 2026年3月 | CVE-2026-30957 | Playwright 宿主对象暴露(本漏洞) | 10.0.21 |
每一个漏洞都是在上一个补丁之后又出现的新绕过,根因始终如一:系统将用户提交的不可信代码放在一个实质上不安全的环境中执行,每次修复都只是针对当前已知的攻击路径打补丁,而非从架构层面解决用户代码隔离问题。
时间线
| 时间 | 事件 | | — | — | | 未知 | 安全研究员 @maru1009 发现漏洞并私下报告 | | 2026-03-08 | OneUptime 官方发布修复版本 v10.0.21 | | 2026-03-10 | NVD 收录,CVE-2026-30957 正式公开披露 | | 2026-03-11 | TheHackerWire 等媒体跟进报道 |
如何应对
立即行动:
OneUptime 官方已于 2026 年 3 月 8 日发布 10.0.21 版本修复此漏洞,升级是最根本的解决方案。
Docker Compose 部署的实例可执行以下操作:
cd /path/to/oneuptime
git pull
git checkout 10.0.21
docker compose pull
docker compose up -d
暂时无法升级时的缓解措施:
- 关闭开放注册功能,防止匿名攻击者自行获取账号
- 严格审查项目成员权限,移除不必要的 Synthetic Monitor 创建和编辑权限
- 将 Probe 容器从
network_mode: host改为独立网络,限制其访问内部服务的范围 - 为 Probe 单独配置最小权限数据库账号,不使用集群管理员凭证
检测是否已遭利用:
检查 Monitor 配置中是否存在包含 executablePath、ignoreDefaultArgs、/bin/sh、/bin/bash 等字符串的 Synthetic Monitor 脚本;检查 Probe 宿主机的进程历史,是否存在由 Node.js 进程产生的非正常 shell 子进程记录。
给开发者的思考
这一系列漏洞揭示了一个在工程实践中被反复低估的问题:Node.js 的 vm 模块从来都不是安全沙箱。官方文档在第一行就写明了这一点,但仍有大量项目将其用于执行不可信代码。
真正的用户代码隔离需要在更低的层次上实现,例如使用基于 V8 Isolate 的 isolated-vm 库(提供独立的内存隔离),或在独立的容器中运行用户脚本并通过 IPC 交换数据。向沙箱注入具备宿主权限的对象,无论代理包装做得多么精细,本质上都是在用一个带漏洞的栅栏守护城堡大门。
参考资料
- 官方安全公告(GHSA-jw8q-gjvg-8w4q):https://github.com/OneUptime/oneuptime/security/advisories/GHSA-jw8q-gjvg-8w4q
- NVD 漏洞详情:https://nvd.nist.gov/vuln/detail/CVE-2026-30957
- 修复版本发布说明:https://github.com/OneUptime/oneuptime/releases/tag/10.0.21
- TheHackerWire 报道:https://www.thehackerwire.com/oneuptime-critical-rce-in-synthetic-monitors-cve-2026-30957/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:CVE-SEC CVE-SEC CVE-SEC《严重告警:OneUptime 监控平台曝出 RCE 漏洞,低权限用户可接管整个集群》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论