Aikido Security, 12 Kasım 2026’da yayımladığı incelemede, çalıntı GitHub kimlik bilgileriyle yürütülen geniş bir kampanya bildirdi. Şirkete göre saldırı 10 Kasım’da, yaklaşık 12.45 UTC’de başladı. 4.837 ele geçirilmiş hesap, yazabildiği 61.764 depoda bir “yoklama” çekme isteği açtı. Aikido, zararlı yükün en az 1.806 depoda çalıştığını ve bu depoların sürekli tümleştirme (CI) sırlarıyla bulut kimlik bilgilerinin alındığını yazıyor.
Bu kampanyayı 30 saniyede izleyin:
Haberi Aikido’nun birincil yazısından ve The Hacker News’in aynı günkü aktarımından derledik. Aşağıdaki sayılar Aikido’nun o an topladığı verilere dayanıyor; şirket, silinen çalışma kayıtları yüzünden gerçek etkinin daha yüksek olabileceğini de belirtiyor.
Kısaca
- 4.837 ele geçirilmiş hesap, 61.764 depoda yoklama çekme isteği açtı. GitHub araması, 10 Kasım 12.45 UTC ile 11 Kasım 15.00 UTC arasında “docs: dependency audit notes” başlıklı 61.839 istek gösteriyordu.
- Yük en az 1.806 depoda çalıştı. Aikido’ya göre saldırgan değişikliği genellikle bir dakika içinde geri alıyor, iş akışı çalışmasını ve günlüklerini siliyor. Geride çoğu zaman yalnızca atlanmış bir çalışma numarası kalıyor.
- Hedef, deponun GitHub Actions sırları ve iş akışının ulaşabildiği bulut kimlik bilgileri. Aikido, asıl amacın paket ekosistemine yayılmak değil, CI sırlarını toplamak olduğunu düşünüyor.
- Yine de otomatik yayımlama tetikleyicileriyle en az iki pakete sızılmış: Packagist’te
digitalelvis/neuronai-studio3.14.3; Go tarafındagithub.com/onuragtas/docker-envv1.0.278 ve v1.0.280. - En az 50 ele geçirilmiş hesabın npm, Go, Packagist, PyPI veya crates paketleri yayımladığı görülüyor. 10.431 yoklama isteği, hesabın sahibi olmadığı (işbirlikçi veya kuruluş yetkisiyle ulaşılan) depolara gitmiş; bunların yüzde 92’si inceleme sırasında hâlâ açıktı.
Saldırı nasıl ilerliyor?
Aikido’nun anlattığı sıra üç adımlı. Önce ele geçirilmiş jeton, yazabildiği her depoda wfx-docs dalından “docs: dependency audit notes” başlıklı bir çekme isteği açarak yazma yetkisini yokluyor. Şirket, yoklamanın çalışmasının bile o hesabın ele geçirilmiş sayılması için yeterli olduğunu vurguluyor; sonraki yük adımı hiç gelmemiş olsa da.
Ardından üç varyanttan biri devreye giriyor: var olan bir iş akışına yaklaşık 1.500 satır ekleyen “ci: refresh build cache” komisyonu; package.json içine kurulum sonrası kanca ekleyen “chore: add ci helper”; ya da kısa ömürlü chore/ dalında yeni bir iş akışı dosyası bırakan “chore: add dependency audit workflow”. Yük çalıştıktan sonra değişiklik geri alınıyor, çalışma ve günlükler siliniyor.
Aikido, yükü yaklaşık 1.500 satırlık, ağır yorumlu, “wfx” adını kullanan bir kabuk betiği olarak tanımlıyor. Betik, koşucunun ulaşabildiği sırları topluyor, bazılarını daha kalıcı bulut erişimine çevirmeye çalışıyor ve veriyi dışarı çıkarıyor. Bu kampanyada dışarı aktarma, şirketin yazdığına göre HTTP ile iki çıkış sunucusuna gönderilecek biçimde ayarlanmış; diğer kanalların bir kısmı kapalı duruyordu. Günlük silindiği için “artifakt yok, özet yok” demek, veri alınmadığı anlamına gelmiyor.
Toplananlar arasında GitHub Actions sırları ve değişkenleri, iş akışı jetonları, AWS, Azure ve GCP dosyaları, Kubernetes, npm, PyPI, SSH anahtarları ve bir dizi yapay zekâ sağlayıcısı anahtarı sayılıyor. Kalıcılık tarafında Aikido, AWS rol güven politikasının genişletilmesi ve Azure’a yeni federasyon kimlikleri eklenmesi gibi, sırları sonradan değiştirmenin yetmeyebileceği adımları da anlatıyor. Bu yazıda saldırının tarifini, kopyalanabilir bir tarif düzeyine indirmeden, savunma için yeterli ayrıntıda tutuyoruz.
Paketler ve Ekim dalgasıyla ilişki
Packagist paketinin 3.14.3 sürümü kötü amaçlı. Aikido, bu sürümü kuran veya açan her makinenin ele geçirilmiş varsayılmasını istiyor. Go modülünün anılan etiketlerinde yük yalnızca bir GitHub Actions dosyasında; kaynak kod ve yayınlanan ikili dosyalar değişmemiş, Go derlemesi iş akışı dosyasını çalıştırmıyor. Yine de şirketin tavsiyesi bu etiketleri kaldırmak.
Bazı hesaplar, Ekim’deki GhostAction dalgasıyla kesişiyor. Aikido, Ekim’de vurulan hesapların Kasım’da kullanılma olasılığının diğer aktif hesaplara göre çok daha yüksek göründüğünü, 100’den fazla depoda Kasım yükünün Ekim iş akışlarının içine enjekte edildiğini yazıyor. Buna rağmen altyapı ve yöntemin farklı olduğunu, çalıntı bilgilerin birden fazla saldırganın eline geçebileceğini belirterek Kasım dalgasını şimdilik aynı aktöre bağlamıyor.
Türkiye’deki geliştiriciler ve şirketler için
GitHub, Türkiye’deki yazılım ekiplerinde, ajanslarda ve bireysel geliştiricilerde neredeyse varsayılan depo adresi. Actions sırlarında sık sık bulut anahtarları, paket yayımlama jetonları ve yapay zekâ API anahtarları duruyor. Bu kampanya, “kendi reponuz temiz görünüyor” demenin yetmediğini gösteriyor: Ele geçirilmiş bir işbirlikçi hesabı, sizin deponuza da yoklama isteği açabiliyor. 10 binden fazla isteğin başkasının deposuna gitmiş olması bu yüzden önemli.
Yapılacak kontrol pratik. 10 Kasım’dan sonra depolarınızda wfx-docs dalı, “docs: dependency audit notes” başlıklı çekme isteği, “ci: refresh build cache”, “chore: add ci helper”, “chore: add dependency audit workflow” komisyonları veya chore/ ile başlayıp sekiz rastgele karakterle biten kısa ömürlü dallar var mı bakın. İş akışı geçmişinde atlanmış bir çalışma numarası, yükün çalışıp günlüğün silindiğine işaret olabilir. Yük çalıştıysa, o iş akışının ulaşabildiği her sır ve bulut rolü ele geçirilmiş varsayılmalı; sırları döndürmek yetmeyebilir, çünkü saldırgan daha kalıcı erişim izleri bırakmış olabilir.
Paket yayımlayan ekipler npm, PyPI, Packagist, Go ve crates tarafındaki son yayımları da gözden geçirmeli. Dünkü Git 2.56.1 güvenlik sürümü yazımızda da görüldüğü gibi, geliştirme araçlarının kendisi artık sık hedef. GitHub’da daha önce ajanların iç görselleri açığa çıkardığı bir örneği Glow / GitShot haberinde ele almıştık.
Sonuç
Bu kampanya gösterişli bir “tedarik zinciri solucanı”ndan çok, çalıntı hesaplarla CI odasına girip sırları toplayan, izini silmeye çalışan bir operasyon. Ölçek büyük, günlükler silindiği için görünürlük zayıf, yoklama isteklerinin çoğu hâlâ açık. İlk iş, depolarınızda yukarıdaki izleri aramak; yük çalıştıysa sırları ve bulut güven ilişkilerini baştan ele almak; paket yayımlıyorsanız son sürümleri kontrol etmek.