4月8日,开发Python交互式运算环境Marimo的团队披露了一项重大漏洞CVE-2026-39987。安全公司Sysdig发现,公告发布不到半天,已出现攻击行为。
安全公司Sysdig指出,在Marimo发布公告约10小时后,他们观测到漏洞利用的迹象,攻击者在3分钟内成功窃取了凭证。值得注意的是,当时该漏洞尚未分配CVE编号,也未公开概念验证代码(PoC),攻击者仅依据安全公告中的有限信息,便成功利用漏洞,在未经身份验证的情况下访问了终端节点,并手动侦察受害环境。此前公布的Langflow漏洞CVE-2026-33017,也在公布后20小时内被用于实际攻击,相比之下,攻击者解析并利用Marimo漏洞所花费的时间仅为Langflow漏洞的一半。
Marimo开发团队在公告中表示,CVE-2026-39987是一个未经身份验证的远程代码执行(RCE)漏洞,原因是终端的WebSocket端点缺乏身份验证机制,未授权攻击者可借此获取完整的伪终端(Pseudo-Terminal,PTY)Shell,并执行任意命令。该漏洞影响0.20.4及以下版本,团队已发布0.23.0版本进行修复。GitHub将该漏洞的CVSS v4.0评分定为9.3分(满分10分)。
相较于Langflow或n8n,Marimo的知名度并不高,但为何该漏洞会遭到攻击者重点针对?Sysdig指出,该漏洞具备四个对攻击者极具吸引力的特性:首先,无需任何身份验证,既不需要凭证或令牌,也不依赖会话管理。
其次,攻击者可通过漏洞以交互方式直接访问Shell。与许多RCE漏洞必须依赖特制载荷逐条执行命令不同,CVE-2026-39987提供了持续性的终端环境,攻击者可直接输入命令并实时查看输出结果。
此外,利用CVE-2026-39987的门槛极低,攻击者只需建立WebSocket连接,无需构造有效载荷或注入代码,即可获得Shell访问权限。
最后一点是,Marimo通常会连接数据库,存储API密钥、云平台凭证等敏感信息,攻击者可借此在企业内部网络中横向移动,造成更大范围的破坏。