Yazılım Güvenliğinde Shift-Left Yaklaşımı: Geliştirici ile Güvenlik Ekibini Barıştırmak

Güvenlik ekibi sürümden bir gün önce 300 bulguluk bir rapor gönderdiğinde, kimse kazanmaz. Güvenlik kontrollerini geliştiricinin akışına, gürültü yaratmadan yerleştirmenin yollarını anlatıyoruz.

Yazılım Güvenliğinde Shift-Left Yaklaşımı: Geliştirici ile Güvenlik Ekibini Barıştırmak

Klasik yazılım geliştirme modelinde güvenlik testi, sürecin en sonunda yapılırdı: uygulama geliştirilir, test edilir, yayına alınmadan hemen önce güvenlik ekibi bir tarama ya da sızma testi yapar. Sonuç çoğu zaman aynıdır: yüzlerce bulgu, sıkışmış bir takvim, "şimdilik böyle çıkalım" kararı ve güvenlik ekibini "işi yavaşlatan taraf" olarak gören geliştiriciler.

Shift-left, güvenlik kontrollerini zaman çizelgesinde sola, yani geliştirme sürecinin başına taşımak demektir. Mantık basittir: bir açığı kodu yazarken düzeltmek, yayına aldıktan sonra düzeltmekten çok daha ucuz ve hızlıdır.

Neden çatışma yaşanıyor?

  • Farklı hedefler: Geliştirici hızla özellik teslim etmekle, güvenlik ekibi riski azaltmakla ölçülür.
  • Geç geri bildirim: Haftalar önce yazılmış kodla ilgili bulgu, geliştiricinin zihninde artık bağlamını kaybetmiştir.
  • Gürültü: Yanlış pozitiflerle dolu araç çıktıları, geliştiricinin tüm bulgulara güvenini yok eder.
  • Belirsiz sorumluluk: "Bunu kim düzeltecek, ne zamana kadar?" sorusunun yanıtı yoktur.

Shift-left bu sorunları yalnızca araçla değil, süreç ve kültürle çözer.

Araç ailelerini tanıyalım

TürNe test eder?Ne zaman çalışır?Açık kaynak örnekler
SAST (statik analiz)Kaynak kodu çalıştırmadan incelerIDE, commit, pull requestSemgrep, SonarQube Community, Bandit (Python)
SCA (bağımlılık analizi)Üçüncü taraf kütüphanelerdeki bilinen açıklar ve lisanslarPull request, gece taramasıOWASP Dependency-Check, Trivy, osv-scanner
Sır taramasıKoda gömülü parola, anahtar, tokenPre-commit, pull requestgitleaks, trufflehog
IaC taramasıTerraform, Kubernetes manifest hatalarıPull requestCheckov, Trivy config
DAST (dinamik analiz)Çalışan uygulamayı dışarıdan test ederTest/staging ortamına dağıtım sonrasıOWASP ZAP, Nuclei

CI/CD hattına ekleme: pratik bir örnek

Aşağıdaki GitHub Actions iş akışı, her pull request'te sır taraması, SAST ve bağımlılık taraması çalıştırır; staging'e dağıtımdan sonra da temel bir DAST taraması yapar.

name: guvenlik
on: [pull_request]

jobs:
  statik:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0 }

      - name: Sır taraması
        uses: gitleaks/gitleaks-action@v2

      - name: SAST (Semgrep)
        run: |
          pip install semgrep
          semgrep scan --config p/owasp-top-ten --error --severity ERROR

      - name: Bağımlılık taraması
        run: |
          curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
          trivy fs --scanners vuln --severity CRITICAL,HIGH --exit-code 1 .

  dast:
    needs: statik
    runs-on: ubuntu-latest
    steps:
      - name: ZAP temel tarama (staging)
        uses: zaproxy/action-baseline@v0.12.0
        with:
          target: "https://staging.ornek.com"
Kademeli sıkılaştırma

İlk gün her bulguda derlemeyi durdurmayın. Önce araçları yalnızca raporlama modunda çalıştırın, gürültüyü ayıklayın; sonra yalnızca yeni eklenen kritik bulgularda derlemeyi durdurun. Mevcut teknik borcu ayrı bir planla eritin.

