bakalářská práce

Inkrementální statická analýza pro jazyk YARA

Text práce 2.46 MB Příloha 17.55 MB

Autor práce: Bc. Vojtěch Dvořák

Ak. rok: 2022/2023

Vedoucí: Ing. Dominika Regéciová

Oponent: doc. Dr. Ing. Dušan Kolář

Abstrakt:

Hlavním cílem této bakalářské práce je navrhnout a implementovat programovou knihovnu, jež umožní inkrementální statickou analýzu jazyka YARA. Jedním z hlavních účelů této nové knihovny je integrace s open-source projektem Yara Language Server, který vyvíjí firma Avast. Oproti dosavadnímu řešení, jež využívá neinkrementální přístup k analýze, by mělo dojít ke snížení nároků na strojový čas. Kromě informací o programovém řešení je součástí této práce rovněž souhrn teorie zaměřující se na statickou analýzu a její inkrementální variantu, zásadní informace o nástroji YARA a také seznámení s dosavadním řešením, s knihovnou Yaramod-v3. Dále je v práci zahrnuto také srovnání nové knihovny s tímto dosavadním řešením, v němž jsou prezentovány dosažené výsledky. Provedené experimenty ukázaly, že nová knihovna je schopná provést inkrementální analýzu modifikované sady pravidel přibližně 20× – 2000× rychleji v závislosti na konkrétní sadě.

Klíčová slova:

inkrementální statická analýza, jazyk YARA, integrované vývojové prostředí, IDE, YLS, LSP, Yaramod, LR syntaktická analýza, sémantická analýza, lexikální analýza, textový editor, tree-sitter, visitor, linting, Avast

Termín obhajoby

16.06.2023

Výsledek obhajoby

obhájeno (práce byla úspěšně obhájena)

znamkaAznamka

Klasifikace

A

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ázky 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 A.

Otázky k obhajobě

  1. Proč jste použil GLR?

Jazyk práce

čeština

Fakulta

Ústav

Studijní program

Informační technologie (BIT)

Složení komise

doc. Dr. Ing. Dušan Kolář (předseda)
doc. Dr. Ing. Otto Fučík (člen)
Ing. František Grézl, Ph.D. (člen)
Ing. Ivana Burgetová, Ph.D. (člen)
Ing. Martin Hrubý, Ph.D. (člen)

Posudek vedoucího
Ing. Dominika Regéciová

Student se seznámil s problematikou inkrementálních parserů a jejich použití pro analýzu zdrojových kódů v textových editorech a integrovaných vývojových prostředích.


Navrhl a implementoval knihovnu, která umožnuje statickou analýzu jazyka YARA za využití algoritmu pro inkrementální parsování, a která je již nyní aktivně používaná ve společnosti Gen.


Výsledek student otestoval a porovnal s předchozí verzí řešení, u čehož bylo zjištěno výrazné zrychlení analýzy. Řešení bude rovněž zveřejněno jako open-source projekt.


K práci přistupoval aktivně a samostatně. Z těchto důvodů navrhuji hodnocení za A.

Kritérium hodnocení Slovní hodnocení
Informace k zadání

Zadání považuji za náročnější. Student si musel nastudovat teorii inkrementálních parserů a jejich použití pro analýzu zdrojových kódů v textových editorech a integrovaných vývojových prostředích (IDE).

Student se rovněž musel seznámit s již existujícími systémy společnosti a stejně tak open-source nástroji, aby mohl navrhnout a implementovat řešení pro knihovnu za použití inkrementálního parsování.

Zadání pak bylo splněno ve všech bodech.

Práce s literaturou

Student si hledal zdroje informací aktivně sám. Čerpal především z technických dokumentací, ale i odborných publikací. Řádně citoval a odkazoval se na použité zdroje.

Aktivita během řešení, konzultace, komunikace

Student pracoval na zadání hned od začátku, dodržoval dohodnuté termíny. Práci pravidelně konzultoval, jak se mnou, tak odborným konzultantem. K práci přistupoval aktivně a přecházel s originálními řešeními problémů.

Aktivita při dokončování

Práce, především realizační část, byla dokončena v předstihu. Finální podoba byla dostatečně konzultována.

Publikační činnost, ocenění

Výsledky práce studenta budou zveřejněny jako součást open-source projektu Yaramod.

Výsledný počet bodů navržený vedoucím: 96
Zobrazit více

Známka navržená vedoucím: A

Práce měla jistě velký potenciál, ale dle mého chyběly síly na posledních pár metrech před cílem. Například by mě zajímalo, proč je použita GLR, když gramatika určitě může být jednoznačná? Taky
to, proč je iniciační analýza tak pomalá? Kde je nějaké zdůvodnění kroků při řešení, experimenty, apod. Dojem hodně kazí, že kód odevzdaný v IS nelze podle návodu sestavit. Náročnější práci, pěkně zpracovanou tak nelze hodnotit jako vynikající.

Kritérium hodnocení Slovní hodnocení Body
Náročnost zadání

Stupeň hodnocení: obtížnější zadání

Zadání hodnotím jako obtížnější, neboť bylo třeba nastudovat techniky částečného rozkladu programovacího jazyka a techniky a nástroje spojené s touto tehcnologií, což je nad rámec bakalářského studia.

Rozsah splnění požadavků zadání

Stupeň hodnocení: zadání splněno

Rozsah technické zprávy

Stupeň hodnocení: je v obvyklém rozmezí

Text je sice v obvyklém rozmezí, ale někde působí rozvláčně (úvodní partie), jinde zase informačně chudě (konec práce).

Prezentační úroveň technické zprávy

Kapitoly na sebe sice navazují, ale někde je text až populárně-naučný, jinde zase něco chybí, nebo jsme odkazováni na soubory v příloze (např. testování).

85
Formální úprava technické zprávy

Po formální stránce je práce úpravná, jen s drobnými překlepy a 2 systematickými chybami (např.  "ladící" místo "ladicí", nebo "řídící" místo "řídicí").

90
Práce s literaturou

Volba pramenů je vhodná pro daný typ práce.

90
Realizační výstup

Ač jsem postupoval podle návodu, v čerstvé instalaci aktuálního Kubuntu, tak tree-sitter se sice podařilo sestavit, základní testy proběhly, ale náročné testy dept_test.py selhaly. Hlavní program se nepodařilo sestavit vůbec (cmake v pohodě, make spadl na chybu). Komentované jsou jen halvičkové soubory, ostatní mají jen hlavičku s autorem.

50
Využitelnost výsledků

Dle vyjádření výsledků je programová sestava funkční, takže je na pracovišti běžně využívána.

Výsledný počet bodů navržený oponentem: 80
Zobrazit více

Známka navržená oponentem: B

Odpovědnost: Mgr. et Mgr. Hana Odstrčilová