Moje problemy z JBroFuzz jak występowały, tak występują, nawet mimo tego, że na liście zmian w nowej wersji teoretycznie znalazła się informacja o ich usunięciu:
Release Notes (2.2):
(...)
* Fixed "Payload in the wrong location" (sourceforge ID: 2997848)
(...)
Poza tym i tak "standardowe" fuzzery nie sprawdzają się, gdy kolejne żądanie musi zostać nieco zmodyfikowane w stosunku do żądania "wzorcowego", na przykład po to, by wstawić aktualny token.
Coraz bardziej utwierdzam się w przekonaniu, że najlepszy fuzzer, to zestawienie ze sobą Fiddlera oraz zwykle dość prostego skryptu, który kolejne żądania generuje. Jak dla mnie Python wraz z httplib zwykle robi wystarczająco dobrą robotę... A payload? Choćby z fuzzdb. Oczywiście, wówczas może i nie dostaje się ładnego raportu z narzędzia, który to raport zwalnia od myślenia, ale coś za coś.
Druga sprawa - w standardowym przypadku scenariusz użycia fuzzera jest prosty. Narzędzie sprawdza wszystkie dostarczone payloady i na końcu prezentuje rezultaty swojej pracy, w szczególności te przypadki, w których aplikacja zachowała się w sposób niezgodny z oczekiwaniami. Teoretycznie wszystko jest proste, problem pojawia się przy zestawieniu ilości payloadów z szybkością działania aplikacji. Jeśli obsługa żądania trwa około jednej sekundy, dość łatwo wyliczyć ile będzie trwało sprawdzenie wszystkich przypadków testowych zawartych w danym "źródle".
Według mnie nieco sensowniejszym podejściem (zwracam uwagę, że cały czas piszę o specyficznym przypadku - testach penetracyjnych aplikacji, których czas jest z góry ograniczony) jest rozpoznanie aplikacji z pomocą żywego człowieka, a następnie zautomatyzowanie tych przypadków, które wydają się rokować największe szanse powodzenia. Stawianie na ilość nie koniecznie jest dobrym rozwiązaniem.
Jeśli chodzi o ilość i jakość. Kiedyś przy błędzie w którymś z telefonów komórkowych usłyszałem mniej więcej taki komentarz (...) powinni sprawdzić wszystkie możliwe SMSy, przecież to tylko 160 znaków (...). Tylko 160 znaków? No to załóżmy, że jest 100 dostępnych znaków (w rzeczywistości zapewne więcej, ale i te 100 wystarczy). Ile będzie przypadków testowych? Dość proste zadanie z kombinatoryki, wariacja z powtórzeniami... Ilość zer robi wrażenie, prawda?