大家好,这里是架构资源栈 !点击上方关注,添加"星标",一起学习大厂前沿架构!
关注、发送C1
即可获取JetBrains全家桶激活工具和码!

4 月份,微软为 Copilot Enterprise 静悄悄地推送了一项更新:启用了一个基于 Jupyter Notebook 的 Python 沙箱,可以后台执行代码。听上去像是开发者的天堂?安全研究员的"探索之旅"随即展开。
结果?他们成功"越狱"了这套系统,拿下了容器的 Root 权限------虽然这看起来没啥用,但过程惊心动魄又忍俊不禁。
🧪Jupyter 沙箱:不听话的"孩子"
Copilot 沙箱默认使用 Jupyter Notebook 的 %command
语法来执行系统命令。虽然并不总是听话,但当它"吃饱喝足",心情不错时,会乖乖地执行命令:

环境运行在一个 Conda 环境下,执行用户是 ubuntu
,虽然它在 sudo
用户组中,但系统内居然没装 sudo
命令(微软怕不是忘了?)。
🛠技术细节揭秘
研究员们逐步发现:
- Python 版本是 3.12,内核较新;
- 除了 Loopback,还有一个 Link-Local 网络接口;
- 使用了 OverlayFS,挂载路径来源是
/legion
; - 主要脚本都放在
/app
目录; - 可通过
/mnt/data
拷贝或下载文件; - 甚至支持通过 base64 下载二进制文件(虽然有时"闹小脾气"会故意损坏文件)。
🔍真正的突破口:脚本注入
一切的关键,在于一个细节疏忽。
研究员们发现启动脚本 /app/entrypoint.sh
里有这样一行代码:
bash
JUPYTER_PID=$(pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888")
pgrep
没有使用绝对路径,这意味着系统会从 $PATH
路径中查找可执行文件。而 /app/miniconda/bin
目录刚好在 $PATH
中,而且对 ubuntu
用户是可写的!
于是,他们编写了一个伪装成 pgrep
的 Python 脚本如下:
python
#!/home/ubuntu/snenv/bin/python
import os
with open('/mnt/data/in','r') as fin:
with open('/mnt/data/out','a') as fout:
fout.write(os.popen(fin.read()).read())
print('1')

这个脚本会不断读取 /mnt/data/in
中的命令,执行后写入 /mnt/data/out
,就这样,他们成功让 Root 用户执行了自己上传的任意代码!
🧱Root 权限到手之后呢?
得到 Root 权限后,他们做的第一件事是......四处翻看系统文件。
结果却有些扫兴:
/root
目录里啥都没有;- 没有敏感日志;
- 尝试容器逃逸的常见方法全部失效;
- 网络出口被禁用了,无法向外通信;
- 系统打了补丁,牢不可破。
但研究员们表示,虽然没拿到什么敏感数据,但这个"解谜"过程还是非常爽!
📝安全问题上报微软:被认定为"中等严重"
研究员在 2025 年 4 月 18 日向微软安全响应中心(MSRC)上报了这个漏洞。微软于 7 月 25 日确认漏洞已修复,并将其归类为中等严重等级(Moderate Severity)。
不过,因为没有达到"重要"或"严重"级别,这次他们没有获得漏洞赏金,仅获得了官网致谢:
🎤顺便预告个更猛的内容!
Eye Security 的研究员还将在 Black Hat USA 2025 上分享另一项重磅发现:
🕵️♂️**"Consent & Compromise:滥用 Entra OAuth 获取微软内部 21 项服务访问权限"**
🗓时间:2025 年 8 月 7 日(周四)13:30 📍地点:拉斯维加斯
📌小结:安全细节不可忽视
这次"Root Copilot"的过程再次提醒我们:
- 开发环境的每一个
$PATH
都可能埋着雷; - 沙箱不是万能的,也需要严格权限隔离;
- 微小的疏忽(如未限定命令路径)也可能被巧妙利用。
最后,别忘了,研究的初衷并不是为了破坏,而是为了让系统更安全。
👀Eye Security 是一家总部位于欧洲的安全公司,专注于威胁监测、应急响应和网络保险。他们的研究团队持续挖掘潜在威胁,为客户和其供应链提供全面保护。
本文由博客一文多发平台 OpenWrite 发布!