Ciekawa prezentacja Shocking News in PHP Exploitation (autor: Stefan Esser). W części poświęcona jest ona obchodzeniu WAF głównie na przykładzie ModSecurity ze standardowym zestawem reguł. Mimo wszystko Web Application Firewalls zwiększają bezpieczeństwo aplikacji. Nawet w domyślnej konfiguracji mogą wychwycić sporą część typowych ataków, ale nie wszystkie. Trzeba pamiętać, że nie oferują 100% skuteczności, a przed częścią ataków nie chronią wcale.
Pytanie: czy według Was w trakcie testów aplikacji WAF powinien być aktywny?
Jeżeli celem testów jest ocena bezpieczeństwa aplikacji to WAF warto wyłączyć. Ułatwi to test i być może zwiększy liczbę odnalezionych luk. Następnie można zaproponować ocenę w jakim stopniu aktualna konfiguracja WAF redukuje ryzyko.
Jeżeli klient potrzebuje "laurkę bezpieczeństwa" wtedy trzeba testować z WAFem. Klient dostanie co chciał - potwierdzenie, że podanymi metodami/narzędziami nie udało się nic odnaleźć.
Występuje jeszcze sytuacja, w której WAF musi[1] być włączony i wtedy to powinien być aktywny IMHO testy powinny być prowadzone "z" i "bez" WAFa. "Z", bo konfiguracja WAF jednak trochę zmienia w kontekście całego systemu dostępnego przez aplikacje webową, "bez", bo czasami ktoś wpadnie na pomysł wyłączenia WAFa i fajnie wiedzieć czym to może skutkować.
W zależności od rozwiązania zazwyczaj jest to filtrowanie danych wejściowych, rzadko np. enconding danych wyjściowych. Nie wiem jak dla Was, ale dla mnie to kupa frajdy testować WAFy.
[1] - w jednym z wariantów zgodności z PCI DSS
Pozdrawiam,
--
Przemek
Testowanie "przez" WAF przypomina mi trochę testowanie aplikacji z mocną walidacją danych wejściowych. Jeśli walidacja jest dobra (reguły WAF dobre), to niewiele udaje się osiągnąć. Empirycznie nie można stwierdzić jak realizowany jest encoding danych albo jak realizowany jest dostęp do bazy danych (budowane zapytania SQL co wprost łączy się z SQLi). Później okazuje się, że występują "drobne" zmiany w warstwie odpowiadającej za walidację i nagle okazuje się, że "głębiej" jest mocno źle. Dlatego czasami chyba nawet wolę, gdy aplikacja ma usterki w walidacji i widzę, że działa druga czy trzecia linia obrony
Przy całej mojej sympatii do WAF, uważam, że aplikacja powinna bronić się bez nich. Choćby dlatego, że WAF nagle może zniknąć, tak jak pisze Przemek (sytuacja analogiczna do "nagłego" zepsucia walidacji).
WAF to TYLKO jedna z nich.