Geliştiriciyi yormamanın altın kuralları

1. Geri bildirimi geliştiricinin olduğu yere getirin

Bulgular ayrı bir güvenlik portalında değil, pull request yorumu olarak ve ilgili kod satırının yanında görünmeli. IDE eklentileriyle, kod daha commit edilmeden uyarı verilebilir.

2. Yalnızca farkı gösterin

Geliştiriciye yalnızca kendi değişikliğinin getirdiği bulguları gösterin. 5 yıllık bir kod tabanının tüm bulgularını her pull request'te göstermek, uyarıların görmezden gelinmesine yol açar.

3. Yanlış pozitifleri acımasızca ayıklayın

Her yanlış pozitif, aracın güvenilirliğinden bir parça götürür. Kural setlerini projeye göre ayarlayın; bastırılan bulgular için gerekçe zorunlu olsun ve periyodik olarak gözden geçirilsin.

4. Çözümü de gösterin

"SQL enjeksiyonu riski" demek yetmez; güvenli alternatif kod örneği verin. Birçok modern araç, düzeltme önerisini doğrudan sunabilir.

5. Hızlı olun

Pull request kontrolleri birkaç dakikayı geçmemeli. Uzun süren derin taramaları gece zamanlanmış işlere taşıyın.

Kültür: güvenlik şampiyonları

Her geliştirme ekibinden güvenliğe ilgi duyan bir geliştiricinin "güvenlik şampiyonu" olarak belirlenmesi, iki ekip arasında köprü kurar. Şampiyonlar:

  • Ekiplerinde tehdit modellemesi oturumlarını kolaylaştırır,
  • Araç kurallarının projeye uyarlanmasına katkı verir,
  • Güvenlik ekibine geliştiricinin bakış açısını taşır,
  • Düzenli eğitim ve bilgi paylaşımı ile desteklenir.

Tehdit modellemesi: en sol nokta

Kod yazılmadan önce, tasarım aşamasında sorulan "Bu özellik nasıl kötüye kullanılabilir?" sorusu, en ucuz güvenlik kontrolüdür. STRIDE gibi basit bir çerçeveyle 30 dakikalık bir tasarım oturumu, sonradan haftalarca sürecek düzeltmeleri önleyebilir.

Neyi ölçmeli?

  • Düzeltme süresi: Kritik bulgunun tespitinden kapanışına kadar geçen ortalama süre.
  • Yeni açık oranı: Her sürümde yeni eklenen kritik/yüksek bulgu sayısı (düşmeli).
  • Yanlış pozitif oranı: Geliştiricilerin "yanlış pozitif" olarak işaretlediği bulguların oranı.
  • Kapsama: Güvenlik kontrollerinin çalıştığı depo oranı.

Shift-left, shift-right'ı ortadan kaldırmaz

Sola kaydırmak, üretimde test yapmayı gereksiz kılmaz. Çalışma zamanında izleme, WAF, periyodik sızma testleri ve hata ödül programları, geliştirme aşamasında kaçan açıkları yakalamaya devam eder. İdeal model, her iki yönde de kontrol içerir.

Sonuç

Shift-left'in başarısı, güvenliğin geliştiriciye yük değil, işini iyi yapmasına yardım eden bir araç olarak konumlanmasına bağlıdır. Doğru araç, doğru eşik ve doğru kültürle geliştirici ile güvenlik ekibi aynı hedefe yürür. Yazılım geliştirme sürecinize güvenlik kontrolleri eklemek veya mevcut kodunuzun güvenlik incelemesi için yazılım geliştirme hizmetimize göz atabilirsiniz.

  • #shift left
  • #devsecops
  • #SAST
  • #DAST
  • #CI/CD
  • #güvenli yazılım geliştirme

Sistemleriniz gerçekten güvende mi?

Ücretsiz ön görüşme için bugün yazın. İhtiyacınızı birlikte değerlendirelim.

Teklif Al

İlgili yazılar