文章摘要
微软在2025年4月为Copilot Enterprise推送了更新,启用了运行Jupyter Notebook的Python沙盒,可在后端执行代码。通过Jupyter Notebook语法%command,可以轻松执行底层系统代码。尽管有时Copilot会表现出不情愿,但整体上能够执行Linux命令,并以‘ubuntu’用户身份运行。
文章总结
标题:我们如何获取了Copilot的Root权限
主要内容:
2025年4月,微软悄然为Copilot Enterprise推送了一个更新,启用了运行Jupyter Notebook的实时Python沙箱,允许在后端执行代码。通过Jupyter Notebook的%command语法,我们能够轻松地在底层系统上执行我们想要的代码。
在探索过程中,我们发现Copilot在大多数情况下会积极执行命令,但有时也会表现出不情愿或被动攻击性的行为,尤其是在它“心情不好”时。Copilot似乎是以ubuntu用户的身份在miniconda环境中执行Linux命令,有趣的是,ubuntu用户属于sudo组,但系统中并没有sudo二进制文件。
进一步研究发现,Copilot使用了与ChatGPT沙箱类似的模型,但内核版本更新,且运行的是Python 3.12(而ChatGPT仍在使用Python 3.11)。沙箱的主要功能是运行Jupyter Notebook,并附带一个Tika服务器。
通过一系列命令,我们发现容器使用了OverlayFS文件系统,并且大多数自定义脚本位于/app目录中。Copilot还允许我们下载文件或打包整个文件夹,但需要注意的是,二进制数据可能会被损坏,因此建议在下载前对二进制文件进行base64编码。
在/app目录中,goclientapp二进制文件是容器的接口,它通过端口6000监听/execute端点的POST请求,并在Jupyter Notebook环境中执行代码。此外,httpproxy二进制文件似乎充当了Jupyter环境出站流量的HTTP代理。
在/app目录中的entrypoint.sh脚本是容器的入口点,它以root权限运行。通过分析脚本,我们发现了一个潜在的漏洞:pgrep命令在没有完整路径的情况下执行,导致脚本会在$PATH变量中搜索pgrep。由于/app/miniconda/bin目录对ubuntu用户可写,并且位于/usr/bin之前,我们可以在此目录中创建一个恶意脚本,从而获取root权限。
然而,尽管我们获得了root权限,但并未发现任何有价值的信息或文件。我们向微软报告了该漏洞,微软随后将其修复为中等严重性漏洞,但由于只有重要和关键漏洞才能获得奖励,我们仅获得了微软安全研究中心的致谢。
时间线: - 2025年4月18日:漏洞报告给MSRC - 2025年7月25日:MSRC通知漏洞已修复 - 2025年7月25日:MSRC将问题关闭为中等严重性漏洞 - 2025年7月25日:博客发布
关于Eye Security: Eye Security是一家欧洲网络安全公司,专注于24/7威胁监控、事件响应和网络保险。我们的研究团队在整个地区进行主动扫描和威胁情报操作,以保护客户及其供应链。
了解更多信息,请访问Eye Security官网或在LinkedIn上关注我们。
评论总结
评论主要围绕以下几个观点展开:
漏洞的严重性与修复:
- 评论2和评论4指出,漏洞涉及从Python沙箱逃逸到容器中,但容器本身仍然安全,无法进行网络请求或逃逸出容器。评论4引用:“the container itself was still secured - you couldn't make network requests from it and you couldn't break out of it”。
- 评论3提到微软将该漏洞评为“中等”严重性,且未支付漏洞赏金,仅给予致谢。评论3引用:“they have since fixed it as a moderate severity vulnerability. As only important and critical vulnerabilities qualify for a bounty award”。
AI工具的安全性问题:
- 评论7将当前AI工具的安全性与早期Web 2.0时代相比,认为目前处于“蛮荒时代”,预计会有更多高调的安全事件。评论7引用:“I feel like we're really in the wild west era of security with these AI tools”。
- 评论5批评了Python科学数据栈与Copilot集成的复杂性,认为这类似于1990年代的编程风格。评论5引用:“There was a time in programming that tried to avoid monstrosities like the Python scientific data stack combined with Copilot integration hacks”。
漏洞的实际影响:
- 评论8质疑漏洞是否真的无法导致数据外泄或利用,询问是否可以通过本地网络进行攻击。评论8引用:“could you create a network connection to the "outside" world (clearly by finding your way around the local network?”。
- 评论9认为漏洞并不严重,因为代码在容器中执行,系统本身是安全的。评论9引用:“The safety in the system is that the code is executed in a container”。
历史背景与对比:
- 评论1提到早期LLMs曾泄露公司机密,但大部分已被清理。评论1引用:“Earlier LLMs used to be a goldmine for company secrets (when it learned documents that shouldn't be on public internet)”。
- 评论6提出了一种可能的简化方案,即使用base64编码的sudo二进制文件。评论6引用:“Seems like they could have taken a shortcut by giving copilot a sudo binary to use as base64”。
总结:评论主要讨论了漏洞的严重性、AI工具的安全性问题、漏洞的实际影响以及历史背景与对比。尽管漏洞被修复,但对其严重性和潜在风险的看法存在分歧。同时,评论者对AI工具的安全性表示担忧,认为当前处于类似早期Web 2.0的安全“蛮荒时代”。