Bagaimana Kami Mendapatkan Root pada Copilot
(research.eye.security)- Pada April 2025, Copilot Enterprise diperbarui dengan sandbox Python real-time (berbasis Jupyter Notebook), sehingga eksekusi kode backend menjadi memungkinkan
- Melalui sintaks %command di Jupyter Notebook, eksekusi kode arbitrer pada sistem dasar menjadi mudah, dan perintah Linux juga dapat dijalankan sebagai pengguna ubuntu (lingkungan miniconda)
- Terdapat kerentanan keamanan karena path
/app/miniconda/bindapat ditulisi oleh pengguna ubuntu dan juga memiliki prioritas di$PATHmilik root, sehingga perintah penting sepertipgrepdapat ditimpa - Kerentanan ini dieksploitasi untuk memperoleh hak akses root, tetapi bagian dalam kontainer diisolasi dengan ketat sehingga escape dari kontainer tidak memungkinkan, dan tidak ada kebocoran informasi tambahan
- Kerentanan tersebut dilaporkan pada April lalu ditambal pada Juli dengan tingkat risiko sedang, dan penelitinya hanya dicantumkan dalam daftar kredit tanpa imbalan
Analisis Kerentanan Microsoft Copilot Enterprise Jupyter Sandbox
Gambaran Umum Lingkungan Jupyter Copilot Enterprise
- Sejak April 2025, sandbox Python berbasis Jupyter Notebook diperkenalkan ke Copilot Enterprise
- Pengguna dapat menjalankan perintah sistem Linux melalui sintaks %command milik Jupyter
- Lingkungan berjalan dengan hak akses pengguna ubuntu berbasis miniconda, dan tidak ada biner sudo
- Variabel lingkungan, jaringan, sistem berkas, informasi proses, dan lainnya dapat dieksplorasi secara luas
Operasi dan Struktur di Dalam Kontainer
- Copilot mirip dengan sandbox ChatGPT, tetapi menggunakan kernel terbaru dan Python 3.12
- Proses utama: Jupyter Notebook, goclientapp yang ditulis dalam Go (berjalan di port 6000), httpproxy, dan lainnya
- Jaringan hanya mengaktifkan loopback dan antarmuka link-local terbatas
- Sistem berkas menggunakan OverlayFS dengan basis path /legion, dan ada skrip kustom di /app
Unduhan dan Manipulasi Berkas
- Berkas teks/output perintah dapat diunduh dengan normal, tetapi berkas biner berisiko rusak sehingga perlu dienkode dengan base64
- Berkas berada di /mnt/data, dan tautan unduhan eksternal dibuat dalam bentuk URL blob
Struktur goclientapp/httpproxy
- goclientapp: mengeksekusi kode (format JSON) yang diterima dari luar melalui endpoint /execute di lingkungan Jupyter, lalu mengembalikan hasilnya
- httpproxy: memproksikan lalu lintas HTTP keluar dari Jupyter (dinonaktifkan dengan ENABLE_EGRESS=false)
Kerentanan pada Skrip entrypoint.sh
- Dalam entrypoint.sh, yaitu skrip entry point kontainer, beberapa layanan (goclientapp, httpproxyapp) dijalankan dengan hak akses pengguna ubuntu
- Hanya keepAliveJupyterSvc.sh yang terus berjalan sebagai root
- Pada baris ke-28, perintah
pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888"dijalankan sesuai prioritas direktori di dalam$PATH /app/miniconda/binberada sebelum/usr/bindalam PATH milik root maupun pengguna ubuntu → perintah sepertipgrepbisa diganti secara arbitrer
Proses Memperoleh Hak Akses Root dan Batasannya
- Penyerang membuat skrip
pgrepberbahaya di/app/miniconda/bin, sehingga entrypoint.sh mengeksekusi berkas itu secara berkala dengan hak akses root - Skrip tersebut membaca berkas /mnt/data/in, menjalankannya sebagai perintah shell, lalu menyimpan hasilnya ke /mnt/data/out
- Dengan cara ini, perolehan hak akses root di dalam kontainer berhasil, tetapi informasi sensitif seperti berkas di /root, log, dan lainnya tetap tidak dapat diakses, serta escape dari kontainer juga tidak memungkinkan
- Kontainer tersebut sudah menambal berbagai skenario breakout
Respons Microsoft dan Hasil Akhir
- 18 April 2025: Eye Security melaporkan kerentanan ke MSRC
- 25 Juli 2025: Microsoft mengklasifikasikannya sebagai moderate severity, menambalnya, menutup isu tersebut, dan mencantumkan peneliti dalam daftar kredit (tanpa pembayaran bug bounty)
Referensi dan Lampiran
-
Eye Security adalah perusahaan keamanan siber berbasis di Eropa yang menyediakan pemantauan ancaman 24/7, respons insiden, asuransi siber, dan lainnya
-
Kasus penetrasi ke layanan internal Microsoft (termasuk Entra OAuth) yang mencakup kerentanan ini dijadwalkan dipresentasikan di BlackHat USA 2025
-
Linimasa
- 18 April 2025 – Dilaporkan ke MSRC
- 25 Juli 2025 – Ditambal dan kasus ditutup, blog dipublikasikan
1 komentar
Pendapat Hacker News