微软 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 发布!

相关推荐
04Koi.2 小时前
八股训练--Spring
java·后端·spring
℡余晖^3 小时前
每日面试题18:基本数据类型和引用数据类型的区别
java
hello 早上好3 小时前
消息顺序、消息重复问题
java·中间件
phltxy4 小时前
ArrayList与顺序表
java·算法
Doris_LMS4 小时前
保姆级别IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)
java·mysql·postgresql
衍生星球4 小时前
JSP 程序设计之 Web 技术基础
java·开发语言·jsp
Java编程乐园4 小时前
Java函数式编程之【Stream终止操作】【下】【三】【收集操作collect()与分组分区】【下游收集器】
java
yinyan13144 小时前
一起学springAI系列一:初体验
java·人工智能·ai
永卿0014 小时前
设计模式-责任链模式
java·设计模式·责任链模式