İçeriğe geç

Türkçe siber güvenlik haberleri, zafiyet takibi, rehberler ve vaka dosyaları.

Çalınan 4.837 GitHub hesabıyla binlerce depoya CI gizli bilgi hırsızı yerleştirildi

Aikido Security'nin 12 Kasım'da yayımladığı analize göre bir saldırgan, 10 Kasım'dan itibaren çalınmış GitHub kimlik bilgileriyle on binlerce depoya GitHub Actions gizli bilgilerini ve bulut kimlik bilgilerini çalan bir iş akışı yerleştirmeye çalıştı. Şirket 4.837 hesabın ele geçirildiğini, zararlı kodun en az 1.835 depoda çalıştığını belirledi.

Kırmızı Ekip
  • 5 dk okuma
  • 2 kaynak
Noktalı dünya haritası üzerinde kırmızı hatlarla bağlanan noktalar

Kısaca

  • Saldırgan önce yazma yetkisini sınamak için 61.764 depoda docs: dependency audit notes başlıklı bir pull request açtı. Aikido'ya göre bu isteği açan her hesap ele geçirilmiş sayılmalı.
  • Zararlı kod çalıştıktan sonra genellikle dakikalar içinde geri alınıyor, iş akışı çalıştırması ve kayıtları siliniyor. Kodun çalıştığı depolarda iş akışlarının erişebildiği bütün gizli bilgiler ve bulut rolleri ele geçirilmiş kabul edilmeli.
  • Kod, otomatik yayın tetikleyicileri üzerinden bir Packagist paketine ve bir Go modülüne de girdi. Aikido saldırganın paketlerle yayılmayı değil, CI gizli bilgilerini hedeflediğini değerlendiriyor.

Güvenlik şirketi Aikido Security, 12 Kasım’da yayımladığı analizde GitHub’da geniş çaplı bir saldırı kampanyasını belgeledi. Şirketin wfx-loot adını verdiği kampanyada bir saldırgan, 10 Kasım’dan itibaren çalınmış GitHub kimlik bilgilerini kullanarak, bu hesapların yazma yetkisi olan depolara GitHub Actions gizli bilgilerini ve bulut kimlik bilgilerini çalan bir iş akışı kodu gönderdi. Analiz, saldırganın bu kimlik bilgilerini nasıl elde ettiğini açıklamıyor.

Kampanyanın boyutu

Aikido’nun topladığı verilere göre:

  • Ele geçirilmiş 4.837 hesap, 61.764 depoda deneme amaçlı pull request açtı.
  • Zararlı kod en az 1.835 depoda çalıştı ve bu depolardan kimlik bilgileri dışarı gönderildi. Aikido’nun yazısının metin bölümünde ve The Hacker News’in haberinde bu sayı 1.806 olarak geçiyor.
  • Pull request’lerin 10.431’i, hesabın sahibi olmadığı ama ortak çalışan ya da kuruluş üyesi olarak erişebildiği depolara gitti. Bunların yüzde 92’si şirketin kontrol ettiği sırada hâlâ açıktı.
  • Ele geçirilen kullanıcılardan en az 50’si npm, Go, Packagist, PyPI ya da crates için paket yayımlıyor gibi görünüyor.

Şirket bu sayının gerçek etkiyi olduğundan az gösterebileceğini belirtiyor, çünkü rakamlar yalnızca görebildiği herkese açık depoları kapsıyor. Zararlı kodda özel depolar için ayrı ayarların bulunması, kodun özel depolarda da çalıştırılıyor olabileceğini düşündürüyor. The Hacker News, Aikido’nun aramasının bittiği 11 Kasım’dan sonra, 12 Kasım sabahı da aynı başlıkla yeni pull request’lerin açıldığını tespit ettiğini yazdı.

Saldırının adımları

Aikido’ya göre saldırı 10 Kasım’da yaklaşık 12.45 UTC’de başladı. Saldırgan, çalınmış bir GitHub erişim anahtarının yazabildiği her depoda şu adımları izliyor:

  1. Deneme: wfx-docs adlı bir daldan docs: dependency audit notes başlıklı bir pull request açarak yazma yetkisini doğruluyor.
  2. Zararlı kodu gönderme: Üç yöntemden birini kullanıyor. Birincisinde ci: refresh build cache mesajlı bir commit ile var olan bir iş akışına yaklaşık 1.500 satır ekliyor. İkincisinde chore: add ci helper mesajıyla bir betik ve package.json dosyasına her npm install komutunda bu betiği çalıştıran bir postinstall kancası ekliyor. Üçüncüsünde chore: add dependency audit workflow mesajıyla geçici bir dalda yeni bir iş akışı dosyası oluşturuyor.
  3. İz silme: Değişikliği Aikido’ya göre en geç bir dakika, The Hacker News’in aktardığı SafeDep analizine göre genellikle dakikalar içinde geri alıyor, iş akışı çalıştırmasını ve kayıtlarını siliyor. Geriye çoğu zaman yalnızca iş akışı geçmişindeki eksik bir çalıştırma numarası kalıyor.

Çalınan bilgiler

