"SpotBugs Erişim Jetonu Hırsızlığı, GitHub Tedarik Zinciri Saldırısının Temel Nedeni Olarak Belirlendi"
Coinbase’i hedef alan ve daha sonra yaygınlaşarak GitHub üzerindeki "tj-actions/changed-files" eylemini kullanan kullanıcıları etkileyen zincirleme tedarik zinciri saldırısının, SpotBugs adlı açık kaynaklı projeye ait bir kişisel erişim jetonunun (Personal Access Token - PAT) çalınmasına kadar uzandığı ortaya çıktı.
Palo Alto Networks’e bağlı Unit 42 tarafından bu hafta yayınlanan güncellemeye göre:
“Saldırganlar, popüler bir açık kaynak hata analiz aracı olan SpotBugs’un GitHub Actions iş akışından yararlanarak ilk erişimi sağladı. Bu sayede SpotBugs’un farklı depoları arasında yatay geçiş yapabildiler ve en sonunda reviewdog deposuna ulaştılar.”
Saldırıların ilk belirtilerinin 2024 Kasım ayı sonlarına kadar uzandığına dair kanıtlar mevcut olsa da, Coinbase’e yönelik saldırı Mart 2025’te gerçekleşti.
Unit 42, soruşturmanın başında reviewdog projesine ait GitHub Actions eklentisinin, projeyi yöneten kişiye ait sızdırılmış bir PAT nedeniyle tehlikeye girdiğini tespit etti. Bu güvenlik açığı, tehdit aktörlerinin kötü amaçlı bir "reviewdog/action-setup" sürümünü yüklemesine olanak tanıdı. Bu sürüm, bağımlılık olarak listelendiği için "tj-actions/eslint-changed-files" aracılığıyla "tj-actions/changed-files" tarafından da dolaylı olarak kullanıldı.
Yürütülen detaylı analizler, söz konusu projenin yöneticisinin aynı zamanda SpotBugs adlı başka bir açık kaynak projede de aktif olduğunu ortaya koydu.
“Saldırganlar, ‘jurkaofavak’ takma adlı geçici bir kullanıcı aracılığıyla SpotBugs deposuna kötü niyetli bir GitHub Actions iş akışı dosyası yükledi. Bu dosyanın çalıştırılması sırasında, yöneticinin erişim jetonu (PAT) sızdırıldı.”
Aynı erişim jetonunun hem "spotbugs/spotbugs" hem de "reviewdog/action-setup" projelerine erişim sağladığı tahmin ediliyor. Bu da saldırganların, aynı jetonu kullanarak her iki projeyi de zehirleme fırsatı bulduğunu gösteriyor.
Unit 42 tarafından yapılan açıklamada:
“Saldırganın spotbugs/spotbugs deposunda yazma izni bulunan bir hesabı vardı. Bu hesap aracılığıyla depoya doğrudan dal (branch) yükleyerek sürekli entegrasyon (CI) sırlarına erişim sağladılar.”
Bu yazma izninin nasıl elde edildiği de yakın zamanda aydınlatıldı. 11 Mart 2025 tarihinde, SpotBugs projesi yöneticilerinden biri, saldırganın kullandığı "jurkaofavak" adlı kullanıcıyı projeye üye olarak davet etti. Bu davetin arkasında yatan sebep ise, saldırganların "spotbugs/sonar-findbugs" deposunu çatallayıp (fork) "randolzfow" kullanıcı adıyla bir çekme isteği (pull request) oluşturmalarıydı.
Unit 42, olayı şu şekilde özetliyor:
“2024-11-28 09:45:13 UTC tarihinde, SpotBugs yöneticisi, CI/CD sürecindeki teknik aksaklıklar nedeniyle, kendi erişim jetonunu iş akışı dosyasına manuel olarak ekledi.
2024-12-06 02:39:00 UTC tarihinde ise saldırgan, ‘pull_request_target’ tetikleyicisini kullanan kötü niyetli bir çekme isteği gönderdi.”
"pull_request_target" tetikleyicisi, GitHub Actions içinde çatallanan projelerden gelen iş akışlarının sırları (secrets) kullanmasına olanak tanır. Bu durumda, erişim jetonunun (PAT) dışa sızmasına ve “zehirli iş akışı çalıştırma saldırısı” (Poisoned Pipeline Execution – PPE) gerçekleştirilmesine neden oldu.
SpotBugs yöneticisi, saldırıda kullanılan erişim jetonunun, daha sonra "jurkaofavak" adlı kullanıcıyı projeye davet etmekte kullanılan aynı jeton olduğunu doğruladı. O zamandan bu yana tüm erişim jetonları ve PAT’ler iptal edilip yenileriyle değiştirildi.
Ancak hala cevapsız kalan önemli bir soru var: Saldırganlar SpotBugs yöneticisinin erişim jetonunu sızdırdıktan sonra neden üç ay bekledi?
“Aylar süren bir yatırımın ardından, bu kadar ilerleme kaydeden saldırganlar neden sırları günlüklerde (log) açık bir şekilde yazdırarak kendi saldırılarını açığa çıkardı?”
— Unit 42 araştırmacıları
Bu durum, saldırganların, "tj-actions/changed-files" eklentisine bağımlı yüksek profilli projeleri takip ettiğini ve Coinbase gibi değerli bir hedefe ulaşmak için en uygun zamanı beklediğini düşündürüyor.




