漏洞详情
严重性:中等
漏洞标识符:GHSA-xjv7-6w92-42r7
受影响的版本:>= 0.9.20, < 0.16.4 已修复的版本:0.16.4
摘要
默认安装的 Marimo 中,无需身份验证即可访问的 /mpl/<port>/<route> 端点,允许外部攻击者访问内部服务和任意端口。
详情
根据我们的理解,此路由在内部用于提供对交互式 matplotlib 可视化的访问。
marimo/marimo/_server/main.py at main · marimo-team/marimo
该端点充当未经身份验证的代理,允许攻击者通过指定的 <port> 和 <route> 连接到本地计算机上运行的任何服务。
此代理的存在在应用程序的代码 (marimo/_server/main.py) 中是可见的,但没有关于其行为或潜在风险的官方文档或警告。
影响
CWE-441:未经身份验证的代理 此漏洞可用于绕过防火墙并访问原本应仅限于本地的内部服务。其影响程度完全取决于本地运行和可访问的服务。
- 完全的本地访问:攻击者可以使用此代理连接到响应 Web 套接字、HTTP 或 ASGI 协议的本地服务,从而有效获得在该机器上的立足点。根据服务的不同,这可能导致远程代码执行、数据泄露或进一步的网络渗透。
- 敏感服务暴露:我们对面向公众的 Marimo 服务器的扫描显示,许多服务器正在暴露敏感的内部服务,包括:
- 旧版 CUPS 服务器:可能允许攻击者查看打印作业或配置,或者根据旧漏洞允许 RCE。
- phpMyAdmin:提供 MySQL 数据库的 Web 接口,可能暴露敏感数据。
- RPCMapper:可用于网络侦察和枚举服务。
虽然人们希望不会将 marimo 实例暴露在互联网上,但我们使用 Shodan 等工具发现了许多公共 Marimo 实例。其中许多服务器(甚至一些托管在 AWS GovCloud 等云平台上)被发现是脆弱的。这意味着该漏洞并非局限于少数孤立案例,而是一个影响生产环境的广泛问题。
=== 注意:此漏洞由 devgi 发现。我 (acepace) 跟进并创建了此报告。
参考资料
- GHSA-xjv7-6w92-42r7
- marimo-team/marimo@0312706
- https://github.com/marimo-team/marimo/releases/tag/0.16.4
- https://marimo-team.notion.site/cve-proxy-without-authentication
CVSS 评分
整体 CVSS 得分:6.9 (中等)
CVSS v4 基础指标:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
弱点
弱点:CWE-441 - 非预期代理或中介(‘困惑的副手’)
产品从上流组件接收请求、消息或指令,但在将请求转发给产品控制范围之外的外部参与者之前,产品未能充分保留请求的原始来源。这导致产品看起来像是请求的源头,使其充当上流组件和外部参与者之间的代理或其他中介。