Zararlı kod yaklaşık 1.500 satırlık tek bir kabuk betiği. Aikido’ya göre betik gizlenmemiş, bol yorum satırı içeriyor ve kayıtlarda kendini wfx olarak adlandırıyor. Betiğin topladıkları arasında şunlar var:

  • GitHub Actions gizli bilgileri ve değişkenleri, iş akışının GITHUB_TOKEN değeri, OIDC ve Actions çalışma zamanı anahtarları.
  • AWS, Azure, GCP, Docker, Kubernetes, npm, PyPI, Git, SSH, GPG, Vault ve Terraform’un bilinen konumlardaki kimlik bilgisi dosyaları.
  • OpenAI, Anthropic, Gemini, Hugging Face, Cursor ve Copilot gibi yapay zekâ hizmetlerinin ve geliştirici araçlarının kimlik bilgileri.
  • Çalıştırıcıdaki süreçlerin ortam değişkenleri ve belleği.
  • Deponun bir kopyası, son 100 commit ve yakın tarihli iş akışı çıktıları.
  • Kuruluşun kendi barındırdığı çalıştırıcılarda (self-hosted runner) ayrıca bulut örnek meta verisi kimlik bilgileri, Docker konteyner durumu ve systemd birimleri.

Betik topladığı kimlik bilgileriyle bulut hesaplarında daha derine inmeye çalışıyor. GitHub OIDC anahtarlarını AWS, GCP ve Azure oturumlarıyla değiştiriyor, AWS’de IAM kullanıcıları için uzun ömürlü erişim anahtarları oluşturuyor.

Kimlik bilgileri yenilendikten sonra da süren erişim

Aikido’ya göre betiğin üç işlemi, kimlik bilgileri yenilendikten sonra da erişimi korumak için tasarlanmış:

  • Deponun zorunlu denetimlerinin adlarını kullanarak commit’e sahte başarılı durum denetimleri gönderiyor ve böylece dal koruma kurallarını aşıyor.
  • AWS’de zincirlediği rolün güven politikasını, rolü bütün AWS hesaplarına açacak şekilde değiştiriyor.
  • Azure AD uygulamalarına adı wfx-ci- ile başlayan yeni federe kimlik bilgileri ekliyor. Böylece ele geçirilen depodaki iş akışları, bütün anahtarlar yenilendikten sonra da saklı bir gizli bilgi olmadan Azure’da oturum açabiliyor.

Aikido’ya göre bu kampanyada betik, verileri yalnızca HTTP POST isteğiyle iki sunucuya gönderecek şekilde ayarlanmıştı. The Hacker News’in aktardığı SafeDep analizine göre ise betik verileri bir Telegram sohbetine de gönderebiliyor. İncelenen 200 örneğin yaklaşık beşte biri yalnızca Telegram kullanıyordu.

Etkilenen paketler

Aikido, zararlı kodun otomatik yayın tetikleyicileri üzerinden en az iki pakete girdiğini belirledi:

  • Packagist, digitalelvis/neuronai-studio 3.14.3: Şirket, bu sürümü kuran ya da açan her bilgisayarın ele geçirilmiş sayılmasını öneriyor.
  • Go, github.com/onuragtas/docker-env v1.0.278 ve v1.0.280: Zararlı kod yalnızca bir GitHub Actions iş akışı dosyasında. Go kaynak kodu ve derlenmiş dosyalar değişmedi ve Go derlemeleri iş akışı dosyalarını çalıştırmıyor, bu yüzden modülü kullananlar etkilenmemiş olabilir. Aikido yine de bu sürümlerin kaldırılmasını öneriyor.

Ekim’deki GhostAction dalgasıyla örtüşme

Aikido, bu dalgada etkilenen hesapların Ekim’deki GhostAction dalgasında etkilenenlerle örtüştüğünü belirtiyor. Ekim’de etkilenen hesapların bu kampanyada kullanılma olasılığı diğer hesaplara göre belirgin biçimde yüksekti ve 100’den fazla depoda yeni zararlı kod, GhostAction’ın iş akışı dosyalarına eklendi. Şirket buna rağmen altyapı, araçlar ve yöntemler farklı olduğu için iki kampanyanın büyük olasılıkla farklı saldırganlarca yürütüldüğünü değerlendiriyor.

Kontrol edilecek izler

Aikido, yazma yetkiniz olan depolarda 10 Kasım ve sonrası için şu izlere bakılmasını öneriyor:

  • Dallar: wfx-docs, chore/ ile başlayıp sekiz rastgele karakterle biten kısa ömürlü dallar, ci-check- ile başlayıp dört rakamla biten dallar
  • Pull request başlığı: docs: dependency audit notes
  • Commit mesajları: ci: refresh build cache, ci: restore, chore: add ci helper, ci: cleanup, chore: add dependency audit workflow
  • Ağ adresleri: 194.150.166[.]244:8080 ve 18.143.168[.]96:8080 (/exfil yolu)
  • The Hacker News’in listesindeki ek adres: 153.75.82[.]159:8080
  • Betiğin SHA-256 özeti: 89695abb392d5cfd4972672961e644bb46baa98aa1ed7173c2a2816c762735cf

Şirkete göre bir depoda wfx-loot adlı çıktıların, wfx- ile başlayan önbellek kayıtlarının ya da WFX-BEGIN işaretli adım özetlerinin bulunmaması verinin alınmadığı anlamına gelmiyor. Saldırganın commit’inde çalıştırma numarasının eksik olması, kodun çalıştığının daha güvenilir bir göstergesi. Kodun çalıştığı depolarda iş akışlarının erişebildiği bütün gizli bilgilerin ve bulut rollerinin ele geçirildiği varsayılmalı.

Kaynaklar

  1. Aikido Security, "wfx-loot campaign pushes CI secret stealer to tens of thousands of repositories" (12 Kasım 2026)aikido.dev (başka siteye gider)
  2. The Hacker News, "Attacker Used 4,837 Hijacked GitHub Accounts to Run a CI Secret Stealer in 1,806+ Repositories" (12 Kasım 2026)thehackernews.com (başka siteye gider)