wfx-loot kampanyası: ele geçirilmiş 4.837 GitHub hesabıyla 61 binden fazla depo yoklandı, en az 1.835 hedeften CI secret'ları çalındı
Aikido'nun araştırmasına göre saldırgan, çalıntı GitHub kimlik bilgileriyle sahte "bağımlılık denetimi" pull request'leri açtı ve GitHub Actions workflow'larına kimlik bilgisi çalan bir betik yerleştirdi. Hedefte Actions secret'ları, AWS, Azure ve Google Cloud kimlik bilgileri ile AI servis anahtarları var.
Uygulama güvenliği şirketi Aikido, GitHub Actions üzerinden CI secret'larını ve bulut kimlik bilgilerini hedef alan geniş bir kampanyayı ortaya çıkardı. wfx-loot adı verilen kampanyada saldırgan, ele geçirilmiş 4.837 GitHub hesabını kullanarak 61.764 depoyu yazma yetkisi açısından yokladı. BleepingComputer'ın 12 Kasım'da aktardığına göre depoların hepsinde zararlı kod çalışmadı; araştırmacılar en az 1.835 hedeften secret çalındığını doğruladı.
Ele geçirilen hesaplar arasında Fortune 100 şirketlerine, ABD Genel Hizmetler İdaresi'ne (GSA), Fransa hükümetine, Nextcloud'a ve WebdriverIO'ya ait olanlar bulunuyor. Aikido'ya göre bu hesapların yaklaşık 50'si npm, PyPI, Go, crates ve Packagist gibi paket ekosistemlerinde yayın yetkisine sahip görünüyor.
Saldırı nasıl ilerledi?
Araştırmaya göre kampanya 10 Kasım'da, UTC ile 12.45 sularında başladı:
- Saldırgan, hesapların erişebildiği depolara "docs: dependency audit notes" başlıklı pull request'ler açarak yazma yetkisi olup olmadığını sınadı. Aikido, bu pull request'lerin yüzde 92'sinin hâlâ açık olduğunu, yani depo sahiplerinin çoğunun durumu fark etmediğini belirtiyor.
- Yetki bulunan depolarda yaklaşık 1.500 satırlık, kimlik bilgisi çalan bir shell betiği devreye sokuldu. Bunun için mevcut bir GitHub Actions workflow'u değiştirildi, kısa ömürlü bir dalda yeni workflow eklendi ya da npm kurulum kancası yerleştirildi.
- Betik topladığı veriyi sıkıştırıp saldırganın kontrolündeki iki adresten birine gönderdi. Ardından değişiklikler geri alındı, workflow çalıştırma kayıtları ve loglar silindi. Aikido'ya göre bu temizlik bir dakikadan kısa sürdü.
Neler çalınıyor?
Betiğin hedef listesi geniş: GitHub Actions secret'ları ve değişkenleri, workflow'un GITHUB_TOKEN'ı, OIDC ve runtime token'ları; AWS, Azure ve Google Cloud kimlik bilgileri (self-hosted runner'larda instance metadata üzerinden açığa çıkanlar dahil); Git, SSH, GPG, Docker, Kubernetes, npm, PyPI, Vault ve Terraform kimlik bilgileri. Liste AI tarafını da kapsıyor: OpenAI, Anthropic, Gemini, Hugging Face, Cursor ve GitHub Copilot anahtarları.
Betik yalnızca toplamakla kalmıyor. GitHub OIDC token'larını geçici AWS, Azure ve GCP oturumlarına çevirerek bulutta yetki yükseltmeyi deniyor; izinler elverdiğinde uzun ömürlü kimlik bilgisi oluşturarak ya da bulut kimlik ve güven politikalarını değiştirerek kalıcı erişim kurabiliyor.
Otomatik yayın süreçleri nedeniyle zararlı içerik iki pakete de taşındı: Packagist'teki digitalelvis/neuronai-studio 3.14.3 ile Go modülü github.com/onuragtas/docker-env v1.0.278 ve v1.0.280. Araştırmacılar asıl amacın CI secret'ları olduğunu, paket sürümlerinin otomasyonun yan ürünü olduğunu değerlendiriyor. Aikido ayrıca 2025'teki GhostAction kampanyasıyla bazı örtüşmeler bulduğunu belirtiyor.
Ne yapılmalı?
- Depolarınızda
wfx-docsadlı dalı ve "docs: dependency audit notes" başlıklı pull request'i arayın; tanımadığınız bir hesaptan geldiyse kapatmadan önce içeriğini inceleyin. - GitHub Actions sekmesinde workflow çalıştırma numaralarına bakın: numaralarda atlama varsa bir çalıştırma silinmiş olabilir. Aikido bunu doğrudan iz olarak gösteriyor.
- Betiğin çalıştığı doğrulanırsa o workflow'un erişebildiği tüm secret'ları ve bulut rollerini ele geçirilmiş sayın ve hemen yenileyin; yalnızca GitHub token'ını değiştirmek yetmez.
- Bulut tarafında son günlerde oluşturulmuş IAM kullanıcılarını, erişim anahtarlarını ve güven politikası değişikliklerini denetim loglarından gözden geçirin.
- Kurum hesaplarında MFA'yı zorunlu tutun, dışarıdan gelen pull request'lerde workflow çalıştırmayı onaya bağlayın ve OIDC güven ilişkilerini depo ve dal bazında daraltın.
- Yukarıdaki iki paketin anılan sürümlerini kullanıyorsanız kaldırın ve o ortamdaki kimlik bilgilerini yenileyin.