Como obtivemos acesso root ao Copilot
(research.eye.security)- Em abril de 2025, o Copilot Enterprise foi atualizado com um sandbox Python em tempo real (baseado em Jupyter Notebook), tornando possível a execução de código no backend
- Pela sintaxe %command do Jupyter Notebook, era fácil executar código arbitrário no sistema subjacente, e também comandos Linux como o usuário ubuntu (ambiente miniconda)
- Havia uma vulnerabilidade de segurança em que o caminho /app/miniconda/bin era gravável pelo usuário ubuntu e tinha prioridade no $PATH do root, permitindo sobrescrever comandos importantes como
pgrep - Isso foi explorado para obter privilégios de root, mas o interior do contêiner era fortemente isolado, então não foi possível escapar do contêiner, nem houve vazamento adicional de informações
- A vulnerabilidade foi reportada em abril e corrigida em julho com risco moderado; os pesquisadores foram apenas incluídos na lista de reconhecimento, sem recompensa
Análise da vulnerabilidade do sandbox Jupyter do Microsoft Copilot Enterprise
Visão geral do ambiente Jupyter do Copilot Enterprise
- Desde abril de 2025, o Copilot Enterprise passou a usar um sandbox Python baseado em Jupyter Notebook
- Os usuários podem executar comandos de sistema Linux pela sintaxe %command do Jupyter
- O ambiente roda sobre miniconda com privilégios do usuário ubuntu, sem binário
sudo - Era possível explorar amplamente variáveis de ambiente, rede, sistema de arquivos e informações de processos
Funcionamento e estrutura interna do contêiner
- O Copilot é semelhante ao sandbox do ChatGPT, mas usa kernel mais recente e Python 3.12
- Processos principais: Jupyter Notebook,
goclientappescrito em Go (executando na porta 6000),httpproxyetc. - A rede tinha apenas loopback e uma interface link-local limitada ativadas
- O sistema de arquivos usa OverlayFS com base no caminho
/legion, e há scripts customizados em/app
Download e manipulação de arquivos
- Arquivos de texto e de saída de comandos podiam ser baixados normalmente, mas arquivos binários corriam risco de corrupção, exigindo codificação em base64
- Os arquivos ficam em
/mnt/data, e links externos de download são gerados no formato de URL de blob
Estrutura do goclientapp/httpproxy
goclientapp: executa no ambiente Jupyter o código recebido externamente pelo endpoint/execute(formato JSON) e retorna o resultadohttpproxy: faz proxy do tráfego HTTP de saída do Jupyter (desativado comENABLE_EGRESS=false)
Vulnerabilidade no script entrypoint.sh
- No
entrypoint.sh, script de entrada do contêiner, vários serviços (goclientapp,httpproxyapp) rodam com privilégios do usuário ubuntu - Apenas
keepAliveJupyterSvc.shpermanece em execução contínua como root - Na linha 28, o comando
pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888"é executado de acordo com a prioridade dos diretórios em$PATH /app/miniconda/binaparece antes de/usr/binno PATH tanto do root quanto do usuário ubuntu → isso permite substituir arbitrariamente comandos comopgrep
Processo de obtenção de root e limitações
- O atacante criou um script
pgrepmalicioso em/app/miniconda/bin, fazendo com que oentrypoint.sho executasse periodicamente com privilégios de root - Esse script lia o arquivo
/mnt/data/in, executava seu conteúdo como comando de shell e salvava o resultado em/mnt/data/out - Com isso, foi possível obter privilégios de root dentro do contêiner, mas não acessar informações sensíveis como arquivos em
/root, logs etc., nem escapar do contêiner - O contêiner já tinha correções aplicadas para vários cenários de breakout
Resposta da Microsoft e resultado
- 18 de abril de 2025: a Eye Security reportou a vulnerabilidade ao MSRC
- 25 de julho de 2025: a Microsoft a classificou como risco moderado (moderate severity), aplicou a correção, encerrou o caso e incluiu os pesquisadores na lista de reconhecimento (sem pagamento de bug bounty)
Referências e apêndice
-
A Eye Security é uma empresa europeia de cibersegurança que oferece monitoramento de ameaças 24/7, resposta a incidentes, seguro cibernético etc.
-
Casos de intrusão em serviços internos da Microsoft (incluindo Entra OAuth), entre eles esta vulnerabilidade, serão apresentados na BlackHat USA 2025
-
Linha do tempo
- 18 de abril de 2025 – Reportado ao MSRC
- 25 de julho de 2025 – Correção aplicada, caso encerrado e blog publicado
1 comentários
Comentários do Hacker News
/rootnem logs úteis. Todas as técnicas de escape conhecidas já estavam corrigidas. Se a Microsoft passasse a recompensar cada método contornado como esse, não teria fim; então, se não houver risco real, até dá para entender não haver recompensa separada