CVE-2026-39987 Marimo 预认证 RCE 研究
概述
-
本项目聚焦于 CVE-2026-39987,这是 Marimo 中一个与终端 WebSocket 端点 /terminal/ws 相关的预认证远程代码执行漏洞。
-
Marimo 是一个开源的反应式 Python notebook,允许用户通过 Web 界面编写和执行 Python 代码。由于 notebook 平台可以在服务器端执行代码,诸如终端访问之类的特权功能必须受到适当的身份认证和访问控制保护。
-
在存在漏洞的 Marimo 版本中,终端 WebSocket 端点未正确实施身份认证。因此,未认证的用户可能访问终端功能,并在 Marimo 运行的环境中执行命令。
-
本项目的目标是在本地 Docker 实验环境中复现该漏洞,分析根本原因,比较存在漏洞的版本与已修补的版本,并验证修复措施能够防止该问题。
CVE 信息
- CVE ID:CVE-2026-39987
- 产品:Marimo
- 漏洞类型:关键功能缺少身份认证
- CWE:CWE-306
- 受影响版本:Marimo < 0.23.0
- 修复版本:Marimo 0.23.0+
- 受影响端点:
/terminal/ws
- 影响:预认证远程代码执行
- 严重程度:严重
- CVSS v4.0:9.3
- CVSS v3.1:9.8
项目目标
- 了解 Marimo 及该漏洞的背景
- 搭建存在漏洞的本地 Docker 实验环境
- 在 localhost 中安全地复现该漏洞
- 分析
/terminal/ws 中的根本原因
- 在存在漏洞的版本与修复版本之间进行补丁差异分析
- 在已修补的 Marimo 上验证修复
- 编写缓解措施与经验总结
实验环境
- 操作系统:Windows 11
- Docker 版本:29.0.0
- Docker Compose 版本:v5.5.1
- Python 版本:3.11.9
- 存在漏洞的 Marimo 版本:TODO
- 已修补的 Marimo 版本:TODO
项目状态
免责声明
本项目仅用于教育目的。所有测试都将在本地 Docker 实验环境中进行。