CVE-2026-39987Marimo是一个响应式Python笔记本。在0.23.0版本之前,其终端WebSocket端点 `/terminal/ws` 存在严重的身份验证绕过漏洞。由于该端点在建立连接时未进行身份验证验证,仅检查了运行模式和平台支持,导致未经身份验证的攻击者可以直接连接并获取完整的PTY shell,从而在服务器上执行任意系统命令。该漏洞CVSS评分为9.8,属于严重级别,攻击者无需用户交互即可利用此漏洞完全控制受害主机。
该漏洞源于Marimo在处理WebSocket连接时的逻辑缺陷。正常情况下,敏感WebSocket端点(如 `/ws`)会调用 `validate_auth()` 函数来确保请求经过身份验证。然而,`/terminal/ws` 端点在实现时遗漏了这一关键的安全检查。当攻击者向 `/terminal/ws` 发送连接请求时,系统仅验证运行模式是否允许终端以及平台是否支持PTY,并未验证用户的会话或令牌。一旦连接建立,攻击者可以通过WebSocket协议发送终端指令,服务器将直接执行这些指令并将结果返回。由于绕过了认证机制,攻击者无需任何凭据即可获得服务器最高权限的Shell访问能力,导致机密性、完整性和可用性全面受损。这种设计缺陷使得暴露在公网的Marimo实例极易受到自动化攻击,攻击者可借此植入后门、窃取数据或横向移动。