Przyspieszyć fuzzer (w Pythonie) - część 1

2010-03-17 18:06

Fuzzery mają wiele zalet i wad. Do wad zaliczyć można często bardzo długi czas wykonania. Aby fuzzing był dokładny musimy pokryć jak najwięcej kodu aplikacji. Oznacza to często tysiące zapytań. Do tego dochodzi czas potrzebny do przeprowadzenia każdej iteracji włącznie z jej wygenerowaniem.

W fuzzerach blokowych takich jak SPIKE czy Sulley często tworzy się wiele zbiorów różnych iteracji – na przykład:

Zbiór 1: / * n

Zbiór 2: ../ * n

Zbiór 3: .. * n

gdzie n jest liczbą całkowitą. Generowanie takich zbiorów nawet w językach wykonywanych na podstawie bytecode a nie w formie natywnej nie jest problemem czasowym aż… do momentu gdy zamiast jednego celu fuzzingu mamy ich wiele. Wtedy oczywiście opłaca się przechowywać wszystkie zbiory po pierwszej generacji (zakładając że nie ma potrzeby ich modyfikować). Pamięć nie jest problemem w większości przypadków. Należy jednak pamiętać, że pojedyncze zapytanie może mieć ponad kilka megabajtów.

Gdzie w takim razie szukać możliwości skrócenia czasu wykonania fuzzera? Odpowiedzi jest co najmniej kilka – oto kilka najprostszych i najoczywistszych:

  1. Wykorzystać wątki lub procesy
  2. Wygenerować raz zbiór zapytań i używać go w sposób statyczny lub modyfikując go w niewielkim zakresie. W przypadku Pythona wycinanie może być operacją kosztowną czasowo.
  3. Wykorzystać metodę wewnętrznego cache’u do powtarzalnych operacji
  4. Optymalizować sposób zestawiania połączenia i wysyłania zapytania do celu
  5. Inne

Blog

MS SQL Server 2005 Extended Support kończy się 12 kwietnia

Rozszerzone wsparcie dla serwera Microsoft SQL Server 2005 kończy się 12 kwietnia. To ostatni moment aby dokonać migracji do wyższej wersji.

Jeśli tego nie zrobiłeś to AVET INS może wesprzeć ...

2016-03-01 09:00, Czytaj więcej Więcej
Kiedy Flash wyginie?

Flash to jedna z tych technologii, która ma bardzo złą – i w tym wypadku całkowicie zasłużenie – reputację w obszarze bezpieczeństwa. Ta reputacja jest tak zła, że od jakiegoś czasu część ...

2016-02-11 16:45, Czytaj więcej Więcej
Krytyczna podatność w kliencie OpenSSH (CVE-2016-0777, CVE-2016-0778)

Wersje oprogramowania klienckiego OpenSSH w wersjach od 5.4 do 7.1 podatne są na atak umożliwiający wyciek pamięci oraz kradzież kluczy prywatnych. W przypadku, gdy połączenie SSH zostanie przerwane ...

2016-02-01 09:30, Czytaj więcej Więcej
Microsoft ogranicza wsparcie IE tylko do wersji 11

Microsoft przestaje wspierać starsze wersje przeglądarki Internet Explorer. Jedyną wspieraną wersją od dzisiaj jest IE 11 i wyższe. Dla wielu systemów (np. Windows 7) może to oznaczać potrzebę aktualizacji lub ...

2016-01-13 09:00, Czytaj więcej Więcej
SafeNet Day: Szyfrowanie w chmurze - prezentacja

Prezentacja Aleksandra Czarnowskiego z konferencji SafeNet Day na temat Szyfrowanie w chmurze jest już dostępna do pobrania. Zapraszamy do pobrania poniżej:

http://www.avet.com.pl/media/pdf/2015-11-02_Szyfrowanie_w_chmurze.pdf

2015-10-31 10:00, Czytaj więcej Więcej