Obrona doktoratu na WCY pt. "Destylacja korpusu danych testowych w procesie fuzzingu z wykorzystaniem algorytmu genetycznego"

W dniu 19 grudnia odbyła się publiczna obrona rozprawy doktorskiej mjr. mgr. inż. Marcina Pachnika pt. „Destylacja korpusu danych testowych w procesie fuzzingu z wykorzystaniem algorytmu genetycznego”. Doktorant z Wydziału Cybernetyki obronił się w dyscyplinie Informatyka Techniczna i Telekomunikacja Wojskowej Akademii Technicznej. Promotorem pracy był dr hab. inż. Kazimierz Worwa, prof. WAT, promotorem pomocniczym płk dr inż. Rafał Kasprzyk, zaś recenzentem dr hab. inż. Andrzej Paszkiewicz z Dowództwa Komponentu Wojsk Obrony Cyberprzestrzeni, dr hab. inż. Grzegorz Borowik, prof. UTH z Wydziału Inżynieryjnego Uczelni Techniczno-Handlowej im. Heleny Chodkowskiej oraz dr hab. inż. Maciej Walkowiak prof. Politechniki Bydgoskiej.

Mjr mgr inż. Marcin Pachnik przygotowując rozprawę doktorską opracował oryginalną metodę destylacji korpusów danych testowych wykorzystywanych w procesie fuzzingu. Zastosował w tym celu wielokryterialny algorytm genetyczny epiVEGA, wzbogacający algorytm VEGA o autorski operator epigenetyczny oraz mechanizm sterowania zbieżnością. Jak wskazuje autor w rozprawie doktorskiej:

„Fuzzing, (inaczej - fuzz testy), jest automatyczną, pseudolosową metodą testowania oprogramowania. Polega na wprowadzaniu na wejście programu losowych, zmodyfikowanych lub błędnych danych testowych w celu znalezienia błędów nieprzewidzianych przez autora aplikacji (nieobsłużonych za pomocą mechanizmów wykorzystywanego języka programowania). Dane testowe są generowane bądź powstają w wyniku mutowania plików wchodzących w skład zebranych wcześniej zbiorów danych testowych, tzw. korpusów. Zazwyczaj fuzzing stosuje się w celu testowania programów, które przyjmują na wejściu dane o określonej strukturze (np. pliki o ustalonym formacie) lub programów realizujących protokoły komunikacyjne.

Za pomocą fuzzingu nie poszukuje się w oprogramowaniu błędów logicznych, lecz tych związanych z niepoprawnym lub niebezpiecznym wykorzystaniem języka programowania przez autora aplikacji. Współcześnie fuzzing stosuje się najczęściej podczas audytów bezpieczeństwa oprogramowania pisanego w językach takich jak C/C++, nieposiadających wystarczających mechanizmów bezpieczeństwa. Uniwersalność tej metody pozwala także na testowanie rozwiązań sprzętowych i systemów operacyjnych. Fuzz testy odnoszą również sukcesy w trakcie badania jakości implementacji algorytmów kryptograficznych.

Charakterystycznymi błędami znajdowanymi za pomocą fuzzerów są błędy ochrony pamięci (czyli sytuacje, kiedy program uzyskuje dostęp do obszaru pamięci nie zaalokowanej dla niego), przepełnienia buforów, stosów czy zmiennych (kiedy rozmiar struktury przekroczy rozmiar pamięci dla niej zaalokowanej). Błędy te pozwalają na nieautoryzowany dostęp do obszarów pamięci programu, wbrew intencji autora. Z wykorzystywaniem fuzzingu atakujący najczęściej badają moduły oprogramowania, które nie są już wspierane bądź są jeszcze w procesie wdrażania. Głównym przedmiotem testów są parsery danych, biblioteki multimedialne, tekstowe, interpretery języków, zależne podprogramy większych projektów i biblioteki zewnętrze, na których bezpieczeństwo nie mają wypływu deweloperzy oprogramowania, będących przedmiotem badań lub potencjalnego ataku.”

W swojej rozprawie Doktorant przedstawił historię i klasyfikację fuzz testów. W części teoretycznej przybliżył zasady działania współczesnych fuzzerów. Omówił rolę korpusów w procesie fuzzingu, a także współczesne metody i kryteria ich destylacji. Dalsza część pracy poświęcił algorytmom ewolucyjnym. Przybliżył klasyczne odmiany operatorów genetycznych – krzyżowania i mutacji. Opisał rolę selekcji w procesie symulowanej ewolucji. Przegląd stanu wiedzy zakończył rozdziałem przybliżającym tematykę zjawisk epigenetycznych jako sposobu dziedziczenia pozagenetycznego. Pan Marcin Pachnik dokonał podsumowania dotychczasowych prób odwzorowywania operatów epigenetycznych w procesie symulowanej ewolucji.

Jak zauważył recenzent dr hab. inż. Andrzej Paszkiewicz z Dowództwa Komponentu Wojsk Obrony Cyberprzestrzeni

„w ramach prac zrealizowanych na potrzeby rozprawy powstało oprogramowanie, pozwalające, jak się wydaje, znacznie obniżyć złożoność problemu wykrywania błędów w oprogramowaniu. Jest to bardzo istotne z punktu widzenia współczesnych potrzeb dzisiejszego ponad miarę zinformatyzowanego świata. Autor rozprawy poprzez swoje badania z dużym wykorzystaniem intuicji inżynierskiej uzyskał wartościowe, aplikacyjne wyniki, które moim zdaniem powinny doczekać się w najbliższym czasie analizy od strony ilościowej. Jeśli można użyć określenia z branży odzieżowej -praca jest dobrze skrojona pod kątem nauk technicznych.”

Zdaniem promotora płk. dr. inż. Rafała Kasprzyka doktorant pokazał, że

"zadanie redukcji korpusu danych testowych można sprowadzić do zadania wielokryterialnego pokrycia zbioru (ang. multi-criteria set cover problem MCSCP). Zaproponowano redukcję zbioru danych testowych uwzględniającą cztery kryteria destylacji: rozmiar plików, czas obsługi plików przez testowany program, pokrycie kodu wyrażone w liczbie aktywowanych krawędzi w grafie przepływu sterowania oraz entropię będącą miarą losowości plików. Rozwiązanie MCSCP zostało wyznaczone z wykorzystaniem algorytmu genetycznego epiVEGA, w którym zaimplementowano autorski operator epigenetyczny, wzorowany na biologicznym procesie acetylacji i deacetylacji histonów. Zaproponowany algorytm został także rozbudowany o sterowanie zbieżnością w oparciu o wartość rozstępu i kwartylu drugiego rzędu. Serdecznie gratuluję Marcinowi uzyskania nie tylko stopnia doktora ale również faktycznie dużego osiągnięcia badawczego o potężnym potencjale praktycznym."

Serdecznie gratulujemy obronionego tytułu doktora oraz życzymy dalszego zgłębiania wiedzy w różnych obszarach i dyscyplinach naukowych.

Obrona rozprawy doktorskiej Dyscyplina ITiT, algorytmy genetyczne, fuzzing, artificial inteligence, Sztuczna Inteligencja, AI