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

相关推荐
架构师沉默7 分钟前
Java 开发者别忽略 return!这 11 种写法你写对了吗?
java·后端·架构
RainbowJie114 分钟前
Gemini CLI 与 MCP 服务器:释放本地工具的强大潜力
java·服务器·spring boot·后端·python·单元测试·maven
毕设源码尹学长1 小时前
计算机毕业设计 java 血液中心服务系统 基于 Java 的血液管理平台Java 开发的血液服务系统
java·开发语言·课程设计
lumi.1 小时前
2.3零基础玩转uni-app轮播图:从入门到精通 (咸虾米总结)
java·开发语言·前端·vue.js·微信小程序·uni-app·vue
mask哥2 小时前
详解flink SQL基础(四)
java·大数据·数据库·sql·微服务·flink
灰原喜欢柯南2 小时前
Spring Boot 自动配置全流程深度解析
java·spring boot·后端
Code_Artist2 小时前
[Java并发编程]4.阻塞队列
java·数据结构·后端
心月狐的流火号2 小时前
Java NIO Selector 源码分析
java
MrSYJ3 小时前
AuthenticationEntryPoint认证入口
java·spring cloud·架构