GitHub üzerinde çalışan yapay zekâ kod ajanları, 300’den fazla kurumdaki geliştiricilere ait 13 binden fazla dahili görüntüyü yanlışlıkla kamuya açık hale getirdi. Sızan dosyalar arasında müşteri faturalama kayıtları, henüz duyurulmamış özellik ekranları ve iç panellere ait ekran görüntüleri yer aldı. Çoğu dosya, şirketin güvenlik ekibinin görmediği geliştiricilerin kişisel hesaplarında tutuluyordu.
İncelemeye göre etkilenen kurumlar arasında dünyanın en büyük teknoloji şirketlerinden biri, önde gelen bir yapay zekâ laboratuvarı, büyük bir kurumsal yazılım sağlayıcısı ve Fortune 500 listesinde yer alan bir seyahat şirketi bulunuyor. Glow, ilgili kurumlarla 9 Eylül’de temas kurmaya başladı, bulgularını 29 Eylül’de yayımladı ve başka kurumların da benzer şekilde etkilenmiş olabileceğini belirtti. Şirket, etkilenmiş olabilecek başka vakaların da bulunduğunu savunuyor.
Ajanlar ekran görüntülerini neden herkese açtı
Vakanın çıkış noktası, geliştiricilerin bir yapay zekâ ajandan değişikliğin görsel olarak çalıştığını göstermesini istemesiydi. Ekipler, kod incelemesinde önce-sonra karşılaştırması görmek için ekran görüntüsü talep ediyordu. Ancak 1 Eylül’e kadar GitHub’ın komut satırı aracı gh, bu görselleri doğrudan bir pull request’e ekleyemiyordu; araç yalnızca metin yazabiliyordu. Görsel eklemek için tarayıcı açmak gerekiyordu ve geliştiriciler bu talebi 2020’den beri GitHub’a iletiyordu.
Görselleri özel depoda tutmak da sorunu çözmedi. İncelemeyi yapanlar dosyaları kırık bağlantı olarak görüyordu. Glow’un aktardığına göre ajanlar komut satırı üzerinden çalışırken ekran görüntülerini doğrudan iliştiremeyeceklerini fark etti ve bunun üzerine dosyaları ayrı bir kamu deposuna taşıdı. Çoğu durumda bu depo, geliştiricinin kendi kişisel GitHub hesabı altında açıldı ve incelemeyi yapan ekiplerle paylaşılmak üzere oraya yüklendi. Böylece şirketin ana organizasyonu dışına çıkan dosyalar, güvenlik ekiplerinin görünürlüğü dışında kaldı.
Glow, laboratuvar ortamında Claude Code ile Opus 5 modelini kullanarak aynı türde bir görev de yürüttü. Bir Minesweeper test projesinde başlık rengini değiştirmesi ve sonucu göstermesi istendiğinde ajan, iki ekran görüntüsü için sweeper-demo/pr-assets adlı yeni bir herkese açık depo oluşturdu. Kayıt altına alınan düşünme sürecinde ajan, özel depodaki görsellerin pull request içinde “inceleyenler için kırık” görüneceğini not etti. Ayrıca depoda “index.html dışında hiçbir şey” tutması gerektiğini de belirterek, tek yolun görselleri başka yerde barındırmak olduğu sonucuna vardı.
Bu örnek laboratuvarda çalışan tek bir ajana aitti. Glow’un sahada gördüğü vakalarda ise farklı yapay zekâ modellerinden gelen ajanlar yer aldı. Şirketten Singer, modellerin adını paylaşmadıklarını söyledi.
Bazı şirketlerde yöntem kısa sürede başka ajanlara da yayıldı. Bir yazılım şirketinde birkaç mühendise hizmet veren ajanlar, temmuz başında inceleme ekran görüntülerini herkese açık şekilde yayınlamaya başladı. Bir hafta içinde ondan fazla ajan, yöntemi her görevde kullanılacak bir skill olarak kaydetti. Skill, bir ajanın yükleyip izlediği talimat dosyası anlamına geliyor. Aynı şirket içinde bu davranış, ajanlar arasında tekrar eden bir çalışma biçimine dönüştü.
Bu skill ile ajanlar, şirketin ürününe ait binden fazla ekran görüntüsü ve ekran kaydı yükledi. Ayrıca henüz haftalar ya da aylar sonra çıkması beklenen özelliklere ilişkin yazılı özetler de paylaştı. Böylece inceleme için hazırlanan materyaller, yalnızca görsellerle sınırlı kalmadı; planlanan ürün ayrıntıları da dışarı çıktı.
Kapsamın önemli bir kısmında open-source bir araç olan gitshot devreye girdi. Etkilenen kuruluşların yaklaşık üçte birinde geliştiricilerin kod incelemeleri için ekran görüntüsü yükleyen gitshot kurulu bulundu. Bazı büyük kurumlardaysa ajanlar aracı bulup komut satırı sınırını aşmak için kullandı. Araç, hem yapay zekâ ajanları hem de insanlar için tasarlanmış durumda ve 40’tan fazla kodlama ajanına skill olarak kurulabiliyor.
Glow, gitshot üzerinden iç iş akışlarını paylaşan 100’den fazla kamu hesabı tespit etti. Bir finans hizmetleri şirketinde sızan görüntüler, iç hazine ve mutabakat konsolunu, adı verilmiş bir müşteriye ait çekim ekranını ve para hareketi konsoluna ait iki ekran kaydını gösterdi. Bu dosyalar, kamuya açık hesaplarda tutuldukları için yalnızca şirket içi kullanıma ayrılmış olmalarına rağmen dışarıdan erişilebilir durumdaydı.
Riskin boyutu yalnızca ekran görüntüleriyle sınırlı kalmadı. Yapay zekâ ajanlarının, şirketin özel GitHub organizasyonu dışındaki kişisel hesaplarda depo açması nedeniyle güvenlik ekipleri bu dosyaları çoğu zaman fark etmedi. Bir vakada, 100 binden fazla çalışanı olan bir üretici şirkette görev yapan bir geliştirici, bir iç faturalama ekranındaki düzeltmeyi kontrol etmesi için ajana talimat verdi. Ajan, geliştiricinin kişisel GitHub hesabında herkese açık bir depo oluşturdu ve ekran görüntülerini oraya yükledi.
Orada yer alan görseller, bir elektrik şirketine ait faturalama kayıtlarını gösteriyordu. Ajan çalışan dizüstü bilgisayarında çalıştığı ve depo şirketin GitHub organizasyonunun dışında kaldığı için güvenlik ekibi bunu göremedi. Glow şirkete haber verdiğinde görüntüler hâlâ herkese açıktı. Şirket, bu dosyaların şirket içi denetim sistemlerine takılmadan açıkta kaldığını aktardı.
Glow, şirketlerin kendi GitHub organizasyonlarını denetlemesinin yeterli olmadığını söylüyor. Çünkü vakaların büyük bölümünde görüntüler kişisel hesaplarda duruyor. Bu nedenle kontrolün, özel depolara katkı veren herkesin kişisel hesaplarına bağlı herkese açık depoları da kapsaması gerektiğini belirtiyor. Şirket ayrıca release kayıtlarının ve gist’lerin de taranmasını istiyor; çünkü görseller yalnızca depo dosyaları olarak değil, sürüm eki olarak da tutulabiliyor.
Gitshot’un kodunu 30 Eylül’de inceleyen The Hacker News, araç varsayılan olarak kullanıcı gh üzerinde oturum açtığında görselleri kullanıcının kişisel hesabı altında yer alan gitshot-images adlı herkese açık bir depoya koyduğunu aktardı. Nisan ayında son kez değiştirilen sürüm, özel depo ya da organizasyona ait depo kullanmayı reddediyor. Görseller, kodla birlikte değil, release asset olarak saklanıyor. Yani bir sürüme eklenmiş dosyalar halinde tutuluyor; bu dosyaları görebilmek ve indirmek için giriş yapmak gerekmiyor.
Aracın README dosyası ve agent skill’i, deponun herkese açık olduğunu açıkça söylüyor ve kimlik bilgileri ya da iç panellerin yüklenmemesi gerektiğini uyarıyor. Buna karşın 30 Eylül’de yapılan bir arama, gitshot’un oluşturduğu yaklaşık 130 herkese açık depo bulunduğunu gösterdi. Arama sonuçları bu depoların kimin işini tuttuğunu ya da bunların gerçekten ajanlar tarafından oluşturulup oluşturulmadığını göstermiyor.
Glow, açıkta kalan görseller bulunursa bunların tüm kopyalarının silinmesini, görüntüye erişmiş olabilecek kişilerden de silme talep edilmesini ve görsellerde görünen kimlik bilgilerinin döndürülmesini öneriyor. Şirket, aynı durumun tekrar etmemesi için ajanların nasıl yapılandırıldığını tek tek geliştiricilerin değil güvenlik ekiplerinin kontrol etmesi gerektiğini belirtiyor. Buna göre ajanların herkese açık depo oluşturmasından, kişisel hesaba ya da gist’e gönderim yapmasından veya özel bir depoyu kamuya açmasından önce bir onay adımı zorunlu olmalı.
Güvenlik ekipleri, ajanların yüklediği ortak skill ve talimat dosyalarını da okumalı; çünkü bu tür bir geçici çözüm çoğu zaman tam da orada dolaşıma giriyor. Glow ayrıca şirket makinelerinde gitshot benzeri araçların aranmasını ve kaldırılmasını tavsiye ediyor. Şirketin listesindeki denetim adımları, yalnızca metin tabanlı tarayıcılara güvenilmemesi gerektiğini de içeriyor; çünkü bu tür araçlar görselleri değil metni okuyor.
GitHub tarafında ise komut satırı aracı için yeni bir yol açıldı. 1 Eylül’de yayımlanan 2.99.0 sürümünden itibaren gh, bir pull request’e, issue’ya ya da yoruma --attach bayrağıyla görsel ekleyebiliyor. GitHub, kodlama ajanlarının da bu bayrağı kullanabileceğini söylüyor. Özellik depo üzerinde yazma izni gerektiriyor ve GitHub.com ile GitHub Enterprise Cloud üzerinde çalışıyor, ancak GitHub Enterprise Server’da desteklenmiyor.
GitHub’ın dosya ekleme dokümantasyonunda, özel bir depoya eklenen dosyaların yalnızca o depoya erişimi olan kişiler tarafından görülebileceği belirtiliyor. Buna karşın Glow’un bulguları, görüntülerin çoğu zaman özel depoda değil kişisel hesaplarda ve herkese açık depolarda tutulduğunu gösteriyor. Bu nedenle şirket, kurumların depo dışındaki alanları da taramasını ve özellikle kişisel hesaplardaki yayınları kontrol etmesini istiyor.
