Detail práce

Fuzz Testing of REST API

Diplomová práce Student: Segedy Patrik Akademický rok: 2019/2020 Vedoucí: Malík Viktor, Ing.
Název česky
Fuzz testování REST API
Jazyk práce
anglický
Abstrakt

Táto práca sa zaoberá fuzz testovaním REST API. Po prezentovaní prehľadu techník používaných pri fuzz testovaní a posúdení aktuálnych nástrojov a výskumu zameraného na REST API fuzz testovanie, sme pristúpili k návrhu a implementácii nášho REST API fuzzeru. Základom nášho riešenia je odvodzovanie závislostí z OpenAPI formátu popisu REST API, umožňujúce stavové testovanie aplikácie. Náš fuzzer minimalizuje počet po sebe nasledujúcich 404 odpovedí od aplikácie a testuje aplikáciu viac do hĺbky. Problém prehľadávania dostupných stavov aplikácie je riešený pomocou usporiadania závislostí tak, aby sa maximalizovala pravdepodobnosť získania potrebných vstupných dát pre povinné parametre, v kombinácii s rozhodovaním, ktoré povinné parametre môžu využívať aj náhodne generované hodnoty. Implementácia je rozšírením Schemathesis projektu, ktorý generuje vstupy za pomoci Hypothesis knižnice. Implementovaný fuzzer je použitý na testovanie Red Hat Insights aplikácie, kde našiel 32 chýb, z čoho jednu chybu je možné reprodukovať len za pomoci stavového testovania.

Klíčová slova

fuzz testovanie, fuzzing, fuzzer, REST API, testovanie, generovanie testov, získavanie závislostí, stavové testovanie, Hypothesis, JSON Schema, OpenAPI, Swagger, Schemathesis

Ústav
Studijní program
Informační technologie, obor Bezpečnost informačních technologií
Soubory
Stav
obhájeno, hodnocení B
Obhajoba
14. července 2020
Oponent
Průběh obhajoby

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázku oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Otázky u obhajoby
  1. Proč v případě neúspěšného tetovacího případu nejprve zvýšíte hodnotu "confidence" o 5 a následně ještě vynásobíte číslem 2, zatímco v případě úspěšného testovacího případu naopak pouze vydělíte 2 (viz listing 5.5 na straně 42)?
  2. Co znamená zkratka REST?
  3. K čemu byl použit nástroj Schemathesis?
Komise
Drahanský Martin, prof. Ing., Dipl.-Ing., Ph.D. (UITS FIT VUT), předseda
Grégr Matěj, Ing., Ph.D. (UIFS FIT VUT), člen
Holík Lukáš, doc. Mgr., Ph.D. (UITS FIT VUT), člen
Kořenek Jan, doc. Ing., Ph.D. (UPSY FIT VUT), člen
Malinka Kamil, Mgr., Ph.D. (UITS FIT VUT), člen
Polčák Libor, Ing., Ph.D. (UIFS FIT VUT), člen
Citace
SEGEDY, Patrik. Fuzz Testing of REST API. Brno, 2020. Diplomová práce. Vysoké učení technické v Brně, Fakulta informačních technologií. 2020-07-14. Vedoucí práce Malík Viktor. Dostupné z: https://www-dev.fit.vutbr.cz/study/thesis/23094/
BibTeX
@mastersthesis{FITMT23094,
    author = "Patrik Segedy",
    type = "Diplomov\'{a} pr\'{a}ce",
    title = "Fuzz Testing of REST API",
    school = "Vysok\'{e} u\v{c}en\'{i} technick\'{e} v Brn\v{e}, Fakulta informa\v{c}n\'{i}ch technologi\'{i}",
    year = 2020,
    location = "Brno, CZ",
    language = "english",
    url = "https://www.fit.vut.cz/study/thesis/23094/"
}
Nahoru