CVE-2025-30066: tj-actions/changed-files GitHub Action Embedded Malicious Code Vulnerability
Zorluk Seviyesi: Orta | Kaynak: CISA KEV
Zafiyet Analizi ve Giriş
Son yıllarda DevOps süreçlerinin hız kazanmasıyla birlikte, otomasyon araçları da büyük bir önem kazanmıştır. GitHub Actions, bu alandaki popüler araçlardan biridir ve geliştiricilere, kodlarını otomatik bir şekilde test etme, derleme ve dağıtma imkanı sunar. Ancak, 2025 yılında keşfedilen CVE-2025-30066 güvenlik zafiyeti, tj-actions/changed-files GitHub Action bileşeninde gömülü kötü niyetli kodun varlığını gözler önüne sermektedir.
Bu zafiyet, temel olarak bir çerçevenin (framework) kaynak kodunda yapılan hatalardan kaynaklanmaktadır. Zafiyetin, kullanıcının GitHub Actions Workflow (İş Akışı) loglarına erişim sağlamasına olanak tanıdığı tespit edilmiştir. Bir hacker, bir şekilde bu loglara ulaşmayı başardığında, burada yer alan gizli verileri okuyabilir. Örneğin, AWS erişim anahtarları, GitHub kişisel erişim token’ları (PAT), npm token’ları ve özel RSA anahtarları gibi kritik bilgileri elde etme şansı bulur.
Zafiyetin etkileri oldukça geniş bir ulaşım alanına yayılmıştır. Özellikle teknoloji, finans ve sağlık sektörleri gibi yüksek güvenlik gereksinimi taşıyan alanlarda, bir sızıntı veya ihlal durumu ciddi sonuçlara yol açabilir. Örneğin, bir finans kuruluşunda, bir saldırganın erişim anahtarlarıyla sistemlere sızması, tüm müşteri verilerinin tehlikeye girmesine neden olabilir. Sağlık sektöründe ise, hasta bilgileri ve tıbbi kayıtlar üzerinde yetkisiz erişim, kullanıcı mahremiyetinin ihlali anlamına gelir.
Uygulama güvenliğine dair günümüzde daha fazla önem verilmesi ve proaktif önlemlerin alınması gerektiği aşikardır. Bir dizi güvenlik standardı ve en iyi uygulama mevcut olsa da, yazılımların ve kütüphanelerin sürekli güncellenmesi ve denetlenmesi kaçınılmaz hale gelmiştir. Geliştiriciler, kullandıkları açık kaynak kütüphanelerinin güvenliğini sağlamak için sistematik bir şekilde güncel kalmalı ve potansiyel riskleri minimize etmelidir.
Örneğin şu kod parçasında, GitHub Actions ortamındaki değişkenlerin ve erişim anahtarlarının piyasada nasıl kötüye kullanılabileceğini gösteriyoruz:
name: CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run an npm command
run: npm install
- name: Log secrets
run: echo ${{ secrets.MY_SECRET }}
Yukarıdaki örnekte, secrets.MY_SECRET kısmı kötü amaçlı bir aktör tarafından erişilebilecek bir yapı olabilir. Bu tür durumlarda saldırgan, kritik bilgilere doğrudan erişim sağlayıp bunları kötü amaçla kullanabilir. Dolayısıyla, uygulama geliştiricileri ve sistem yöneticileri, bu tür zafiyetleri anlamak ve birer savunma mekanizması oluşturmak adına eğitim almalı ve güvenlik pratiği içinde daha dikkatli olmalıdır.
Sonuç olarak, CVE-2025-30066 gibi güvenlik zafiyetleri, hiçbir açık kaynak bileşeni veya yazılımın güvenli olmadığını göstermektedir. Her geliştirici, kullandığı araçların ve kütüphanelerin güvenlik durumunu sürekli gözden geçirmeli ve gerekli adımları atmalıdır. Güvenli bir yazılım geliştirmenin yolu, sürekli eğitim ve güncel bilgilere sahip olmaktan geçmektedir.
Teknik Sömürü (Exploitation) ve PoC
tj-actions/changed-files GitHub Action’daki CVE-2025-30066 zafiyeti, kötü niyetli bir saldırganın uzaktan gizli bilgileri keşfetmesine olanak tanıyan bir açık içeriyor. Bu durum, özellikle güvenlik açıklarının sömürülmesi (exploitation) açısından büyük bir risk oluşturuyor. Hesaplarımızda bulundurabileceğimiz AWS erişim anahtarları, GitHub kişisel erişim token'ları (PAT'ler), npm token'ları ve özel RSA anahtarları gibi gizli bilgilerin sızıntısı, çok sayıda saldırıya kapı aralayabilir.
Zafiyetin teknik detaylarına geçmeden önce, bu GitHub Action’ın nasıl kullanıldığını anlayalım. GitHub Actions, CI/CD süreçlerinde sıkça kullanılan bir araçtır. Ancak üçüncü taraf bileşenlerin kullanımı, güvenlik risklerini de beraberinde getirir. Özellikle, "tj-actions/changed-files" gibi bir GitHub Action kullanıldığında, bu bileşenin içerisinde yer alabilecek potansiyel tehditleri göz önünde bulundurmamız gerekir.
Sömürü aşamaları için şu adımları takip edelim:
Hedef Bilgilerini Toplama: İlk olarak, hedef sistemde bir dizi bilgi toplamak gerekir. Hedef, GitHub deposu olabilir. Burada, kullanıcının GitHub Action’larını ve bu Action’ların nasıl yapılandırıldığını incelemek önemli bir adımdır. GitHub API kullanılarak ilgili iş akışı (workflow) detaylarını çıkarmak mümkündür.
Zafiyetten Yararlanma: Zafiyet, kullanıcıların gizli anahtarlarını etkileyen bir "Log Leakage" (log sızıntısı) sorunu içerdiği için, bu bilgilerin nasıl elde edileceğini planlamak gereklidir. Kullanıcı, GitHub Action’ı çalıştırdığında, loglarda bu gizli anahtarların görünmesi sağlanabilir. Aşağıdaki örnek, kötü niyetli bir kod parçası içerebilir:
name: Example workflow on: [push] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Run changed-files action uses: tj-actions/changed-files@v2 with: token: ${{ secrets.GITHUB_TOKEN }}Logları İnceleme: İş akışını çalıştırarak, olası loglar (workflow logs) gözlemlenmeli ve burada gizli bilgilerin varlığı kontrol edilmelidir. GitHub Actions loglarında, yapılan işlemler ve parametreler açıkça belirtilir. Bu nedenle, kötü niyetli bir kişi bu logları inceleyerek gizli bilgileri elde edebilir.
Gizli Bilgilerin Sızdırılması: Elde edilen gizli bilgilerin sızdırılması, saldırganın kullanabileceği diğer sistemlere giriş yapmasına olanak tanır. Örneğin, bir AWS erişim anahtarının ele geçirilmesi, bulut kaynaklarına yetkisiz bir erişim sağlar ve bu da RCE (uzaktan kod çalıştırma) gibi daha büyük tehditlere yol açabilir.
Sonuç Analizi ve Önlem: Sızıntıdan sonra, kullanıcıların bu tür açıkları önlemek için gerekli önlemleri alması önemlidir. Bu açıkları gidermek için GitHub Action’larını sürekli güncel tutmak ve gerektiğinde alternatif yöntemler kullanmak, bilgi güvenliği açısından kritik öneme sahiptir. Ayrıca, her hangi bir sızıntı durumunda, gizli anahtarların ve token'ların değiştirilmesi gereklidir.
Sonuç olarak, CVE-2025-30066 zafiyeti, güvenlik açıklarından yararlanarak gizli bilgilere ulaşmanın bir örneğini sunuyor. Kötü niyetli saldırılar karşısında dikkatli olunmalı ve güvenlik önlemleri sıkı bir şekilde uygulanmalıdır. Güvenlik açıklarını tespit etmek ve önlemek, her organizasyon için öncelikli bir konu olmalıdır. Unutulmamalıdır ki, güvenlik, sadece bir yazılım ya da araç değil, bir zihinsel süreçtir.
Forensics (Adli Bilişim) ve Log Analizi
tj-actions/changed-files GitHub Action'da keşfedilen CVE-2025-30066 zafiyeti, siber güvenlik açısından oldukça ciddi bir tehdittir. Bu durum, potansiyel olarak kötü niyetli bir saldırganın, GitHub Workflow Günlükleri’ni (Workflow Logs) okuyarak değerli bilgileri, yani gizli anahtarları elde etmesine olanak tanıdığı için endişe vericidir. Gerçek dünyada böyle bir zafiyetin kötüye kullanılması, bir şirketin bulut hizmetlerine erişimi olan AWS erişim anahtarlarının, GitHub kişisel erişim belirteçlerinin (PAT) veya özel RSA anahtarlarının ifşasına yol açabilir.
Saldırganlar, bu tür gizli bilgileri elde ederek, sistemlere uzaktan kötü amaçlı yazılım (RCE - Uzak Kod Yürütme) yükleyebilir veya kimlik avı (Phishing) gibi daha karmaşık saldırılar gerçekleştirebilirler. Dolayısıyla, siber güvenlik uzmanlarının bu tür zafiyetlere karşı duyarlı olmaları, sürekli izleme ve analiz yapmaları son derece önemlidir.
Bir siber güvenlik uzmanı, SIEM (Güvenlik Bilgisi ve Olay Yönetimi) sistemleri aracılığıyla veya çeşitli log dosyalarında bu zafiyetin bir işareti veya etkinliği olduğundan şüphelendiğinde, belirli unsurlara dikkat etmelidir. Öncelikle, GitHub Actions log dosyalarını analiz etmesi gereken kritik bir nokta, "gizli değişkenlerin" sızdırıldığına dair belirtilerdir. İşte bu noktada bakması gereken bazı imzalar:
- Gizli Anahtarların Görünmesi: Log dosyalarında herhangi bir AWS erişim anahtarı, GitHub PAT veya diğer gizli bilgiler yer alıyorsa, bu ciddi bir güvenlik açığına işaret eder. Özellikle,
******şeklinde maskelemeyi aşan veya doğrudan açık bir şekilde bulunan token ve anahtarlar dikkatle incelenmelidir.
INFO: Processing changed files for user: user@example.com
AWS_ACCESS_KEY_ID = AKIA... (açık anahtar)
- Anormal İstek Modelleri: Log analizleri sırasında, normalde olmayan IP adreslerinden gelen veya olağan zaman dilimlerinde gerçekleştirilen istekler, izlenmesi gereken bir diğer imzadır. Sıklıkla yapılan bir IP adresinin normalde çağrılmadığı kaynaklara erişim talep etmesi dikkat çekici bir durumdur.
- Başka Hesaplardan Giriş Denemeleri: Log dosyalarında, beklenmedik kullanıcı adları ve hesaplarından gelen giriş denemeleri ciddi bir güvenlik endişesidir. Herhangi bir kullanıcı adına yönelik çok sayıda başarısız giriş denemesi, bir brute-force (güçlü tahmin) saldırısının belirtisi olabilir.
- Sürekli Hatalı İzin Talepleri: Eğer bir güvenlik açığı kullanıcı ya da sistem davranışında sürekli hatalı izin talepleri oluşturuyorsa, büyük ihtimalle sistemde bir zafiyet veya yapılandırma hatası var demektir. Özellikle, erişim hatalarının yüksek olduğu sistemler, incelenmelidir.
Siber güvenlik uzmanları, yukarıdaki belirtilere ve imzalara dikkat ederek, bir saldırının gerçekleşip gerçekleşmediğini değerlendirebilirler. Ayrıca, bu tür zafiyetlerin önüne geçmek amacıyla, otomasyon sistemlerinde gizli bilgilerin maskelendiği ve erişim kontrol listelerinin titizlikle yönetildiği güvenlik politikalarının oluşturulması gerekmektedir. Herhangi bir zafiyeti ortaya çıkmadan kapatmanın yanı sıra, mevcut tehditleri etkili bir şekilde tespit etmek, güvenli bir siber ortam oluşturmak için kritiktir.
Savunma ve Sıkılaştırma (Hardening)
Zafiyetlerin etkilerini en aza indirmek ve sistem güvenliğini artırmak amacıyla savunma ve sıkılaştırma yöntemlerine yönelmek oldukça kritik bir adımdır. Özellikle CVE-2025-30066 gibi içinde zararlı kod barındıran açıkların bulunması, açık kaynaklı araçlarda kullanıcılara önemli tehditler oluşturabilir. Bu bağlamda, tj-actions/changed-files GitHub Action üzerinde keşfedilen bu zafiyet, uzaktan bir saldırganın GitHub Actions workflow loglarının okunması yoluyla gizli bilgileri ele geçirmesine olanak tanımaktadır. Bu tür saldırılara karşı savunma stratejilerini iyi bir şekilde belirlemek gerekir.
Bu tür açıklar için ilk savunma hattı, güvenli yazılım geliştirme uygulamalarının benimsenmesidir. Geliştiricilerin, üçüncü taraf kütüphaneleri ve araçları kullanmadan önce dikkatlice değerlendirme yapması gerekiyor. Örneğin, kullanılan GitHub Action'ın güvenilir mi olduğu, düzenli olarak güncellenip güncellenmediği ve topluluk tarafından nasıl değerlendirildiği gibi kriterler dikkate alınmalıdır.
Alternatif bir yöntem ise, özellikle hassas verileri (gizli anahtarlar, akses anahtarları vb.) environment variables (ortam değişkenleri) ya da GitHub Secrets gibi güvenli yollarla yönetmektir. Bu boyutları gizlemek, saldırganların bu verilere erişimini zorlaştırmak için son derece önemlidir. Ayrıca, workflow'larda yalnızca gerekli izinlerin verilmesi, potansiyel bir yetki aşımını (Authorization Bypass) engelleyebilir.
Bir başka önemli adım, Web Application Firewall (WAF) kurulumu ile ilgili stratejik kurallar geliştirmektir. WAF'ler, uygulama katmanı üzerinde zararlı trafiği filtrelemek için tasarlanmaktadır. Belirli zararlı içeriğin tespit edilmesi için aşağıdaki gibi kurallar eklenebilir:
SecRule REQUEST_BODY "@rx (base64_decode|shell_exec|eval)" \
"id:1001, phase:2, block"
Bu kural, isteğin vücut kısmında zararlı kodların barındırılması durumunda, istemcinin erişimini anında engeller. Ayrıca, eğer bir kullanıcı, gizli bilgilerle yetkisiz erişim sağlamaya çalışırsa, bu tür potansiyel isteklerin loglanması ve analizi gerekmektedir.
Kalıcı sıkılaştırma (hardening) önerileri arasında, sistemlerin güncel tutulması, gereksiz servislerin ve kullanıcıların devre dışı bırakılması yer alır. Gereksiz yetkilerin kaldırılması, saldırı yüzeyini daraltmanın etkili bir yoludur. Örneğin, bir servisin sadece belirli IP aralıklarından erişilebilir olması, potansiyel saldırıların etkisini minimuma indirebilir.
Ayrıca, bazı gelişmiş izleme ve raporlama çözümlerinin kullanılması, potansiyel tehditlerin zamanında tespit edilmesine yardımcı olabilir. Log yönetim sistemleri, aktivitelerin izlenmesi ve kritik olayların incelenmesi için önemli veriler sunar. Bu verilerin analizi, anormal aktivitelerin belirlenmesine yardımcı olur ve kurumsal güvenliği artırır.
Sonuç olarak, yazılım geliştirme süreçlerinde etkili güvenlik önlemlerinin alınması, yalnızca zafiyetleri tespit etmekle kalmaz, aynı zamanda olası saldırılara karşı sistemleri koruma altına alır. Bu tür savunma ve sıkılaştırma yöntemleri, sistemlerin daha güvenli olmasına katkıda bulunmakta ve olası tehditlere karşı dayanıklılığı artırmaktadır.