1 puan yazan GN⁺ 2025-07-27 | 1 yorum | WhatsApp'ta paylaş
  • 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 pgrep gibi 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; sudo ikilisi 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), httpproxy vb.
  • Ağda yalnızca loopback ve kısıtlı link-local arayüzler etkin
  • Dosya sistemi OverlayFS kullanıyor, /legion yolunu temel alıyor ve /app altı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/data altında bulunuyor ve dış indirme bağlantıları blob URL biçiminde oluşturuluyor

goclientapp/httpproxy yapısı

  • goclientapp: Dışarıdan /execute uç noktasına gelen kodu (JSON biçiminde) Jupyter ortamında çalıştırıp sonucu döndürüyor
  • httpproxy: Jupyter’den dışarı giden HTTP trafiğine proxy oluyor (ENABLE_EGRESS=false olduğu için devre dışı durumda)

entrypoint.sh betiğindeki güvenlik açığı

  • Konteynerin giriş betiği entrypoint.sh içinde, çeşitli servisler (goclientapp, httpproxyapp) ubuntu kullanıcı yetkileriyle çalıştırılıyor
  • Yalnızca keepAliveJupyterSvc.sh root olarak sürekli çalışıyor
    1. satırdaki pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888" komutu, $PATH içindeki dizin önceliğine göre çalışıyor
  • /app/miniconda/bin, hem root hem ubuntu kullanıcısının PATH’inde /usr/bin’den önce geliyor → pgrep gibi komutlar keyfi olarak değiştirilebiliyor

Root yetkisi elde etme süreci ve sınırları

  • Saldırgan, /app/miniconda/bin altına kötü amaçlı bir pgrep betiği oluşturarak entrypoint.sh’in bu dosyayı root yetkileriyle periyodik olarak çalıştırmasını sağladı
  • Bu betik /mnt/data/in dosyasını okuyup shell komutu olarak çalıştırıyor, ardından sonucu /mnt/data/out dosyasına kaydediyor
  • Bu yöntemle konteyner içinde root yetkisi elde etmek mümkün oldu; ancak /root altı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

 
