ModSecurity ile web güvenlik açıklarının engellenmesi hakkındaki yazı dizimizin bu bölümünde ModSecurity kullanarak web uygulamalarındaki basit kusurlar nedeniyle ortaya çıkan ve belki bütün bir sistem hakkında kritik veriler sunan hassas veri ifşasının engellenmesinden bahsedeceğiz.
Information Disclosure Zafiyeti Nedir?
Çok sayıda farklı türü olan hassas veri ifşasının ortaya çıkması genelde uygulama seviyesinde yapılan basit kusurlar veya sunucu/sistem ayarlarındaki küçük hatalardan kaynaklanmaktadır. İnternette hassas veri ifşasının neler olabileceğine dair şimdiye kadar yaşanan örnekleri ve hatta henüz açığı kapatılmamış olan yüzlerce örnek bulabileceğiniz kaynaklar var. Sadece basit Google aramalarıyla bile oldukça fazla kritik ve hassas veri ifşasına ulaşabiliyorsunuz.
Hassas veri ifşasının çok fazla çeşidinin olması nedeniyle hepsinin WAF veya ModSecurity CRS ile engellenmesi neredeyse imkansızdır. Fakat zafiyetin tam olarak nerede olduğu ve hangi verinin açığa çıktığı bilinebilirse özel bir ModSecurity kuralı ile bunu engellemek oldukça basit bir hale gelebiliyor.
Yazı dizimizin bu bölümünde genel bir örnek üzerinden ModSecurity ile hassas veri ifşasının engellenmesinden bahsedeceğiz. Bu yazıda ağırlıklı olarak High-Tech Bridge kaynağı referans olarak alınmıştır.
— BÖLÜM 7: ModSecurity ile Hassas Veri İfşasının Engellenmesi —
Altta scriptteki her hatanın bütün ortam değişkenlerinin (var_dump($_SERVER)) ifşasına neden olan bir PHP kodunu inceleyelim:
functions.php <? function doerror() { var_dump($_SERVER); die(); } ?>
Yukarıdaki kod için özelleÅŸtirilmiÅŸ bir ModSecurity kuralı yazılarak, sunucunun kullanıcıya döndüğü HTML çıktısında bulunabilecek [“SERVER_SIGNATURE”], [“HTTP_HOST”] ve [“DOCUMENT_ROOT”] string’lerinin içinde geçtiÄŸi HTML yanıtının iptal edilmesi saÄŸlanabilir. Bunun için alttaki kuraldan yararlanabiliriz:
mod_security_custom_rules.conf SecRule RESPONSE_BODY "\[\"SERVER_SIGNATURE\"\]" "phase:4, t:none, chain, block, id:1071" SecRule RESPONSE_BODY "\[\"HTTP_HOST\"\]" "t:none, chain" SecRule RESPONSE_BODY "\[\"DOCUMENT_ROOT\"\]" "t:none"
Yukarıdaki ModSecurity kuralını kendi ihtiyaçlarınıza göre geliÅŸtirebilirsiniz. Böylece ModSecurity’nin dışarıya doÄŸru giden istekleri de engelleme veya filtreleme yeteneÄŸinin olduÄŸunun bilinmesinde yarar var. Tabii her zaman olduÄŸu gibi kusurların direkt kaynağında yani uygulamanın içinde düzeltilmesinde çok daha büyük yarar vardır. Ayrıca hassas veri ifÅŸasına dair örnekler için https://cwe.mitre.org/data/definitions/200.html kaynağını da inceleyebilirsiniz.
Yazı dizimizin bir sonraki bölümünde görüşmek üzere…