SSRF ve bulut metadata (169.254.169.254) erişim denemelerine karşı koruma var mı?
Kısa cevap
Evet, imza düzeyinde. Signature & Rule Library'deki Server-Side Request Forgery kategorisi 140 kural içerir; bunların 19'u bulut metadata servislerini hedefler. Kurallar 169.254.169.254 adresini ve /latest/meta-data yolunu, metadata.google.internal ve Azure metadata adlarını, adresin ondalık (2852039166), onaltılık (0xa9fea9fe) ve URL kodlu yazımlarını, AWS ECS metadata adresini (169.254.170.2) ve iç ağı hedefleyen URL'leri (127.0.0.1, özel ağ blokları, localhost) arar. İmzalar adresi isteğin query, form ve JSON alanlarında, kuralların bir kısmı header, path, XML ve ham gövdede arar. Metadata kurallarının çoğu 8 puanlıdır, Cloud Metadata SSRF kuralı 9 puanlıdır; bu puanlar varsayılan Very Tight koruma düzeyinde tek başına engelleme eşiğini aşar. WAF yalnızca gelen isteği denetler; Kurum Servisinin dışarıya açtığı bağlantıyı görmez, bu bağlantılar ağ katmanında kısıtlanır. Parametresinde meşru olarak iç ağ adresi taşıyan uygulamalarda false positive oluşabilir; bu durumda imza yalnızca ilgili parametre için istisnaya alınır.
Nasıl Çalışır?
SSRF (Server-Side Request Forgery) saldırısında istemci, uygulamanın kendi adına bir adrese istek yapmasını sağlayan bir parametreye (ör. ?url=, {"webhook": "…"}) iç ağ ya da bulut metadata adresi yazar. Bulut ortamlarında 169.254.169.254 gibi metadata adresleri geçici erişim anahtarları döndürebildiği için bu adresler SSRF'nin en sık hedefidir (OWASP SSRF).
WAF bu saldırıyı istek gelirken, parametrede taşınan adres üzerinden yakalar. Aşağıdaki örnek değerler, kütüphanedeki desenlerle denenmiştir:
| Parametredeki değer | Yakalayan kurallardan bazıları | Puan |
|---|---|---|
http://169.254.169.254/latest/meta-data/ | Cloud Metadata Ssrf · Cloud Metadata Service Access · SSRF AWS Metadata Service Access | 8 |
http://metadata.google.internal/computeMetadata/v1/ | Cloud Metadata SSRF | 9 |
http://2852039166/latest/meta-data (ondalık yazım) | SSRF Metadata Service Obfuscated Targeting · Cloud metadata SSRF | 8 |
http://0xa9fea9fe/ (onaltılık yazım) | SSRF Metadata Service Obfuscated Targeting | 8 |
http%3A%2F%2F169.254.169.254%2Flatest (URL kodlu) | Cloud Metadata Ssrf · Cloud metadata SSRF | 8 |
http://169.254.170.2/v2/credentials (AWS ECS) | SSRF AWS ECS Metadata IP | 8 |
http://127.0.0.1:8080/admin | İç ağı hedefleyen SSRF kuralları | 8 |
Her kural yalnızca kendi denetim kapsamındaki alanlarda çalışır: kategorinin kurallarının çoğu query, form ve JSON değerlerini, bir kısmı header, path, XML ve ham gövdeyi tarar (İmzalar isteğin hangi bölümlerinde taranır (Path, Query, Header, JSON, XML, Form ve Raw)?). Bir istekte birden çok kural eşleşirse puanlar toplanır (Bir istekte birden fazla saldırı varsa WAF ilk eşleşmede mi durur, hepsini mi değerlendirir?).
TR7'de SSRF Koruması
- Varsayılan durum: Kategorinin kuralları WAF açıldığında etkindir; ayrı bir ayar gerekmez. 2 puanlı düşük riskli kurallar yalnızca Aggressive koruma düzeyinde yüklenir; metadata kuralları 6, 8 ve 9 puanlı olduğu için her düzeyde yüklenir. Host grubu Blocking modundayken eşleşen istek engellenir, Monitor modunda kaydedilip geçirilir (WAF Mode).
- Kuralları görmek: WAF → Signature & Rule Library ekranında Filter tıklanır; Signature Categories grubunda Server-Side Request Forgery ya da Protected Target Types grubunda Metadata Service seçilir ("Protected Target Types" ne anlama gelir?). Bir vService'te hangi kuralların etkin olduğu o vService'in OWASP Rules ekranında görülür.
- Olayı incelemek: vService'in Event Logs kaydının Attacks sekmesi kural adını, puanı, alanı ve parametre adını gösterir (Bir log kaydının detayında (Summary, Attacks, Request & Location) neler görürüm?).
- Ek imza: Uygulamaya özgü bir hedef adres ya da biçim (ör. uygulamanın kendi iç servis adı) yerleşik desenlerde yoksa global ya da vService düzeyinde özel kural eklenir (Kendi özel kuralımı (regex) nasıl eklerim?).
- False positive: Webhook ya da proxy gibi parametresinde meşru olarak URL taşıyan endpoint'lerde imza yalnızca o parametre için istisnaya alınır (Belirli bir parametrede OWASP taramasını kapatabilir miyim?); imzayı bütün vService'te kapatmak ya da Monitor durumuna almak daha geniş bir alanı etkiler (Bir imzayı tamamen kapatmak mı, OWASP istisnası (exclusion) eklemek mi daha doğru?).
- Giden bağlantı: WAF Kurum Servisinin kendi açtığı bağlantıyı görmez. Kurum Servisinin metadata adresine ve iç ağa erişimi sunucu ya da ağ katmanında (firewall, bulut sağlayıcının metadata erişim ayarları) kısıtlanır.
Sık Karıştırılan Noktalar
- "WAF sunucunun dışarı yaptığı istekleri engeller." WAF yalnızca gelen istekteki adresi denetler; Kurum Servisinin giden bağlantısı ağ katmanında kısıtlanır.
- "Adres değiştirilerek yazılırsa imza yakalamaz." Ondalık, onaltılık ve URL kodlu yazımlar için ayrı kurallar vardır; desen bulunmayan yeni bir yazım için özel kural eklenir.
- "SSRF imzası her URL parametresini engeller." Yüksek puanlı kurallar iç ağ ve metadata hedeflerini arar; genel internet adresi taşıyan bir parametre varsayılan koruma düzeyinde engellenmez. Aggressive düzeyinde 2 puanlı kurallar (ör. HTTPS Scheme Injection) da yüklendiği için URL taşıyan her parametre puan alır.
Dokümantasyonda nasıl yapılır
