Po wczorajszym spotkaniu OWASP chciałem zwrócić uwagę na fragment wypowiedzi Piotra Łaskawca z prezentacji dotyczącej fuzzingu i fuzzerów. Powiedział on mniej więcej tyle, że w procesie tworzenia oprogramowania (konkretnie podczas jego testowania) firma, w której pracuje wykorzystuje fuzzing. Kluczowy fragment jest jednak inny. Wykorzystywane fuzzery są tworzone specjalnie pod testowane aplikacje, bo tworzone aplikacje są na tyle specyficzne, że "standardowe" fuzzery sobie z nimi nie radzą.
Po spotkaniu OWASP - fuzzery
Jest to całkowicie zgodne z moimi obserwacjami dotyczącymi wykorzystania narzędzi automatycznych (skanerów bezpieczeństwa) do testowania bezpieczeństwa aplikacji internetowych. Skanery automatyczne w znacznym stopniu wykorzystują właśnie fuzzing i niestety często sobie nie radzą z testowanymi aplikacjami. Wynika to w znacznym stopniu ze specyfiki aplikacji, które testuję. Są one trochę bardziej złożone i wykorzystują nieco niestandardowe rozwiązania. Oczywiście, poświęcając wystarczająco dużo czasu i energii można zmodyfikować część narzędzi (choć nie wszystkie, zwłaszcza wypasione skanery za dużo pieniędzy są wyjątkowo o(d)porne na modyfikacje) tak, by jakoś radziły sobie z testowanymi aplikacjami.
Można, tylko, że nie do końca ma to sens w moim przypadku. Dlaczego? Jeśli fuzzer jest tworzony przez firmę programistyczną do testowania tworzonej przez siebie aplikacji, która jest następnie rozwijana, modyfikowana, (...) to zainwestowanie kilku dni/tygodni/miesięcy w tworzenie fuzzera jest uzasadnione Fuzzer taki w niezmienionej formie lub z drobnymi modyfikacjami będzie wykorzystywany przez cały okres życia i rozwoju "głównej" aplikacji, do której testowania został stworzony. Zresztą podobną inwestycją jest tworzenie całego "środowiska" QA. Analogiczny wysiłek włożony w trakcie testów penetracyjnych sens ma już mniejszy. Choćby dlatego, że inwestycja ta będzie w dużym stopniu jednorazowa, stworzonego fuzzera dla aplikacji X nie da się łatwo wykorzystać przy testach aplikacji Y... Trzeba też pamiętać, że fuzzery wykrywają jedynie część typów podatności. Dysponując ograniczonymi zasobami, głównie czasem, nie zawsze można sobie pozwolić na poświęcenie 2/3 czasu testu na przygotowanie fuzzera, bo tego czasu może później zabraknąć do przeprowadzenia innych, często bardziej istotnych, testów. Dlatego używam fuzzerów standardowych tam, gdzie ich wykorzystanie ma sens.
Weryfikacja poprawności kontroli dostępu do danych oraz do funkcji jest jednym z bardziej istotnych elementów testów bezpieczeństwa aplikacji. Tematowi temu były poświęcone między innymi dwa przykłady w przewodniku po bezpieczeństwie aplikacji internetowy
Przesłany: Mar 23, 19:57