Ne oldu?
FakeGit adı verilen kampanya GitHub'da yeniden faaliyete geçti. Güvenlik firması Apiiro'nun 4 Ekim'de tespit ettiği yeni dalgada 17.610 depo kullanılıyor; bunların 17 binden fazlası sahte.
Rakamlar saldırının ölçeğini gösteriyor:
- 13 binden fazla depo 34 saat içinde devreye alındı, en yoğun saatte 2.999 depo
- İncelenen değişikliklerin %97'si yalnızca README dosyasına dokunuyor
- README'lerin %88'inde "İndir" butonu, SmartLoader adlı yükleyiciyi kuran bir ZIP arşivine gidiyor
- Depoların çoğu kullan-at hesaplara ait, ancak en az 700 hesap gerçek geliştiricilere ait görünüyor
SmartLoader tek başına bir amaç değil; başka zararlı yazılımları indirmek için kullanılan bir ilk aşama. Bu kampanyada dağıtılan yüklerden biri StealC adlı bilgi hırsızı.
Benzer faaliyet en az ocak ayından beri sürüyor. Temmuzda yayımlanan bir raporda aynı operasyonun 7.600 sahte deposu tespit edilmişti; bunların 800'ü kamuya açık yapay zeka kayıt defterlerinde listelenen yapay zeka eklentisi (AI skill) veya MCP sunucusu kılığındaydı.
Yem neden değişti?
Sahte depo yeni bir yöntem değil. Yeni olan, yemin ne olduğu.
Yapay zeka araçları kurumlara hızla girdi ve beraberinde yeni bir kurulum alışkanlığı getirdi: eklenti, beceri paketi, MCP sunucusu. Bu bileşenler küçük görünür, bir dosya indirmekle kurulur ve çoğu zaman bir yazılım kurulumu olarak değerlendirilmez.
Saldırgan için bu üç avantaj demek:
- Hedef kitle geniş ve hevesli. Yeni bir araç duyan herkes denemek istiyor; arama GitHub'da başlıyor.
- Süreç dışında kalıyor. Kurumsal yazılım alımı onaydan geçer; bir yapay zeka eklentisi genellikle geçmez. Kuran kişi çoğu zaman tek başına karar verir.
- Teknik olmayan kullanıcı da kuruyor. Eskiden GitHub'dan dosya indirenler geliştiricilerdi. Artık pazarlama, analiz ve destek ekiplerinden insanlar da indiriyor.
Apiiro'nun raporundaki bir ayrıntı yöntemin olgunluğunu gösteriyor: saldırganlar bu dalga için yeni depo açmadılar, ellerindeki mevcut depo filosunu yeni hedefe yönlendirdiler.
Neden engellenemiyor?
Bu kampanyanın en öğretici tarafı, klasik engelleme yöntemlerinin neden işe yaramadığı.
- Listeler geriden geliyor. Apiiro raporunu yayımladığında, depo filosunun %71'i bilinen zararlı adres listelerinde yer almıyordu.
- Alan adı engelleme çalışmıyor. GitHub üzerindeki tek bir dosyayı alan adı seviyesinde engellemek, GitHub'ın tamamını engellemek demek. Çoğu kurumda bu seçenek yok.
- Dosya kaybolmuyor. Zararlı arşivler çatallanmış (fork) kopyalarda, eski sürüm dosyalarında, yayın eklerinde ve ayrı barındırma depolarında duruyor. Bir indirme bağlantısı engellenince diğerine geçiliyor.
Yani burada savunma, ağ seviyesinde kurulan bir filtre değil. Karar noktası dosyayı indiren kişide.
Ne yapmalısınız?
- Yapay zeka eklentisi ve MCP sunucusu kurulumunu bir kurala bağlayın. Kim kurabilir, nereden kurabilir, kim haberdar olur? Bu üç sorunun yazılı cevabı yoksa kural yok demektir.
- Kaynağı resmi kayıt defteri veya üreticinin kendi deposu olsun. Arama sonucunda çıkan ilk depo değil.
- Depo sahibini kontrol edin, README'yi değil. README'yi saldırgan yazıyor. Hesabın geçmişi, diğer projeleri ve yaşı daha zor taklit edilir.
- Geliştirici ve teknik ekip bilgisayarlarını kurumsal uç nokta sayın. Bu makineler genellikle en geniş erişime sahip, en az kısıtlanmış cihazlardır.
- Şüphe varsa hesabı ele geçirilmiş kabul edin. Bu yükleyicinin çalıştığından şüpheleniyorsanız ilgili GitHub hesabının açık oturumlarını ve erişim anahtarlarını iptal edin, geçiş anahtarına (passkey) geçin.
Asıl mesele
Kurumsal yazılım alımının bir süreci vardır: talep, değerlendirme, onay, kurulum. Bu süreç yavaş olduğu için eleştirilir, ama bir işe yarar — yazılımın nereden geldiğini kayda geçirir.
Yapay zeka araçları bu sürecin dışından girdi. Bir eklenti kurmak bir yazılım kurmaktır, ama kimse ona öyle davranmıyor. Talep formu yok, onay yok, envanter kaydı yok.
Saldırganın fark ettiği şey tam olarak bu boşluk. On yedi bin depo, teknik bir zafiyeti değil, kurumsal bir boşluğu hedefliyor.
Sorulacak soru şu: geçen ay kurumunuzda kim, hangi yapay zeka bileşenini, nereden kurdu? Bu sorunun cevabı yoksa, cevabı olmayan başka sorular da var demektir.