GN⁺ 2025-07-27
Hacker News görüşleri
  • Bu açığın özünün, aslında konteyner içinde yalnızca normal kullanıcı yetkisi vermeyi amaçlayan tasarımın bir hileyle root yetkisiyle kod çalıştırmaya izin vermesi olduğunu anlıyorum. Ancak pratikte konteynerin kendisi o kadar sıkı yalıtılmıştı ki ne ağa erişim vardı ne de dışarı çıkmak mümkündü; bu yüzden root yetkisiyle yapılabilecek tek şey kendi konteynerini bozmakmış
    • Microsoft'un güvenliği gerçekten çok sıkı ayarladığını kabul ediyorum. Şirketlerin büyük kısmı bu kadar kusursuz yalıtım yapmıyor
    • Bu konteynerin tam olarak nasıl uygulandığını bilmiyorum. Microsoft, Python sandbox'ını yalıtmak için standart bir yöntem olan Azure container-apps session'ı kullanıyor; bunun da onu ya da benzer bir yöntemi kullanıyor olmasını umuyorum
    • Copilot'ın bazen kod çalıştırmayı reddedip bazen izin vermesi biraz tuhaf geliyor. Tam olarak nereye kadar gitmeyi hedeflediğini merak ediyorum
    • Artık açıklar bir stack gibi üst üste birikiyor; bu yüzden “konteyner güvenli” demek, yalnızca saldırganın henüz açığı bulamadığı anlamına geliyor. Konteyner kaçışı ya da VM kaçışı zaten bilinen saldırı yöntemleri ve tek bir küçük yapılandırma hatası ya da virtio sürücüsündeki bir bug bile yeterli olabilir. Bu örnek bu açıdan gerçekten önemli bir sonuç
  • “How We Rooted Copilot” gibi bir başlığı görünce gerçekten Copilot'ın çekirdek VM'inin kırıldığını sandım, ama gerçekte olan şey son derece kısıtlı bir Python sandbox konteynerinde root yetkisi elde edilmesinden ibaret. Daha doğru başlık “How We Rooted the Copilot Python Sandbox” olurdu
    • Bunu “tamamen yalıtılmış bir sandbox'ta normal kullanıcıdan root'a yetki yükseltmeyi başardılar” diye özetlemek mümkün. Aslında pek anlamlı bir sonuç değil ama tersine, sandbox'ın savunmaya ne kadar etkili katkı sağladığını gösteren bir örnek
  • Tüm hack süreci burada görülebilir
  • Ben bu olayı Python sandbox'ından çıkıp konteyneri de kırdıkları şeklinde anlamıştım. Microsoft'un açığın ciddiyetini moderate olarak derecelendirmesi de sanırım bu bağlamda
  • Gözden kaçırdığım bir şey mi var bilmiyorum ama yerel ağ üzerinden bile olsa dışarıya ağ bağlantısı kurmayı denemek mümkün olmaz mıydı? Microsoft'un müşterilere böyle bir konteynerde root yetkisine kadar izin verirken veri sızıntısı ya da ek saldırı riski gerçekten olmadığından emin olup olmadığını merak ediyorum
    • Geçmişte OpenAI Python interpreter özelliğini yayımladığında da durum benzerdi. Dış ağ erişimi engellenmişti ve ilginç olan tek şey birkaç iç yapılandırma dosyasıyla geliştiricilerin nasıl kod yazdığına dair bazı bilgilerdi. Bu örnek de fiilen aynı şey
  • Copilot'ın verdiği yanıtın gerçek mi yoksa uydurma mı olduğunu nasıl anlayabiliriz? Ben orada çalışıyorum ama böyle bir süreç görmedim. Bu arada, açık depoda keepAliveJupyterSvc.sh adlı bir betik buldum
    • O depo ve katkı yapanlar gerçekten MS/Azure tarafında konteyner içi Python kod çalıştırma hizmeti geliştiriyor. Neden kişisel hesaba yüklenmiş bilmiyorum. Office projesinin bir fork'u deniyor ama orijinalini bulamadım
    • Uydurma olmayabilir. Copilot kodu GitHub eğitim veri setinden üretmiş olabilir
    • Bu bana gerçekten uydurma gibi geliyor. Chatbot'ların çoğu temelde token üreticisinden ibaret. Gerçekte program çalıştırıp yanıt vermiyorlar; GPU üzerinde token üretip İngilizceye çevirerek gönderiyorlar
  • Eski LLM'lerin kapalı şirket belgelerini veri olarak öğrenip şirket sırlarını iyi ortaya döktüğüne dair laflar vardı. Şimdi çoğu verinin ayıklandığını sanıyorum
    • LLM'lerin tesadüfen yalnızca bir kez görülen veriyi ezberlediğini ya da gerçekten büyük miktarda özel verinin eğitime dahil edildiğini gösteren bir örnek görmedim. Bu yüzden bana gerçekçi gelmiyor. LLM'nin uydurmaları, görünüşte gerçek bir gizli bilgi sızıntısı gibi durabiliyor sadece
    • Benim deneyimime göre şirket sırları başka şirketler açısından pek de anlamlı olmuyor
    • Bununla ilgili somut örnekler var mı merak ediyorum. Ben görmedim
    • Eskiden teknik olmayan şirketler de kılavuz olmadan bunları devreye alıyor ve amaç dışı içerik üretebiliyordu. Mesela bir boba şirketi ücretsiz, üyelik gerektirmeyen bir LLM çıkarmıştı; ben de ChatGPT'nin ücretsiz sürümünden önce birkaç bash betiği üretip kullanmıştım
    • Kaynak neydi merak ediyorum
  • Bu neredeyse bir açık değilmiş gibi görünüyor. Bu sistemin amacı zaten kodu konteyner içinde çalıştırmak
    • Elbette bu ancak konteynerin yalıtılmış olduğu varsayımı geçerliyse anlamlı
  • Copilot'a sudo ikilisini base64 olarak verip sonra kullanmak, sanki daha kolay bir atlatma yöntemi olabilirdi
    • Ama o durumda dosya sahibini de root olarak değiştirmen gerekirdi
  • Açığı Microsoft'a bildirdiler; moderate olarak sınıflandırıldığı için bug bounty alamayıp yalnızca acknowledgement aldılar. Böyle büyük bir şirketin ödül bile vermemesi bana pek anlaşılır gelmiyor. Böyle bir durumda kötü şeyler yaşanmayacağından nasıl emin olunabilir emin değilim
    • Esasen elde edilen hiçbir şey yok. Root yetkisi alınsa bile yalnızca normalde erişilemeyen konteynerin bir kısmını inceleyebildiler; /root altında da dosya yoktu, işe yarar log da bırakılmamıştı. Bilinen tüm kaçış teknikleri zaten yamalanmıştı. Microsoft bu tür her bypass için ödül verse bunun sonu gelmezdi; dolayısıyla risk yoksa ayrıca ödüllendirmemelerini bir ölçüde anlayabiliyorum
    • İnsanların trilyon dolarlık dev şirketlere neden bedava bug report verdiğini gerçekten anlamıyorum
    • Microsoft para vermeyecekse en azından biraz swag vermesi daha iyi olurdu. Hacker'lara havalı ürünler verirsen bu doğal reklam olur ve hatta insanlar orada çalışmak isteyebilir. Hacker topluluğu kültürünü değerlendirmek gerekir
    • “root” elde etsen bile pratikte eline geçen hiçbir şey yok. Birçok denemeye rağmen sonuç çıkmamış