Hledaní zranitelností nad LLVM mezikódem
Finding vulnerabilities in the LLVM intermediate code
Typ dokumentu
diplomová prácemaster thesis
Autor
Jan Brož
Vedoucí práce
Kokeš Josef
Oponent práce
Buček Jiří
Studijní obor
Počítačová bezpečnostStudijní program
InformatikaInstituce přidělující hodnost
katedra informační bezpečnostiPráva
A university thesis is a work protected by the Copyright Act. Extracts, copies and transcripts of the thesis are allowed for personal use only and at one?s own expense. The use of thesis should be in compliance with the Copyright Act http://www.mkcr.cz/assets/autorske-pravo/01-3982006.pdf and the citation ethics http://knihovny.cvut.cz/vychova/vskp.htmlVysokoškolská závěrečná práce je dílo chráněné autorským zákonem. Je možné pořizovat z něj na své náklady a pro svoji osobní potřebu výpisy, opisy a rozmnoženiny. Jeho využití musí být v souladu s autorským zákonem http://www.mkcr.cz/assets/autorske-pravo/01-3982006.pdf a citační etikou http://knihovny.cvut.cz/vychova/vskp.html
Metadata
Zobrazit celý záznamAbstrakt
Práce rozebírá možnosti statické analýzy programů za účelem hledání zranitelností, které vznikají častými programátorskými chybami. Nejprve jsou popsány tyto chyby, jejich dopady a světové statistiky. Jsou také shrnuty současné existující postupy na odhalování těchto chyb a jejich nedostatky. Následně je navržena metoda zpětného hledání původu dat sledováním datových závislostí v LLVM mezikódu, která je poté aplikována na detekování injekce příkazů či formátovacího řetězce a některé případy přetečení bufferu. Jsou rozebrány nejčastější typy falešných poplachů, které tato metoda produkuje, a navrženy možnosti jejich eliminace. Metoda je implementována v C++ pomocí LLVM frameworku a otestována na vybraných vzorcích zranitelných programů. Thesis examines possibilities of static analysis for the purpose of searching vulnerabilities, which arise from common programming mistakes. Firstly we describe those mistakes, their impacts and worldwide statistics. We also summarize existing methods for detection of such mistakes and their shortcomings. Thereafter we suggest a method of backward finding a data origin by following data dependancies in LLVM intermediate code, which is then applied on detection of injection of commands or format strings and certain cases of buffer overflow. We examine types of false positives this method produces and we suggest ways to mitigate them. The method is implemented in C++ using LLVM framework and tested on selected samples of vulnerable programs.
Kolekce
- Diplomové práce - 18106 [115]