Hledaní zranitelností nad LLVM mezikódem
Finding vulnerabilities in the LLVM intermediate code
Type of document
diplomová prácemaster thesis
Author
Jan Brož
Supervisor
Kokeš Josef
Opponent
Buček Jiří
Field of study
Počítačová bezpečnostStudy program
InformatikaInstitutions assigning rank
katedra informační bezpečnostiRights
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
Show full item recordAbstract
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.
Collections
- Diplomové práce - 18106 [113]