Web uygulaması güvenlik duvarı

Bir web uygulama güvenlik duvarı (veya WAF), bir web uygulamasına giden ve uygulamadan gelen tüm HTTP trafiğini filtreler, inceler ve bloklar. Bir WAF ürününün normal bir güvenlik duvarından farkı, sıradan güvenlik duvarları sunucular arasında bir güvenlik geçidi olarak hizmet verirken, WAF ürününün istediği web uygulamasına ait içeriği filtreleyebilmesidir. HTTP trafiğini inceleyerek, SQL Enjeksiyonu, Siteler Arası Betik Çalıştırma (XSS) ve güvenlik yanlış yapılandırmaları gibi güvenlik zafiyetlerinden kaynaklanan saldırıları engelleyebilmektedir.

Uygulamalardan veya servislerden erişimi, girdiyi ve çıktıyı kontrol eden uygulama güvenlik duvarları, 1990'ların başlarında Gene Spafford, Bill Cheswick ve Marcus Ranum tarafından geliştirilmiştir. Ürünleri büyük ölçüde bir ağ tabanlı güvenlik duvarıydı, ancak birkaç uygulamayı /FTP veya RSH gibi) işleyebiliyordu ve piyasaya DEC tarafından sürüldü. Birkaç yıl içerisinde, başkalarının üzerine tutarlı güvenlik duvarı yazılımı inşa edebilmelerini sağlamak için diğer araştırmacılar tarafından daha da geliştirilmiş ve sanayi standardını yükseltmiştir.

2002 yılında, açık kaynak kodlu ModSecurity WAF teknolojisini daha erişilebilir kılmak ve ticari davalar, maliyet engelleri ve tescilli kural setleri gibi sanayideki engelleri çözmek adına oluşturulmuştur. ModSecurity, OASIS Web Uygulama Güvenliği Teknik Komitesi'nin (WAS TC) açıklık çalışmasına dayanarak temel bir kural seti oluşturmuştur. 2003 yılında, web güvenlik açıklıkları için yollık bir sıralama olan Açık Web Uygulama Güvenliği Projesi (OWASP) Top 10 Listesi aracılığıyla çalışmaları genişletilmiş ve standardize edilmiştir. Bu liste pek çok uyumluluk kavramı için endüstri standardı olmuştur.

Bundan sonra, kredi kartı sahteciliğindeki artışla daha da büyüyen ticaret endüstrisi ile piyasa büyümeye ve gelişmeye devam etmiştir. Şirketlerin kart sahiplerinin verileri üzerindeki kontrolü artırması için oluşan için Kartlı Ödeme Sistemi Veri Güvenliği Standardı'nın (PCI DSS) gelişmesiyle, güvenlik tarafı daha çok düzenlenmiş ve endüstride daha geniş bir ilgi toplamıştır. Forrester'a göre, 2010 itibarıyla WAF piyasası 200 milyon doları aşmıştır.

Bir web uygulamaları güvenlik duvarı, özel olarak web uygulamalarına uygulanan özel bir uygulama güvenlik duvarı çeşididir. Web uygulamalarının önüne yerleştirilir ve kötücül herhangi bir şeyi tespit edecek ve engelleyecek şekilde çift yönlü web tabanlı (HTTP) trafiği analiz eder. OWASP, WAF için şu genel teknik tanımı sağlamaktadır: “teknik açısından uygulamanın kendisine dayanmaksızın web uygulaması düzeyinde bir güvenlik çözümü". 6.6. gereksinim için PCI DSS Bilgi Eki'ne göre, WAF "bir web uygulaması ve son kullanıcı istemci arasında yerleştirilmiş bir güvenlik politikası uygulayıcısı. Bu fonksiyonalite, yazılım veya donanım üzerinden yani bir uygulama cihazı ile veya yaygın bir işletim sistemi üzerinde çalışan sıradan bir sunucu ile uygulanabilir. Tek başına bir cihaz olabileceği gibi diğer ağ bileşenleriyle de entegre edilebilmektedir." şeklinde tanımlanmaktadır. Diğer bir deyişle, WAF, web uygulamalarındaki açıklıkların harici tehditler tarafından istismar edilmesini engelleyen sanal veya fiziksel uygulama olabilmektedir. Bu açıklıklar, uygulamanın kendisi eski olduğu için veya tasarım olarak yetersiz bir şekilde kodlandığı için olabilmektedir. WAF, bu sorunları özel kural setlerinin ve politikaların yapılandırılmasıyla çözmektedir.

