Kod Analizi (SAST/DAST) & Güvenli Geliştirme
SAST kaynak kodu, DAST çalışan uygulamayı, SCA ise açık kaynak bağımlılıkları tarayan üç tamamlayıcı yöntemi CI/CD hattınıza entegre ederek güvenlik açıklarını üretime çıkmadan yakalayan güvenli yazılım geliştirme (DevSecOps) çözümü.
Kamu ve özel sektör yazılım ihalelerinde giderek daha sık bir madde görülüyor: teslim edilen yazılımın kaynak kod düzeyinde güvenlik denetiminden geçmesi. Bu sayfa, uygulama güvenliğini (AppSec) bir ürün alımı ya da tedarikçi şartnamesi olarak planlayan bilgi işlem, geliştirme ve güvenlik ekipleri için yöntemleri, kıyas tablosunu ve şartname maddelerini açıklar.
Çözüm neyi kapsar?
Uygulama güvenliği tek bir araçla değil, birbirini tamamlayan tarama yöntemleriyle kurulur. Kod yazılırken, uygulama çalışırken ve üçüncü parti bileşenler eklenirken farklı açık sınıfları ortaya çıkar; her birini farklı bir yöntem yakalar:
- SAST (Statik Uygulama Güvenlik Testi): Kaynak kodu veya byte kodu çalıştırmadan analiz eder; SQL enjeksiyonu, XSS, sabit kodlanmış parola (hardcoded secret) ve güvensiz kriptografi gibi kod kaynaklı zafiyetleri erken yakalar.
- DAST (Dinamik Uygulama Güvenlik Testi): Çalışan uygulamaya dışarıdan saldırı simüle eder; kimlik doğrulama zafiyetleri, oturum yönetimi ve konfigürasyon hatalarını gerçek çalışma koşullarında bulur.
- SCA (Yazılım Bileşen Analizi): Açık kaynak bağımlılıkları CVE ve lisans veritabanlarıyla eşleştirir; Log4Shell benzeri bilinen açıkları ve lisans uyum riskini raporlar.
- IAST ve secret tarama: Uygulama içine yerleşen ajanla test sırasında doğrulanmış (exploitable) açıkları izler; ayrıca depoya sızan API anahtarı ve parolaları yakalar.
Bu yöntemler bir DevSecOps hattında birleşir: bulgular tek panelde toplanır, geliştiriciye IDE ve pull request içinde geri bildirim olarak döner, kalite kapısı (quality gate) eşiği aşıldığında derleme durdurulur.
SAST, DAST, SCA ve IAST: yöntem karşılaştırması
| Yöntem | Nasıl çalışır | Ne bulur | CI/CD aşaması | Zayıf yönü |
|---|---|---|---|---|
| SAST | Kaynak/byte kodu çalıştırmadan tarar (beyaz kutu) | Enjeksiyon, XSS kaynağı, hardcoded secret, güvensiz kripto | Commit / PR, build | Yüksek yanlış pozitif; çalışma zamanını görmez |
| DAST | Çalışan uygulamaya saldırı simüle eder (kara kutu) | Kimlik doğrulama, oturum, konfigürasyon hataları | Staging / test | Kaynak koda inemez; kapsama bağlı; yavaş |
| SCA | Bağımlılıkları CVE / lisans veritabanıyla eşler | Bilinen açıklı kütüphaneler, lisans riski | Commit, build | Yalnızca bilinen açıklar; özel kodu denetlemez |
| IAST | Uygulama içi ajan test sırasında izler | Doğrulanmış (exploitable) açıklar, düşük gürültü | Test / QA | Test kapsamına bağlı; dil/ajan desteği sınırlı |
OWASP, CWE ve standart çerçeveler
Nesnel bir şartname tanınmış zafiyet taksonomilerine dayanmalıdır. OWASP Top 10 en yaygın web uygulama risklerini; OWASP ASVS (Application Security Verification Standard) doğrulanabilir güvenlik gereksinimlerini tanımlar. CWE (Common Weakness Enumeration) ve CWE/SANS Top 25zafiyet türlerini standart bir sözlükle numaralandırır — bir SAST aracının hangi CWE sınıflarını kapsadığını sormak, ürünleri objektif kıyaslamanın en pratik yoludur. Süreç tarafında NIST SSDF (SP 800-218 Güvenli Yazılım Geliştirme Çerçevesi), ISO/IEC 27001 ve kart verisi işleyen kurumlar için PCI DSS kaynak kod denetimini bir kontrol maddesi olarak zorunlu kılar.
CI/CD entegrasyonu ve false-positive yönetimi
Güvenlik testinin değeri, ne kadar erken çalıştığıyla doğru orantılıdır (shift-left). Bir açığın üretimde giderme maliyeti, geliştirme aşamasında giderme maliyetinin çok üzerindedir — sektör çalışmalarına göre yaklaşık 10–100 kat (örnek değer). Bu yüzden SAST ve SCA taramaları her commit/pull request'te, kapsamlı DAST taraması ise gecelik veya sürüm öncesi çalıştırılır.
Statik analizin en büyük operasyonel riski yanlış pozitif (false-positive) selidir; gürültülü bir araç geliştiricinin güvenini hızla kaybeder. Bulgu kalitesini basit bir oranla ölçebilirsiniz:
Sinyal / Gürültü = Doğrulanmış bulgu (TP) ÷ Toplam uyarı (TP + FP)
Pratik önlemler: mevcut açıkları baseline alıp yalnızca yeni eklenen kodu bloklamak (artımlı / diff-aware tarama), kural setini dile ve çerçeveye göre özelleştirmek, IAST ile bulguları çalışma zamanında doğrulamak. Kalite kapısını yalnızca yeni ve yüksek önem dereceli bulgularda bloklayıcı yapmak, hattı yavaşlatmadan riski kontrol eder:
| Önem derecesi | Örnek eşik / SLA | Aksiyon |
|---|---|---|
| Kritik / Yüksek (yeni) | 0 tolerans | Derlemeyi durdur (bloklar) |
| Orta | ör. 30 gün | Uyarı + kayıt/ticket, SLA içinde gider |
| Düşük / Bilgi | Periyodik | Kaydet, sürüm gözden geçirmesinde ele al |
Teknik şartnamede dikkat edilecekler
- Ürün adı yerine yetenek + standart: kapsanan diller/çerçeveler, OWASP Top 10 ve CWE Top 25 karşılığı, desteklenen tarama türleri (SAST + DAST + SCA).
- Veri sahipliği ve dışa aktarım: bulguların standart SARIF formatında dışa aktarılabilmesi şart koşulmalı — araç değiştirildiğinde geçmiş verinin taşınabilmesi vendor lock-in'i önler.
- Kaynak kod gizliliği: kaynak kodun buluta çıkması hassas kurumlarda risklidir; on-prem / self-hosted seçenek, KVKK ve gerekli yerlerde 5651 uyumu (kod ve log'un yurt içinde tutulması) aranmalı.
- Entegrasyon: CI/CD (Jenkins, GitLab, GitHub Actions, Azure DevOps), IDE eklentileri ve issue takip (Jira) entegrasyonu; REST API açıklığı.
- SLA / metrikler: yanlış pozitif oranı, tarama süresi, kural/imza güncelleme sıklığı ve zafiyet giderme süresi (MTTR) raporlanabilmeli.
Seçim kriterleri
- Dil ve çerçeve kapsamı: yığınınızdaki tüm diller (ör. Java, C#, JavaScript/TypeScript, Python, Go) desteklenmeli.
- Doğruluk: düşük yanlış pozitif, yüksek gerçek pozitif; mümkünse bir pilot repoda kıyas taraması yapın.
- Geliştirici deneyimi: IDE ve PR içi geri bildirim, otomatik düzeltme önerileri; aracı güvenlik ekibi değil geliştirici tüketir.
- Raporlama ve uyum: OWASP / PCI / ISO haritalı yönetici raporları ve denetim izi.
- Dağıtım ve ölçek: on-prem / bulut seçeneği, artımlı tarama, çok sayıda repo için ölçeklenme.
- Açık kaynak mı, ticari mi: SonarQube, Semgrep, OWASP ZAP, Trivy ve OWASP Dependency-Check güçlü başlangıç noktalarıdır; ticari ürünler genelde daha geniş dil kapsamı, düşük gürültü ve kurumsal destekle ayrışır.
Mevcut geliştirme hattınızı ve teknoloji yığınınızı birlikte değerlendirip, önceliklendirilmiş bir AppSec yol haritası ve şartname taslağı çıkaralım. İhtiyacınızı aşağıdaki formdan iletmeniz yeterli.
Merak edilenler
SAST mı, DAST mı almalıyım — hangisi daha iyi?
İkisi rakip değil, tamamlayıcıdır. SAST kodu içeriden (beyaz kutu) tarayıp açığın satırını gösterir ama çalışma zamanı ve konfigürasyon hatalarını göremez; DAST uygulamayı dışarıdan (kara kutu) test eder ama kaynak koda inemez. Bilinen açıklı kütüphaneler için SCA da şarttır. Olgun bir program üçünü birden CI/CD hattında çalıştırır.
Yanlış pozitif (false-positive) seli araçların değerini düşürüyor; nasıl yönetilir?
Mevcut bulguları baseline alıp yalnızca yeni eklenen kodu bloklayan artımlı (diff-aware) tarama, kural setini dile ve çerçeveye göre özelleştirme ve IAST ile bulguları çalışma zamanında doğrulama en etkili yöntemlerdir. Kalite kapısını (quality gate) sadece yeni ve yüksek önem dereceli bulgularda bloklayıcı yapmak, geliştiricinin araca güvenini korur.
SAST/DAST taramaları CI/CD hattımı yavaşlatır mı?
Doğru kurgulandığında hayır. Hızlı ve artımlı SAST/SCA taramaları her pull request'te saniyeler-dakikalar içinde çalışır; kapsamlı ve daha yavaş DAST taraması ise gecelik ya da sürüm öncesi ayrı bir aşamada koşturulur. Böylece geliştirici akışı bloklanmadan risk kontrol altında tutulur.
Açık kaynak araçlar (SonarQube, OWASP ZAP, Semgrep) yeterli mi, ticari ürün şart mı?
Açık kaynak araçlar çoğu ekip için güçlü bir başlangıçtır ve olgun bir hat kurmaya yeter. Ticari ürünler genellikle daha geniş dil/çerçeve kapsamı, daha düşük yanlış pozitif oranı, merkezi raporlama-uyum modülleri ve kurumsal SLA desteğiyle ayrışır. Karar; yığın çeşitliliği, ekip olgunluğu, mevzuat ve bütçeye bağlıdır.
Kurumunuza özel çözümü konuşalım.
İhtiyacınızı yazın; yapay zeka, veri analitiği ve siber güvenlik çözümlerini değerlendirip 1 iş günü içinde dönelim. Aradığınız yoksa talep üzerine geliştiririz.
Talep Oluştur