Güvenlik Tarayıcılarını Anlamak
DAST ve SAST Nasıl Çalışır
Güvenlik tarayıcıları, uygulamalardaki zafiyetleri tespit eden otomatik araçlardır. İki ana kategoriye ayrılırlar: Dinamik Uygulama Güvenlik Testi (DAST) ve Statik Uygulama Güvenlik Testi (SAST).
Her iki yaklaşım da kapsamlı güvenlik kapsamı için gereklidir, ancak temelde farklı şekillerde çalışırlar ve farklı türde zafiyetleri yakalarlar.
🎯Güvenlik Tarayıcıları Neden Önemli
⚡ Hız ve Ölçek
Otomatik tarayıcılar binlerce saldırı vektörünü dakikalar içinde test edebilir, bu manuel test ile tek başına imkansızdır.
🔄 Sürekli Güvenlik
CI/CD pipeline'larına entegre edilerek zafiyetler production'a ulaşmadan yakalanır.
📊 Kapsamlı Kapsama
DAST runtime zafiyetlerini, SAST kod seviyesindeki sorunları yakalar - birlikte tam kapsama sağlarlar.
💰 Maliyet Etkin
Zafiyetleri geliştirme aşamasında bulmak, production'da düzeltmekten 100 kat daha ucuzdur.
🌐DAST: Dinamik Uygulama Güvenlik Testi
DAST araçları çalışan uygulamaları dışarıdan test eder, bir saldırganın web uygulamanızı nasıl inceleyeceğini simüle eder. Kaynak koduna erişime ihtiyaç duymazlar - bir hacker gibi çalışırlar, kötü niyetli payloadlar göndererek yanıtları analiz ederler.
DAST Nasıl Çalışır: Teknik İş Akışı
1. Tarama / Crawling
Tarayıcı, uygulamanızdaki tüm endpointleri, sayfaları ve işlevleri keşfeder.
- Bir seed URL'den başlar (genellikle ana sayfa)
- Tüm linkleri, formları ve JavaScript ile oluşturulan içeriği takip eder
- URL'lerin, parametrelerin ve giriş noktalarının tam bir site haritasını oluşturur
- Gizli dizinleri ve dosyaları keşfeder (robots.txt, sitemap.xml)
- API endpointlerini ve AJAX çağrılarını tanımlar
- Uygulamanın saldırı yüzeyini haritalandırır
2. Kimlik Doğrulama ve Oturum Yönetimi
Korunan alanları test etmek için oturum açma işlemlerini ve kimlik doğrulamalı oturumları yönetir.
- Kimlik doğrulama akışlarını kaydeder (login, OAuth, SSO)
- Oturum cookie'lerini ve token'ları korur
- Çok adımlı kimlik doğrulamayı yönetir (2FA, test ortamlarında CAPTCHA bypass)
- Oturum zaman aşımı ve çıkış işlevselliğini test eder
- Session fixation ve hijacking zafiyetlerini kontrol eder
- Düzgün oturum geçersiz kılma işlemini doğrular
3. Aktif Zafiyet Taraması
Tarama sırasında keşfedilen her giriş noktasına kötü amaçlı payloadlar gönderir.
- SQL Injection: Özel karakterler, UNION saldırıları, boolean/time-based blind injection ile veritabanı sorgu manipülasyonunu test eder
- Cross-Site Scripting (XSS): Reflection, depolama ve DOM manipülasyonunu test etmek için JavaScript payloadları enjekte eder
- Command Injection: Giriş alanları aracılığıyla OS komut çalıştırmayı test eder
- Path Traversal: ../ dizileri kullanarak web root dışındaki dosyalara erişmeyi dener
- XXE: XML parser'ları external entity injection için test eder
- SSRF: Sunucunun dahili/harici kaynakları istemesini sağlamaya çalışır
- Kimlik Doğrulama Bypass: Kırık kimlik doğrulama ve yetkilendirme için test eder
- CSRF: Eksik anti-CSRF token'ları kontrol eder
4. Yanıt Analizi
Zafiyetlerin var olup olmadığını belirlemek için sunucu yanıtlarını analiz eder.
- HTTP durum kodlarını ve hata mesajlarını kontrol eder
- SQL injection'ı gösteren veritabanı hata mesajlarını arar
- HTML yanıtlarında yansıyan payloadları tespit eder (XSS)
- Blind injection saldırıları için yanıt sürelerini ölçer
- Güvenlik yanlış yapılandırmaları için HTTP header'larını analiz eder
- SSL/TLS sertifikalarını ve cipher suite'leri doğrular
- Yanıtlarda hassas veri açığa çıkmasını kontrol eder
5. Raporlama ve Doğrulama
Detaylı raporlar oluşturur ve false positive'leri azaltır.
- Bulguları şiddete göre kategorize eder (Kritik, Yüksek, Orta, Düşük)
- Her zafiyet için proof-of-concept payloadları sağlar
- Tam istek/yanıt çiftlerini içerir
- Bulguları OWASP Top 10 ve CWE sınıflandırmalarına eşler
- Düzeltme rehberi ve kod örnekleri sunar
- Doğrulamaya ve false positive'leri azaltmaya çalışır
Ana Avantaj: DAST, çalışan uygulamadaki zafiyetleri bulur, konfigürasyon sorunları, sunucu tarafı problemleri ve yalnızca runtime'da ortaya çıkan karmaşık çok adımlı saldırılar dahil.
📝SAST: Statik Uygulama Güvenlik Testi
SAST araçları, uygulamayı çalıştırmadan kaynak kodunu, bytecode'u veya binary'yi analiz eder. Güvenli olmayan kalıplar, tehlikeli fonksiyonlar ve savunmasız kod yollarını arayan bir kod gözden geçirici gibi çalışırlar.
SAST Nasıl Çalışır: Teknik İş Akışı
1. Kaynak Kod Ayrıştırma
Kaynak kodunu okur ve analiz edilebilir yapılara dönüştürür.
- Birden fazla dili destekler (Java, C#, Python, JavaScript, PHP, Ruby, Go, vb.)
- Kodu token'lara ve sözdizimi ağaçlarına ayrıştırır
- Kaynak kod mevcut değilse derlenmiş kodu (bytecode, binary) işler
- Import'ları, include'ları ve bağımlılıkları çözer
- Uygulama yapısının tam bir modelini oluşturur
2. Soyut Sözdizimi Ağacı (AST) Oluşturma
Kodu, mantıksal yapısını temsil eden bir ağaç yapısına dönüştürür.
- Kodu hiyerarşik bir düğüm ağacı olarak temsil eder
- Her düğüm bir yapıyı temsil eder (fonksiyon, döngü, koşul, değişken)
- Basit kalıp eşleştirmenin ötesinde derin semantik analiz sağlar
- Karmaşık kod yolları boyunca veri akışının izlenmesine izin verir
- Fonksiyonlar, sınıflar ve modüller arasındaki ilişkileri korur
3. Veri Akışı Analizi
Verinin kaynaktan hedefe uygulama boyunca nasıl hareket ettiğini izler.
- Kaynaklar: Kullanıcı girdisi (HTTP parametreleri, cookie'ler, dosyalar, veritabanları)
- Hedefler: Tehlikeli fonksiyonlar (SQL sorguları, sistem komutları, eval())
- Veriyi giriş noktasından tehlikeli operasyona kadar izler
- Kullanıcı girdisinin sanitizasyon olmadan hedefe ulaşıp ulaşmadığını tanımlar
- Birden fazla fonksiyon ve dosya boyunca karmaşık akışları işler
- İkinci dereceden zafiyetleri tespit eder (stored XSS, gecikmeli SQL injection)
4. Kontrol Akışı Analizi
Kodun yürütülme sırasını ve olası yürütme yollarını analiz eder.
- Kod boyunca tüm olası yürütme yollarını haritalandırır
- Ölü kod ve erişilemeyen yolları tanımlar
- Kimlik doğrulama bypass'ları ve mantık hatalarını tespit eder
- Operasyonlardan önce eksik güvenlik kontrollerini kontrol eder
- Koşullu dalları ve döngüleri analiz eder
- Race condition'ları ve eşzamanlılık sorunlarını bulur
5. Taint (Kirlenme) Analizi
"Tainted" (güvenilmeyen) veriyi izleyerek kullanımdan önce temizlendiğinden emin olur.
- Tüm kullanıcı girdilerini "tainted" olarak işaretler
- Tainted veriyi değişkenler, fonksiyonlar ve nesneler boyunca izler
- Taint'i kaldıran sanitizasyon fonksiyonlarını tanımlar
- Tainted veri tehlikeli bir operasyona ulaştığında bayrak koyar
- Yetersiz veya yanlış sanitizasyonu tespit eder
- Kodlamalar ve dönüşümler yoluyla karmaşık yayılımı işler
6. Güvenlik Kalıp Eşleştirme
Bilinen güvenli olmayan kodlama kalıplarını ve anti-kalıpları tanımlar.
- Hardcoded kimlik bilgileri ve API key'leri
- Zayıf kriptografik algoritmaların kullanımı (MD5, SHA1, DES)
- Güvensiz rastgele sayı üretimi
- Tehlikeli fonksiyonlar (eval, exec, system, unserialize)
- Eksik girdi doğrulama veya çıktı kodlama
- Güvensiz deserialization
- Eksik güvenlik header'ları ve konfigürasyonlar
7. Raporlama ve Önceliklendirme
Kesin kod konumları ile işlem yapılabilir raporlar oluşturur.
- Tam dosya, satır numarası ve kod parçacığını gösterir
- Kaynaktan hedefe veri akışı yolunu sağlar
- Zafiyet türü ve şiddete göre kategorize eder
- Düzeltme kod örnekleri içerir
- OWASP Top 10, CWE ve uyumluluk standartlarına eşler
- Gerçek zamanlı geri bildirim için IDE'lerle entegre olur
Ana Avantaj: SAST, kod deploy edilmeden önce geliştirme aşamasında zafiyetleri yakalar. DAST ile ulaşılması zor olabilecek kod yollarındaki sorunları bulur ve düzeltmeler için kesin konumlar sağlar.
⚖️DAST vs SAST: Temel Farklar
| Özellik | DAST | SAST |
|---|---|---|
| Test Yaklaşımı | Kara-kutu (dışarıdan-içe) | Beyaz-kutu (içeriden-dışa) |
| Çalışan Uygulama Gerekir | ✅ Evet | ❌ Hayır |
| Kaynak Kod Gerekir | ❌ Hayır | ✅ Evet |
| Ne Zaman Çalıştırılır | QA, Staging, Production | Geliştirme, Pre-commit, CI/CD |
| Hız | Yavaş (saatler) | Hızlı (dakikalar) |
| False Positive | Daha Düşük | Daha Yüksek |
| Runtime Sorunları Bulur | ✅ Evet (config, server) | ❌ Hayır |
| Kesin Kod Satırı Gösterir | ❌ Hayır | ✅ Evet |
| En İyi Olduğu | XSS, SQLi, auth bypass, config | Hardcoded secret, güvensiz crypto, injection |
✅En İyi Uygulamalar: İkisini Birlikte Kullanma
SAST ile Erken Başlayın
SAST'ı IDE'de ve her commit'te çalıştırın. Sorunları commit edilmeden önce yakalayın.
DAST'ı QA/Staging'de Kullanın
Runtime ve konfigürasyon sorunlarını yakalamak için DAST'ı deploy edilmiş ortamlara karşı çalıştırın.
CI/CD'de Otomatikleştirin
Her iki tarayıcıyı da pipeline'ınıza entegre edin. Build'de SAST, deployment sonrası DAST.
Sadece Birine Güvenmeyin
SAST ve DAST farklı zafiyetleri yakalar. Kapsamlı kapsama için ikisini de kullanın.
Doğrulayın ve Önceliklendirin
Kritik bulguları manuel olarak doğrulayın. Önce exploit edilebilir zafiyetlere odaklanın.
Tarayıcılarınızı Ayarlayın
Kimlik doğrulamayı yapılandırın, false positive'leri azaltın ve stack'iniz için kuralları özelleştirin.