deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

GhostAction kampanyası artık yıllar önce silinen gizli bilgileri bulmak için git geçmişlerinin tamamını tarıyor

GhostAction, GitHub'a sahte bir güvenlik workflow'u ile geri döndü; bu workflow depoların tam geçmişini indiriyor ve çoktan silinmiş kimlik bilgilerini topluyor. Yüzlerce hesap etkileniyor.

GhostAction kampanyası artık yıllar önce silinen gizli bilgileri bulmak için git geçmişlerinin tamamını tarıyor

Kampanya geri döndü ve eskisinden daha fazlasını okuyor

GitHub Actions'ı hedefleyen bir kimlik bilgisi hırsızlığı kampanyası olan GhostAction ilk kez Eylül 2025'te ortaya çıktı. 14 Ekim'de dev.to'da yayımlanan bir yazıya göre kampanya 7 Ekim'de daha geniş bir erişim ve daha saldırgan bir workflow ile yeniden faaliyete geçti.

Yazıda aktarılan StepSecurity rakamlarına göre saldırganlar 8 Ekim'de iki öne çıkan maintainer hesabını ele geçirdi ve iki kısa dalgada 345 depoyu değiştirdi. Socket o zamandan bu yana 500'den fazla etkilenen hesap ve on binlerce depo saydı.

Saldırı nasıl işliyor

dev.to yazısı yöntemi üç adıma bölüyor. Saldırgan önce bir geliştiricinin GitHub hesabına erişim kazanıyor; olası yollardan biri olarak çalınmış bir token gösteriliyor. Ardından "Add security audit workflow" mesajıyla tek bir dosya, .github/workflows/security-audit.yml, push ediyor. Adının aksine bu workflow hiçbir denetim yapmıyor; gizli bilgileri topluyor ve saldırganın sunucusuna gönderiyor.

2026'da değişen şey workflow'un içinde. Artık fetch-depth: 0 ayarlayarak deponun tüm geçmişini indiriyor, ardından her branch'teki her commit'teki her değişikliği yazdıran git log -p --all komutunu çalıştırıyor ve bu çıktıda anahtar arıyor. Önceki kötü amaçlı workflow'lar genellikle yalnızca en son commit'i görebiliyordu, çünkü standart checkout action varsayılan olarak sadece onu indiriyor.

Bir gizli bilgiyi silmek onu ortadan kaldırmaz

Git her dosyanın her sürümünü saklar; bir satırı kaldırmak yalnızca kaybolduğunu belirten bir commit ekler, eski commit ise yaşamaya devam eder. Tam geçmişi elinde tutan herkes, çalışma ağacından çok önce kaybolan değerleri kurtarabilir.

Yazar, maruziyeti ölçmek için açık kaynak tarayıcı gitleaks'ı 19 depoda çalıştırdı ve tekilleştirme sonrası 24 bulgu elde etti. Manuel inceleme 18'inin örnek, test veya gizli olmayan tanımlayıcılar olduğunu gösterdi; 6 değer potansiyel olarak hassastı. Bunlardan ikisi, mevcut dosyalarda bulunmayan ama Ocak 2025'te commit edilmiş bir Ansible inventory'de hâlâ duran parolalardı. Yazı, bunun kimlik bilgilerinin hâlâ geçerli olduğunu ya da birinin onları kullandığını kanıtlamadığını, yalnızca kaldırılan değerlere erişilebildiğini vurguluyor.

Özel depolar da risk altında, çünkü çalınmış bir token yetkileri dahilindeki her şeyi okuyabilir.

Önce iptal et, sonra yeniden yaz

Yazıya göre sızan bir gizli bilgiye içgüdüsel tepki olan geçmişi yeniden yazmak yanlış ilk adım. Yeniden yazmak yalnızca sizin kopyanıza ve sunucuya dokunur; meslektaşlarınızın clone ve fork'ları eski geçmişi korur ve gizli bilgiyi çoktan okuyan herkes onu elinde tutmaya devam eder. GitHub'ın kendi rehberi de önce iptal edilmesi gerektiği konusunda hemfikir.

Önerilen sıra: gizli bilgiyi sağlayıcısında iptal et veya döndür (rotate), kötüye kullanım için sağlayıcının loglarını kontrol et ve geçmişte kalan değer ancak bir tarayıcıyı tekrar tetiklemek gibi pratik sorunlara yol açıyorsa temizle.

Kapıyı kapatmak

StepSecurity ekiplerin sık gözden kaçırdığı bir noktaya dikkat çekiyor: çalınan gizli bilgileri döndürmek yetmez. Kötü amaçlı workflow'u push eden GitHub token'ının da iptal edilmesi gerekir, yoksa saldırgan ertesi gün aynı dosyayı yeniden push edebilir. Önerilen token hijyeni arasında her token'a son kullanma tarihi verilmesi, ihtiyaç duyulan depolarla sınırlı fine-grained token'lar kullanılması ve bu izni gerektirmeyen token'lardan workflow izninin kaldırılması yer alıyor; çünkü bu izin olmadan bir token .github/workflows dizinini değiştiremez.

Herhangi bir branch'e push edilen bir workflow o branch'ten çalışabildiği için yalnızca default branch'i korumak işe yaramaz. Yazı, hassas gizli bilgilerin belirli branch'lerle sınırlandırılabilen ve insan onayına bağlanabilen GitHub environment'larında saklanmasını, ayrıca uzun ömürlü cloud anahtarlarının sıkı trust koşullarına sahip OIDC ile değiştirilmesini öneriyor. Eski anahtarlar yine de iptal edilmelidir; çünkü geçiş yapılmış olması onları geçersiz kılmaz.

Tespit için yazı, her branch'te workflow'lara dokunan tüm commit'leri listelemek üzere git log --all --oneline -- .github/workflows/ komutuna ve gitleaks'a hem pre-commit hook (gitleaks git --pre-commit --staged --redact) hem de merge öncesi zorunlu, korunmuş bir pipeline kontrolü olarak işaret ediyor.

Neden önemli

GhostAction hiçbir yeni şey icat etmiyor; git'in her zaman sakladığını okuyor. Tam da bu yüzden acıtıyor. Ekiplerin silindiğine inandığı yıllar eski kimlik bilgileri tamamen kurtarılabilir durumda ve bu kampanya onların binlerce depo genelinde toplanmasını sanayileştiriyor. Tek kalıcı savunma, eski gizli bilgileri değersiz kılmaktır: önce iptal et, sonra temizle ve ne kadar kısa süre commit edilmiş olursa olsun her kimlik bilgisini ele geçirilmiş say.

  • #github
  • #security
  • #git
  • #secrets
  • #supply-chain

İlgili yazılar