XML
XML Nedir?
XML, içerik türü XML olan istek gövdelerine uygulanan denetimleri gösterir. Sekme iki katmandan oluşur: üstte tüm XML içeriğine uygulanan ortak kural (common rule), altta belirli eleman veya attribute'lara özel kuralların listelendiği değişken tablosu (argument rules).
XML Gövdesi Nedir?
XML denetimleri, gövdesi olan ve içerik türü XML'e işaret eden (application/xml, text/xml ile +xml son ekli türler) isteklerde çalışır. Gövde çözümlenir ve elemanlar ile attribute'lar ağaç yapısında değerlendirilir: adlar, iç içe seviyeler için . ile birleşen noktalı yollarla anılır, attribute'lar elemanın altındaki _attr düğümüyle temsil edilir (örneğin user elemanının type attribute'u user._attr.type yoluyla). Ölçümler UTF-8 bayt cinsinden yapılır; XML'de tüm değerler metin olduğundan değer denetimleri hem eleman içeriklerine hem attribute değerlerine uygulanır. XML yorumları ve işleme komutları içerik olarak değerlendirilmez. Bu sekmedeki denetimlerin her biri, gövdenin belirli bir öğesini hedefler:
Örnek gövde:
<user type="admin">
<name>john</name>
<address>
<city>london</city>
</address>
</user>| Öğe | Örnekteki karşılığı | İlgili denetimler |
|---|---|---|
| Eleman ve attribute adları | user, name, address, city, type | XML Key Length |
| Adların noktalı yolları | user.name, user.address.city, user._attr.type | Allowed XML Keys, değişken kuralları |
| Metin değerler | john, london ve attribute değeri admin | XML Value Length, XML Value Pattern, OWASP Check |
| Değer (yaprak) sayısı | 3 | XML Key Count |
| İç içe derinlik | En derin değer olan london için 3; attribute değerleri _attr düğümü nedeniyle bir seviye daha derin sayılır | XML Depth |
Ekrana Erişim
- Page Types listesinde kurala tıklanır; kuralın detay paneli sağda açılır.
- Panelin sekme şeridinden XML sekmesine tıklanır.
Panelin başlık öğeleri ve sekme şeridinin davranışı için bkz. Path. Tablodaki değer gösterimleri de Path sekmesindekiyle aynı biçimi kullanır: kısıt yoksa No Restriction, tek yönlü kısıtlar ≤ n / ≥ n, aralıklar [a - b], açık/kapalı alanlar ✓ / - olarak görünür.
Detay Paneli - XML Sekmesi
Devralma ve Rule Source
Kural kendi XML denetimini tanımlamamışsa değerler, kural eşleşme önceliğine göre path'e uyan glob kuraldan veya Any Paths kuralından devralınır; tablonun sonundaki Rule Source satırı, denetimlerin geldiği kuralın path'ini gösterir (örneğin Any Paths). Kural kendi XML denetimini tanımlıyorsa Rule Source satırı bulunmaz.
Add Common Rule for XML Ekranı
Tablonun üzerindeki yeşil artı ikonlu Add common rule for Xml butonuna tıklandığında, kurala kendi XML ortak denetimini tanımlayan form açılır; kayıtla birlikte devralma o kural için sona erer. Kural kendi XML denetimine zaten sahipse aynı buton, kalem ikonlu Edit common rule for Xml (formu mevcut değerlerle açar) ve Delete common rule for Xml (ortak kuralı onay sorusu sormadan kaldırır) olarak görünür. Ekleme formu boş açılmaz; Any Paths kuralının ilgili denetim değerleriyle önceden doldurulmuş gelir. Any Paths kuralının kendisinde ise silme butonu bulunmaz: catch-all kuralın ortak denetimi kaldırılamaz.
Bu ekran aynı zamanda düzenleme ekranıdır: ortak denetim ister elle eklenmiş ister öğrenmeyle oluşturulmuş olsun, Edit common rule for Xml butonuyla açılan form aşağıdaki alanların aynısını kuralın mevcut değerleriyle gösterir.
Add Common Rule for XML Ekranı
INFO
Virtual Host Group
Denetimin ekleneceği host grubu salt-okunur olarak gösterilir; panelin hangi grubun Page Types ekranından açıldığına göre belirlenir ve formdan değiştirilemez.
INFO
Path
Denetimin ekleneceği kuralın path'i gösterilir; form, detay paneli hangi kural için açıldıysa o kurala bağlıdır.
INFO
Area
Denetimin isteğin hangi bölümüne uygulandığını gösterir. Alan, formun açıldığı sekmeye kilitlidir: form XML sekmesinden açıldığında Xml olarak gelir ve değiştirilemez.
INFO
Argument Name
Denetimin kapsamını gösterir. Ortak kural formunda bu alan Any Arguments olarak kilitlidir ve alanlar tüm XML içeriğine uygulanır; belirli bir eleman veya attribute'a özel kural ise Add Argument Rule for XML ekranından tanımlanır. Ad, noktalı tam yol olarak yazılır: eleman için user.name, attribute değeri için user._attr.type biçiminde.
Bir yolun kendi değişken kuralı varsa, o yolun değer denetimleri (XML Value Length, XML Value Pattern, OWASP Check, Detailed Log) tümüyle bu kuraldan alınır; ortak kuralın değer denetimleri o yola artık uygulanmaz. Bölüm geneli denetimler (XML Key Length, XML Key Count, XML Depth, Allowed XML Keys) ise uygulanmaya devam eder. Bir yola özel kural tanımlamak, o yolu Allowed XML Keys listesine kendiliğinden eklemez.
INFO
XML Key Length
Gövdedeki eleman ve attribute adlarının uzunluk kısıtı tanımlanır; her farklı ad UTF-8 bayt cinsinden bir kez ölçülür:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Uzunluk kısıtı uygulanmaz. |
| Less Than or Equal To | Uzunluk, girilen değere eşit veya altında olmalıdır. |
| Equals To | Uzunluk, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Uzunluk, girilen değere eşit veya üstünde olmalıdır. |
| Range | Uzunluk, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıta uymayan her ad, Structure Limits kategorisinde XML Key Length ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
XML Key Count
Gövdedeki değer (yaprak) sayısının kısıtı tanımlanır: sayılan şey eleman adları değil, ağacın ucundaki metin değerlerdir (eleman içerikleri ve attribute değerleri). Tekrar eden kardeş elemanların her metni ayrı sayılır; içeriği olmayan boş elemanlar sayıma girmez:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Sayı kısıtı uygulanmaz. |
| Less Than or Equal To | Değer sayısı, girilen değere eşit veya altında olmalıdır. |
| Equals To | Değer sayısı, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Değer sayısı, girilen değere eşit veya üstünde olmalıdır. |
| Range | Değer sayısı, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıta uymayan istek, Structure Limits kategorisinde XML Key Count ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
Block All XML Contents
İşaretlendiğinde, içerik türü XML olan ve gövde taşıyan her istek, gövde çözümlenmeden Structure Policies kategorisinde Block All XML Contents ihlali olarak puanlanır. XML gövde kabul etmeyen path'ler için kullanılır.
INFO
Block Invalid XML Contents
İşaretlendiğinde, XML olarak çözümlenemeyen gövdeler (dengesiz veya eşleşmeyen etiketler, bozuk sözdizimi) Content Integrity kategorisinde Block Invalid XML Contents ihlali olarak puanlanır. İşaretli değilken çözümlenemeyen gövde denetimsiz kalmaz; ham içerik olarak RAW imza taramasından geçirilir.
INFO
XML Depth
Gövdenin iç içe derinlik kısıtı tanımlanır; değerin çevresindeki her eleman katmanı bir seviye sayılır ve attribute değerleri, _attr düğümü nedeniyle bulundukları elemandan bir seviye daha derindir:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Derinlik kısıtı uygulanmaz. |
| Less Than or Equal To | Derinlik, girilen değere eşit veya altında olmalıdır. |
| Equals To | Derinlik, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Derinlik, girilen değere eşit veya üstünde olmalıdır. |
| Range | Derinlik, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıta uymayan istek, Structure Limits kategorisinde XML Depth ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
Allowed XML Keys
İzin verilen yolların listesi tanımlanır (pozitif liste). Adlar noktalı tam yol olarak, her derinlik için . kullanılarak girilir ve büyük/küçük harfe duyarlı karşılaştırılır. Liste, yalnızca değer taşıyan yolları değil kapsayıcı yolları da içermelidir: örnekteki gövde için ara eleman yolları (user, user.address) da listelenmelidir; attribute taşıyan elemanlar için ayrıca hem _attr kapsayıcısının (user._attr) hem attribute yolunun (user._attr.type) listede bulunması gerekir. Alan, No Restriction konumundayken tüm yollara izin verilir; kısıt açıldığında listede olmayan her farklı yol, Structure Policies kategorisinde Allowed XML Keys ihlali olarak puanlanır ve saldırı kaydına düşer.
XML için zorunlu anahtar listesi bulunmaz; Query ve Form bölümlerindeki Required alanının XML'de karşılığı yoktur. Bir yola özel değişken kuralı tanımlamak, o yolu bu listeye kendiliğinden eklemez.
INFO
XML Value Length
Metin değerlerin uzunluk kısıtı tanımlanır. Kısıt, her değere (eleman içerikleri ve attribute değerleri) ayrı ayrı, UTF-8 bayt cinsinden uygulanır:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Uzunluk kısıtı uygulanmaz. |
| Less Than or Equal To | Değer uzunluğu, girilen değere eşit veya altında olmalıdır. |
| Equals To | Değer uzunluğu, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Değer uzunluğu, girilen değere eşit veya üstünde olmalıdır. |
| Range | Değer uzunluğu, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıtı aşan her değer, Structure Limits kategorisinde XML Value Length ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
OWASP Check Varsayılan: İşaretli
İşaretlendiğinde, çözümlenen gövdedeki her eleman ve attribute adı ile her değer ayrı ayrı OWASP imza taramasına tabi tutulur; XML için varsayılan olarak işaretlidir. İmza isabetleri, yapısal ihlallerden farklı olarak kendi puanlarıyla saldırı puanına birikerek katılır. Taramada vService'in OWASP Rules ekranında etkin olan imza seti kullanılır; imzaların dökümü için bkz. Signature & Rule Library.
OWASP Exclusions
Kutu işaretlendiğinde formda beliren bu alanla, taramadan hariç tutulacak OWASP kuralları çoklu seçimle belirlenir; kutu işaretli değilken alan görünmez, seçim yapılmadığında alanda Nothing chosen yazar. İstisna tanımlandığında, detay panelindeki OWASP Check satırında ✓ işaretinin yanında istisna sayısı gösterilir.
INFO
Detailed Log Varsayılan: İşaretli
İmza (OWASP) isabetlerinin günlük ayrıntısını yönetir; varsayılan olarak işaretlidir. Açıkken Event Logs kaydında eşleşen içerik, çevresindeki bağlamla birlikte gösterilir; kapalıyken kayıt yine düşer ancak içerik yerine Detailed log disabled ibaresi görünür. Yapısal ihlallerin özet bilgisi bu ayardan bağımsız olarak her zaman yazılır.
INFO
XML Value Pattern
Metin değerlerin uyması gereken düzenli ifade (regex) deseni tanımlanır. Denetim pozitiftir: değer desene uymadığında, Structure Policies kategorisinde XML Value Pattern ihlali üretilir ve saldırı kaydında değerin kendisi görünür. Desen, değerin herhangi bir yerinde aranır; değerin tamamının eşleşmesi isteniyorsa desen ^ ve $ ile sınırlandırılmalıdır. Alanın yanındaki aA butonuyla eşleştirme büyük/küçük harf duyarsız yapılabilir; bu seçenek detay panelinde desenin yanında (-i) eki olarak görünür. Desen tanımlanmazsa değer içeriğine desen denetimi uygulanmaz.
INFO
Add
Add butonuna tıklanarak ortak kural ekleme işlemi tamamlanır; buton, formda hata kalmadığında etkinleşir. Ek bir onay penceresi veya dağıtım (deploy) adımı yoktur; WAF yapılandırması otomatik olarak yeniden üretilip uygulanır ve paneldeki değerler anında güncellenir.
Mod davranışı ve puanlama
Bu sekmedeki yapı denetimleri yalnızca Blocking ve Monitor modlarında çalışır; Learning modunda çalıştırılmaz, bunun yerine gözlenen trafikten kısıt önerileri öğrenilir. Yapısal ihlaller yüksek puanlıdır; varsayılan engelleme eşiğinde tek bir ihlal, Blocking modunda isteğin engellenmesi için yeterlidir (Monitor modunda saldırı olarak raporlanır ancak istek geçirilir). OWASP imza isabetleri ise kendi puanlarıyla birikerek eşiğe ulaşır.
Tamponu aşan gövdeler
Gövde denetim tamponuna sığmayacak kadar büyük olduğunda XML denetimleri çalıştırılamaz; bu durumda davranışı RAW sekmesindeki Block Unparsed Contents ayarı belirler.
Add Argument Rule for XML Ekranı
Ortak kuralın altındaki Argument tablosu, belirli eleman veya attribute yollarına özel değişken kurallarını listeler; tablonun arama kutusuyla yol üzerinden filtreleme yapılabilir. Kuralın kendi tanımladığı değişken kuralları kalın, devralınanlar italik gösterilir. Tablonun üzerindeki yeşil artı ikonlu Add argument rule for Xml butonuna tıklandığında, tek bir yola özel denetim tanımlayan form açılır.
Tablodaki bir satıra tıklandığında altında değişken kuralının detayı açılır; kuralın kendi değişken kuralında kalem ikonlu Edit (formu mevcut değerlerle açar) ve çöp kutusu ikonlu Delete (değişken kuralını onay sorusu sormadan kaldırır) butonları görünür. Devralınan satırlarda bu butonlar bulunmaz; devralınan kural yalnızca kaynağı olan kuraldan düzenlenebilir.
Path'e özel kurallarda ekleme formu boş açılmaz; denetim alanları Any Paths kuralının ortak XML denetim değerleriyle önceden doldurulmuş gelir. Any Paths kuralının kendisinde ise form, alan varsayılanlarıyla açılır. Bu ekran aynı zamanda düzenleme ekranıdır: Edit butonuyla açılan form aşağıdaki alanların aynısını kuralın mevcut değerleriyle gösterir; düzenlemede, ekleme formundan farklı olarak Argument Name alanı da kilitlenir; kuralın hangi yola bağlı olduğu sonradan değiştirilemez. Query ve Header'daki tekrar sınırı alanının (Value Count) XML karşılığı yoktur; formda bu alan bulunmaz.
Add Argument Rule for XML Ekranı
INFO
Virtual Host Group
Denetimin ekleneceği host grubu salt-okunur olarak gösterilir; panelin hangi grubun Page Types ekranından açıldığına göre belirlenir ve formdan değiştirilemez.
INFO
Path
Denetimin ekleneceği kuralın path'i gösterilir; form, detay paneli hangi kural için açıldıysa o kurala bağlıdır.
INFO
Area
Denetimin isteğin hangi bölümüne uygulandığını gösterir. Alan, formun açıldığı sekmeye kilitlidir: form XML sekmesinden açıldığında Xml olarak gelir ve değiştirilemez.
INFO
Argument Name
Kuralın bağlanacağı yol tanımlanır. Kapsam seçici bu formda One Argument olarak kilitlidir; yol, yanındaki metin kutusuna girilir ve boş bırakılamaz (boş bırakılırsa Enter argument name hatası görünür). Yol, iç içe seviyeler için . ile birleşen noktalı tam yol olarak yazılır ve büyük/küçük harfe duyarlı, birebir eşleştirilir: eleman içeriği için user.name, attribute değeri için user._attr.type biçimi kullanılır; yalnızca son parçayı içeren bir giriş (name), iç içe elemanı yakalamaz. Tekrar eden elemanlar tek yol altında toplandığından, user.roles.item yoluna bağlı kural tekrar eden her item elemanına uygulanır.
Aynı yola sahip ikinci bir değişken kuralı eklenemez; denemede part collision hatası döner. Düzenleme formunda bu alan değiştirilemez; kural başka bir yola taşınmak isteniyorsa silinip yeniden eklenmelidir.
INFO
XML Value Length
Yolun metin değerlerinin uzunluk kısıtı tanımlanır. Kısıt, her değere (eleman içeriği veya attribute değeri) ayrı ayrı, UTF-8 bayt cinsinden uygulanır:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Uzunluk kısıtı uygulanmaz. |
| Less Than or Equal To | Değer uzunluğu, girilen değere eşit veya altında olmalıdır. |
| Equals To | Değer uzunluğu, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Değer uzunluğu, girilen değere eşit veya üstünde olmalıdır. |
| Range | Değer uzunluğu, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıtı aşan her değer, Structure Limits kategorisinde XML Value Length ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
OWASP Check Varsayılan: İşaretli
İşaretlendiğinde yolun adı ve her değeri ayrı ayrı OWASP imza taramasına tabi tutulur; varsayılan olarak işaretlidir. Kutu kaldırıldığında yol, eleman veya attribute adı ve değerleriyle birlikte imza taramasından tümüyle çıkar; sık yanlış pozitif üreten bir alanı taramadan muaf tutmanın yolu budur. Taramada vService'in OWASP Rules ekranında etkin olan imza seti kullanılır; imzaların dökümü için bkz. Signature & Rule Library.
OWASP Exclusions
Kutu işaretlendiğinde formda beliren bu alanla, taramadan hariç tutulacak OWASP kuralları çoklu seçimle belirlenir; kutu işaretli değilken alan görünmez, seçim yapılmadığında alanda Nothing chosen yazar. İstisnalar yalnızca bu yolun taramasına uygulanır; diğer yollar ortak kuralın istisna listesini kullanmaya devam eder.
INFO
Detailed Log Varsayılan: İşaretli
İmza (OWASP) isabetlerinin günlük ayrıntısını yönetir; varsayılan olarak işaretlidir. Açıkken Event Logs kaydında eşleşen içerik, çevresindeki bağlamla birlikte gösterilir; kapalıyken kayıt yine düşer ancak içerik yerine Detailed log disabled ibaresi görünür. Yapısal ihlallerin özet bilgisi bu ayardan bağımsız olarak her zaman yazılır.
INFO
XML Value Pattern
Yolun metin değerlerinin uyması gereken düzenli ifade (regex) deseni tanımlanır. Denetim pozitiftir: değer desene uymadığında, Structure Policies kategorisinde XML Value Pattern ihlali üretilir ve saldırı kaydında değerin kendisi görünür. Desen, değerin herhangi bir yerinde aranır; değerin tamamının eşleşmesi isteniyorsa desen ^ ve $ ile sınırlandırılmalıdır. Alanın yanındaki aA butonuyla eşleştirme büyük/küçük harf duyarsız yapılabilir; bu seçenek detay panelinde desenin yanında (-i) eki olarak görünür. Desen tanımlanmazsa değer içeriğine desen denetimi uygulanmaz.
INFO
Add
Add butonuna tıklanarak değişken kuralı ekleme işlemi tamamlanır; buton, formda hata kalmadığında etkinleşir. Ek bir onay penceresi veya dağıtım (deploy) adımı yoktur; WAF yapılandırması otomatik olarak yeniden üretilip uygulanır ve tablodaki değerler anında güncellenir.
Boş alan, ortak kuraldan devralma anlamına gelmez
Değişken kuralı kaydedildiğinde, yolun değer denetimleri tümüyle bu kuraldan alınır; ortak kuralın değer denetimleri o yola artık uygulanmaz. Formdaki ön-dolum yalnızca bir başlangıç kolaylığıdır: kayıttan sonra alanlar ortak kuraldan bağımsızdır ve boş bırakılan bir alan (örneğin XML Value Pattern) ortak kuraldaki değere geri dönmez, o denetim için kısıt yok anlamına gelir. Bölüm geneli denetimler (XML Key Length, XML Key Count, XML Depth, Allowed XML Keys) ise değişken kuralından etkilenmez ve uygulanmaya devam eder; değişken kuralı bir yolu bu denetimlerden veya Allowed XML Keys listesinden muaf tutamaz.
Devralma ve öğrenme
Değişken kuralları da kural eşleşme önceliğine göre devralınır: kural, bir yol için kendi değişken kuralını tanımlamamışsa path'e uyan glob kuralın veya Any Paths kuralının aynı yola sahip değişken kuralı geçerli olur. Devralınan kurallar tabloda italik listelenir; detayında Rule Source satırı, kuralın geldiği path'i gösterir. Kural aynı yol için kendi değişken kuralını tanımladığında devralınan kural o kural için geçersiz kalır.
Header'dan farklı olarak XML denetimleri path bazlı öğrenilir. Öğrenme (Conditional Learning, AI Learning, Teacher ve Event Logs üzerinden öğretme), ihlalin gerçekleştiği yola sahip bir değişken kuralı varsa güncellemeleri o kurala işler; örneğin OWASP Exclusions listesine istisna eklenir veya uzunluk sınırı genişletilir. Yanlış pozitif üreten bir XML Value Pattern ise daraltılmaz, tümüyle temizlenir. Yolun değişken kuralı yoksa değişiklik ortak kurala işlenir; öğrenme kendiliğinden yeni değişken kuralı oluşturmaz.