Daha önceden bilinmeyen açıklıklar, sızma testleri veya açıklık taramaları sayesinde tespit edilebilmektedir. Web uygulama güvenlik tarayıcısı olarak da bilinen, bir web uygulamaları zafiyet tarama aracı, SAMATE NIST 500-269'da şu şekilde tanımlanmıştır: "web uygulamalarını olası güvenlik zafiyetleri için inceleyen otomatize bir program. Web uygulamalarına özgü açıklıklar için aramaya ilave olarak, araçlar yazılım kodlama hatalarına da bakabilmektedir.” Açıklıkların giderilmesi genellikle çözüm aşaması olarak anılmaktadır. Kod düzeltmeleri uygulama üzerinde yapılabilmektedir, ancak  genelde daha hızlı bir çözüm gerekmektedir. Bu tür durumlarda, geçici ama hızlı bir çözüm sağlamak için özgün bir web uygulama açıklığına özel bir politikanın uygulanması gerekebilmektedir.

WAF'lar nihai bir güvenlik çözümü değildir, ancak bütünsel bir savunma stratejisi sağlamak için, ağ güvenlik duvarları ve saldırı tespit sistemleri gibi diğer ağ seviyesinde güvenlik çözümleri ile beraber kullanılması için tasarlanmıştır.

WAF'lar genellikle, SANS Institute tarafından belirtildiği gibi pozitif güvenlik modeli, negatif güvenlik modeli ya da bu ikisinin bir birleşimini kullanmaktadır.  WAF'lar siteler arası betik çalıştırma ve SQL enjeksiyonu gibi saldırıları engellemek için kural tabanlı mantık, ayrıştırma ve imzaların bir kombinasyonunu kullanmaktadır. OWASP, ilk on web uygulaması güvenlik zafiyetlerinin bir listesini oluşturmaktadır. Tüm ticari WAF teklifleri, en azından bu on zafiyeti kapsar. Ayrıca ticari olmayan seçenekler de bulunmaktadır. Daha önce belirtildiği gibi, ModSecurity olarak isimlendirilen açık kaynak kodlu WAF motoru bu seçeneklerden birisidir. Tek başına bir WAF motoru yeterli koruma sağlayamaz, bu yüzden Trustware'ye ait Spiderlabs ile birlikte OWASP, ModSecurity WAF motoru ile kullanılması için GitHub aracılığıyla temel bir kural seti oluşturmuştur ve devam ettirmektedir.

Çalışma modları için verilen isimler değişse de, WAF'lar temelde üç farklı şekilde kullanılmaktadır. NSS Labs'a göre, kullanım seçenekleri şeffaf köprü, şeffaf ters vekil sunucu ve ters vekil sunucudur. 'Şeffaf' HTTP trafiğinin doğrudan web uygulamasına gönderildiğini ifade etmektedir, bu yüzden WAF istemci ile sunucu arasında şeffaftır. Bu durum, WAF'ın ters vekil sunucu olarak çalıştığı ve istemci trafiğinin doğrudan WAF'a gönderildiği ters vekil sunucu kullanıma aykırıdır. WAF sonrasında filtrelenmiş trafiği ayrı bir şekilde web uygulamalarına göndermektedir. Bu IP maskeleme gibi ilave faydalar sağlayabilir, ancak performans gecikmesi gibi dezavantajlar da getirebilmektedir.

Pek çok ticari WAF ürünü aynı özelliklere sahiptir, ancak aralarındaki en büyük farklılıklar kullanıcı arayüzleri, kullanım ve kurulum seçenekleri veya belirli bir ortam içerisindeki gereksinimleri olmaktadır.