微软 Copilot 被“越狱”?安全研究员教你一招拿下“沙箱环境 Root 权限”!

大家好,这里是架构资源栈 !点击上方关注,添加"星标",一起学习大厂前沿架构!

关注、发送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)。

不过,因为没有达到"重要"或"严重"级别,这次他们没有获得漏洞赏金,仅获得了官网致谢:

🔗MSRC 安全研究者致谢名单(2025)


🎤顺便预告个更猛的内容!

Eye Security 的研究员还将在 Black Hat USA 2025 上分享另一项重磅发现:

🕵️‍♂️**"Consent & Compromise:滥用 Entra OAuth 获取微软内部 21 项服务访问权限"**

🗓时间:2025 年 8 月 7 日(周四)13:30 📍地点:拉斯维加斯


📌小结:安全细节不可忽视

这次"Root Copilot"的过程再次提醒我们:

  • 开发环境的每一个 $PATH 都可能埋着雷;
  • 沙箱不是万能的,也需要严格权限隔离;
  • 微小的疏忽(如未限定命令路径)也可能被巧妙利用。

最后,别忘了,研究的初衷并不是为了破坏,而是为了让系统更安全。


👀Eye Security 是一家总部位于欧洲的安全公司,专注于威胁监测、应急响应和网络保险。他们的研究团队持续挖掘潜在威胁,为客户和其供应链提供全面保护。

了解更多请关注他们的 官方网站LinkedIn


本文由博客一文多发平台 OpenWrite 发布!

相关推荐
RainbowSea1 天前
12. LangChain4j + 向量数据库操作详细说明
java·langchain·ai编程
RainbowSea1 天前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
考虑考虑1 天前
Jpa使用union all
java·spring boot·后端
用户3721574261351 天前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊1 天前
Java学习第22天 - 云原生与容器化
java
渣哥1 天前
原来 Java 里线程安全集合有这么多种
java
间彧1 天前
Spring Boot集成Spring Security完整指南
java
间彧1 天前
Spring Secutiy基本原理及工作流程
java
Java水解1 天前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆1 天前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试