Giriş
Microsoft, Dusseldorf adını verdiği açık kaynaklı bir Out-of-Band Application Security Testing (OAST) platformunu yayınladı. Bu araç, uygulama dış sistemlerle etkileşime girdiğinde ortaya çıkan ve geleneksel statik/dinamik analiz yöntemleriyle tespit edilmesi zor olan güvenlik açıklarını otomatik olarak belirlemektedir. Projenin adı, Düsseldorf kelimesindeki harflerin SSRF (Server-Side Request Forgery) kelimesini oluşturması ve umlaut karakterin basitleştirilmesiyle türetilmiştir.
Sorun Tanımı
Günümüzde web uygulamaları genellikle dış sistemlerle (API'ler, veritabanları, üçüncü parti servisler vb.) entegre çalışmaktadır. Bu entegrasyonlar sırasında ortaya çıkan güvenlik açıkları, uygulamanın yalnızca dış sistemlere istek yaptığı sırada tetiklenebilmektedir. Örneğin:
- Server-Side Request Forgery (SSRF): Saldırgan, uygulamanın iç sistemlere erişimini manipüle edebilir.
- Cross-Site Scripting (XSS): Dış kaynaklardan enjekte edilen komut dosyaları, kullanıcıların tarayıcılarında çalışabilir.
- Server-Side Template Injection (SSTI): Kötü niyetli girdiler, sunucu tarafı şablon motorlarında kod yürütülmesine neden olabilir.
- XML External Entity (XXE): XML verilerinin dış varlıkları referans alması, hassas dosyaların okunmasına yol açabilir.
Bu tür açıklar, yalnızca uygulama dış sistemlerle iletişim kurduğunda ortaya çıktığından, geleneksel güvenlik testleri tarafından genellikle gözden kaçırılmaktadır. Microsoft'un geliştirdiği Dusseldorf platformu, bu boşluğu doldurarak özel (out-of-band) saldırı senaryolarını simüle eder ve otomatik olarak tespit eder.
Çözüm: Dusseldorf OAST Platformu
Dusseldorf, açık kaynaklı (MIT License) bir araç olarak geliştirilmiş olup, aşağıdaki özellikleri sunmaktadır:
- Out-of-Band (OAST) Testleri: Uygulamanın dış sistemlerle etkileşimini izleyerek gizli güvenlik açıklarını tespit eder.
- Çoklu Açık Tespiti: SSRF, XSS, SSTI, XXE ve diğer gizli saldırı vektörlerini destekler.
- Özel Domain Kullanımı: Test sırasında kullanılan özel bir domain üzerinden saldırı senaryolarını simüle eder.
- Entegrasyon Kolaylığı: CI/CD pipeline'larına entegre edilebilir ve otomatik testler gerçekleştirebilir.
Temel Bileşenler
Dusseldorf platformu, aşağıdaki bileşenlerden oluşmaktadır:
- OAST Motoru: Uygulamanın dış sistemlerle etkileşimini izleyen ve potansiyel güvenlik açıklarını tespit eden çekirdek bileşen.
- Saldırı Simülatörü: SSRF, XSS, SSTI gibi saldırı senaryolarını otomatik olarak gerçekleştiren modül.
- Raporlama Aracı: Tespit edilen açıkları detaylı raporlar halinde sunan araç.
- Entegrasyon Kütüphaneleri: Farklı programlama dilleri ve framework'lerle uyumlu kütüphaneler.
Kurulum ve Kullanım
Adım 1: Sistem Gereksinimleri
Dusseldorf'un çalışması için aşağıdaki sistem bileşenlerine ihtiyaç vardır:
- İşletim Sistemi: Linux (Ubuntu/Debian/CentOS), macOS veya Windows (WSL önerilir).
- Python: 3.8 veya üzeri sürüm.
- Docker: Uygulamanın izole bir ortamda çalıştırılması için gerekli.
- Git: Projeyi klonlamak için.
Adım 2: Projeyi Klonlama ve Kurulum
Terminalde aşağıdaki komutu çalıştırarak projeyi klonlayın:
git clone https://github.com/Microsoft/Dusseldorf.git cd DusseldorfGerekli bağımlılıkları yüklemek için:
pip install -r requirements.txtDocker konteynerini başlatın:
docker-compose up -d
Adım 3: Temel Konfigürasyon
Dusseldorf'un çalışması için bir özel domain ve dinleyici (listener) yapılandırması gerekmektedir. Bu işlem için aşağıdaki adımları izleyin:
Uygulamanın kullanacağı özel domaini (örn:
oast.example.com) ayarlayın. Bu domain, saldırı senaryolarının simüle edilmesi sırasında kullanılacaktır.Dinleyiciyi yapılandırmak için
config.yamldosyasını düzenleyin:listeners: - type: http host: 0.0.0.0 port: 8080 domain: oast.example.com attacks: - type: ssrf payloads: - http://internal-service.local - http://169.254.169.254 - type: xss payloads: - - "javascript:alert(1)"
Adım 4: Uygulama Testi
Dusseldorf'u bir web uygulamasına karşı test etmek için aşağıdaki adımları izleyin:
Uygulamanın güvenlik testine tabi tutulacak URL'sini belirleyin (örn:
https://target-app.com/api/v1).Dusseldorf'u aşağıdaki komutla çalıştırın:
python dusseldorf.py --target https://target-app.com/api/v1 --config config.yamlTest tamamlandığında, Dusseldorf otomatik olarak bir güvenlik açığı raporu oluşturacaktır. Rapor, aşağıdaki bilgileri içerecektir:
- Tespit edilen güvenlik açıkları ve türleri.
- Açıkların tetiklenme şekli ve ilgili istek/yanıt örnekleri.
- Risk seviyesi ve önerilen düzeltme adımları.
Örnek Senaryo: SSRF Açığının Tespiti
Aşağıda, Dusseldorf kullanarak bir SSRF açığı tespit etmenin adım adım örneği verilmiştir:
Hedef uygulamanın bir API uç noktası olduğunu varsayalım (örn:
https://api.example.com/fetch?url=).Dusseldorf'un
config.yamldosyasına aşağıdaki saldırı senaryosunu ekleyin:attacks: - type: ssrf payloads: - http://internal-service.local - http://169.254.169.254Dusseldorf'u çalıştırın:
python dusseldorf.py --target https://api.example.com/fetch?url=http://oast.example.com --config config.yamlUygulama,
http://oast.example.comadresine istek attığında, Dusseldorf otomatik olarak uygulamanın iç sistemlere erişim sağladığını tespit edecektir. Rapor, aşağıdaki gibi bir çıktı verecektir:SSRF Açığı Tespit Edildi! Açık Türü: Server-Side Request Forgery (SSRF) Tetikleyici URL: https://api.example.com/fetch?url=http://oast.example.com Hedef Sistem: http://internal-service.local Risk Seviyesi: Yüksek Önerilen Düzeltme: Girdi doğrulama ve beyaz listeleme uygulayın.
Entegrasyon ve Otomasyon
Dusseldorf, CI/CD pipeline'larına entegre edilerek otomatik güvenlik testleri gerçekleştirilebilir. Aşağıda, GitHub Actions kullanarak Dusseldorf'un nasıl otomatikleştirileceğine dair bir örnek bulunmaktadır:
GitHub deposunda
.github/workflows/security-test.ymladında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:name: Güvenlik Testi on: push: branches: [ main ] jobs: security-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Dusseldorf Kurulumu run: | git clone https://github.com/Microsoft/Dusseldorf.git cd Dusseldorf pip install -r requirements.txt docker-compose up -d - name: Güvenlik Testi run: | python dusseldorf.py --target https://target-app.com --config config.yaml - name: Raporları Yükle uses: actions/upload-artifact@v2 with: name: security-report path: reports/
Avantajlar ve Sınırlamalar
Avantajlar
- Gizli Açıkların Tespiti: Geleneksel yöntemlerle tespit edilemeyen güvenlik açıklarını otomatik olarak bulur.
- Açık Kaynak: Ücretsiz olarak kullanılabilir ve topluluk tarafından geliştirilmeye açıktır.
- Esneklik: Farklı saldırı vektörlerini destekler ve kolayca genişletilebilir.
- Otomatik Raporlama: Detaylı raporlar sayesinde hızlı düzeltme süreçleri mümkün olur.
Sınırlamalar
- Yanlış Pozitifler: Bazı durumlarda, güvenlik açığı olarak algılanan durumlar aslında normal davranış olabilir.
- Performans Etkisi: Dış sistemlerle yapılan testler, uygulamanın performansını geçici olarak etkileyebilir.
- Desteklenen Saldırı Vektörleri: Şu anda desteklenen saldırı türleri sınırlıdır ve gelecekte genişletilmesi planlanmaktadır.
⚠️ Uyarı: Dusseldorf, yalnızca yetkili sistemler üzerinde kullanılmalıdır. Hedef sistemlerin sahibi olmadığınız durumlarda kullanılması yasal ve etik olmayan sonuçlara yol açabilir. Testler sırasında uygun izinlerin alındığından emin olun.
Sonuç
Microsoft'un açık kaynak olarak yayınladığı Dusseldorf OAST platformu, web uygulamalarında gizli güvenlik açıklarını tespit etmek için güçlü bir araçtır. Geleneksel güvenlik testleriyle tespit edilemeyen SSRF, XSS, SSTI ve XXE gibi saldırı vektörlerini otomatik olarak belirleyerek, geliştiricilerin uygulamalarını daha güvenli hale getirmelerine yardımcı olur. Platformun CI/CD pipeline'larına entegre edilmesi, sürekli güvenlik testlerinin otomatikleştirilmesine olanak tanır. Dusseldorf'un geliştirilmeye devam etmesiyle birlikte, gelecekte daha fazla saldırı vektörünün desteklenmesi beklenmektedir.
Geliştiriciler ve güvenlik uzmanları için değerli bir kaynak olan Dusseldorf, açık kaynak topluluğunun katkılarıyla daha da güçlenecektir. Güvenlik açıklarının erken tespiti, uygulamaların güvenilirliğini artırmak ve veri ihlallerini önlemek için kritik bir adımdır. Microsoft'un bu adımı, siber güvenlik alanında önemli bir katkı olarak değerlendirilmektedir.



