Copilot’u nasıl root ettik
(research.eye.security)- Nisan 2025’te Copilot Enterprise’a gerçek zamanlı Python sandbox’ı (Jupyter Notebook tabanlı) güncellemesi geldi ve arka uçta kod çalıştırma mümkün hale geldi
- Jupyter Notebook’un %command sözdizimi sayesinde temel sistem üzerinde keyfi kod çalıştırmak kolaydı; Linux komutları da ubuntu kullanıcısı (miniconda ortamı) olarak çalıştırılabiliyordu
- /app/miniconda/bin yolu ubuntu kullanıcısı tarafından yazılabilir durumdaydı ve root’un $PATH’inde de öncelikliydi; bu da
pgrepgibi kritik komutların üzerine yazılabilmesine yol açan bir güvenlik açığı oluşturuyordu - Bu açık kötüye kullanılarak root yetkileri elde edildi, ancak konteyner içi güçlü biçimde izole edildiğinden konteynerden kaçış mümkün olmadı ve ek bilgi sızıntısı yaşanmadı
- İlgili açık Nisan’da bildirildikten sonra Temmuz’da orta seviye risk olarak yamandı; herhangi bir ödül verilmeden yalnızca araştırmacı listesine eklendi
Microsoft Copilot Enterprise Jupyter Sandbox güvenlik açığı analizi
Copilot Enterprise Jupyter ortamına genel bakış
- Nisan 2025’ten itibaren Copilot Enterprise’a Jupyter Notebook tabanlı Python sandbox eklendi
- Kullanıcılar Jupyter’nin %command sözdizimiyle Linux sistem komutlarını çalıştırabiliyor
- Ortam, miniconda tabanlı ubuntu kullanıcı yetkileriyle çalışıyor;
sudoikilisi bulunmuyor - Ortam değişkenleri, ağ, dosya sistemi, süreç bilgileri gibi birçok alan keşfedilebiliyor
Konteyner içi çalışma şekli ve yapı
- Copilot, ChatGPT sandbox’ına benziyor ancak daha güncel bir çekirdek ve Python 3.12 kullanıyor
- Başlıca süreçler: Jupyter Notebook, Go ile yazılmış
goclientapp(6000 portunda çalışıyor),httpproxyvb. - Ağda yalnızca loopback ve kısıtlı link-local arayüzler etkin
- Dosya sistemi OverlayFS kullanıyor,
/legionyolunu temel alıyor ve/appaltında özel betikler bulunuyor
İndirme ve dosya manipülasyonu
- Metin/komut çıktısı dosyaları normal şekilde indirilebiliyor; ikili dosyalar bozulma riski taşıdığından base64 kodlaması gerekiyor
- Dosyalar
/mnt/dataaltında bulunuyor ve dış indirme bağlantıları blob URL biçiminde oluşturuluyor
goclientapp/httpproxy yapısı
goclientapp: Dışarıdan/executeuç noktasına gelen kodu (JSON biçiminde) Jupyter ortamında çalıştırıp sonucu döndürüyorhttpproxy: Jupyter’den dışarı giden HTTP trafiğine proxy oluyor (ENABLE_EGRESS=falseolduğu için devre dışı durumda)
entrypoint.sh betiğindeki güvenlik açığı
- Konteynerin giriş betiği
entrypoint.shiçinde, çeşitli servisler (goclientapp,httpproxyapp) ubuntu kullanıcı yetkileriyle çalıştırılıyor - Yalnızca
keepAliveJupyterSvc.shroot olarak sürekli çalışıyor -
- satırdaki
pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888"komutu, $PATH içindeki dizin önceliğine göre çalışıyor
- satırdaki
/app/miniconda/bin, hem root hem ubuntu kullanıcısının PATH’inde/usr/bin’den önce geliyor →pgrepgibi komutlar keyfi olarak değiştirilebiliyor
Root yetkisi elde etme süreci ve sınırları
- Saldırgan,
/app/miniconda/binaltına kötü amaçlı birpgrepbetiği oluşturarakentrypoint.sh’in bu dosyayı root yetkileriyle periyodik olarak çalıştırmasını sağladı - Bu betik
/mnt/data/indosyasını okuyup shell komutu olarak çalıştırıyor, ardından sonucu/mnt/data/outdosyasına kaydediyor - Bu yöntemle konteyner içinde root yetkisi elde etmek mümkün oldu; ancak
/rootaltındaki dosyalar gibi hassas bilgiler, loglar vb. erişilemedi ve konteynerden kaçış da mümkün olmadı - Konteyner, çeşitli breakout senaryolarına karşı zaten yamalanmış durumdaydı
Microsoft’un yanıtı ve sonuç
- 18 Nisan 2025: Eye Security, açığı MSRC’ye raporladı
- 25 Temmuz 2025: Microsoft açığı orta seviye önem derecesi (moderate severity) olarak sınıflandırdı, yamaladı, vakayı kapattı ve araştırmacıyı listeye ekledi (bug bounty ödemesi yapılmadı)
Referans ve ekler
-
Eye Security, 7/24 tehdit izleme, olay müdahalesi ve siber sigorta gibi hizmetler sunan Avrupa merkezli bir siber güvenlik şirketidir
-
Bu açık da dahil olmak üzere Microsoft’un iç servislerine (Entra OAuth vb.) sızma vakaları BlackHat USA 2025’te sunulacak
-
Zaman çizelgesi
- 18 Nisan 2025 – MSRC’ye raporlandı
- 25 Temmuz 2025 – Yama uygulandı, vaka kapatıldı ve blog yazısı yayımlandı
1 yorum
Hacker News görüşleri