ĎURIŠ, T. Budování ekosystému nástrojů YARA-X [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.
Student navrhl a implementoval několik rozsáhlých rozšíření pro nový open-source projekt YARA-X, včetně parseru odolného vůči chybám, nástroji pro extrakci dat nebo Mach-O modulu. Student zároveň, nad rámec svých povinností, pracoval na propagaci tohoto nového nástroje pomocí publikování a příspěvků na sociálních sítí. Výsledný kód je pokryt sérii testů a porovnán s předchozím řešením. Zároveň kód prošel schvalovacím procesem a je z velké části zařazen do oficiální chystané verze, která bude zveřejněna v průběhu léta. Celkově práci nemám co vytknout. Z těchto důvodů navrhuji hodnocení z A.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Informace k zadání | Zadání považuji za náročnější z důvodu rozsáhlosti výsledného projektu. Student se do velké míry podílel na tvorbě nové generace open-source nástroje YARA, YARA-X. Tento nový nástroj, psaný v jazyce Rust, spoluvytvářel s hlavním autorem projektu YARA a musel tudíž zapracovávat požadavky nejen zadání, mé a konzultantovi, ale také požadavky přímo od autora, které často představovali práci navíc. Student reagoval pružně, odváděl kvalitní práci a velká část jeho výsledné implementace je již nyní součástí primární verze projektu, která bude součástí prvního vydání plánovaného v létě tohoto roku. Zároveň projekt aktivně propagoval na internetu, sepsal blogový příspěvek vysvětlující benefity nové verze YARA nástroje a aktivně se zapojoval do diskusí na sociálních sítích. Finální práce byla dokončena v předstihu a řádně konzultována. Zadání pak bylo splněno ve všech bodech. | ||
Práce s literaturou | Student si hledal literaturu samostatně. Vzhledem k povaze práce čerpal především z technických dokumentací, výsledný seznam považuji za dostatečný. | ||
Aktivita během řešení, konzultace, komunikace | Student pracoval na zadání aktivně hned od začátku. Práci pravidelně konzultoval, jak se mnou, tak odborným konzultantem. Nad rámec toho rovněž implementaci průběžně řešil s hlavním autorem projektu YARA-X a zastřešoval koordinaci spolupráce. Dodržoval dohodnuté termíny a na konzultacích byl vždy připraven. | ||
Aktivita při dokončování | Jak technická zpráva, tak realizační výstup byly dokončeny včas a dostatečně konzultovány, jak se mnou, tak s konzultantem. | ||
Publikační činnost, ocenění | Student přispíval do open-sourcesového projektu YARA-X, jeho příspěvky jsou již nyní volně dostupné na GitHub stránkách. Zároveň o své práci sepsal propagační blogový příspěvek na https://engineering.avast.io/ a jeho práce se dočkala řady pozitivních ohlasů na platformě X. |
Práce je implementačně nadprůměrná rozsahem i praktickou využitelností. Navíc je realizace doplněna výbornou technickou zprávou, takže hodnotím Výborně/A.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Náročnost zadání | Kromě nutnosti nastudovat obsáhlý ekosystém kolem nástroje YARA používaného pro analýzu malware vyžaduje zadání v bodě 5 hodnotný příspěvek (analýza jazyka YARA a podpora jeho vyhodnocování) k novému ambicióznímu projektu YARA-X v jazyce Rust vzniklý pod hlavičkou autora původní YARA a VirusTotal/Google. | ||
Rozsah splnění požadavků zadání | Zadání považuji za splněné s drobným rozšířením, kdy student pojal integraci a testování zodpovědně a vytvořil testovací nástroj využitelný i pro budoucí moduly pro YARA-X. | ||
Rozsah technické zprávy | Text je velmi poctivě zpracován a dobře vyvažuje část seznamující s původním nástrojem YARA, návrhem nové verze YARA-X a dále návrhem studenta pro nové moduly a rozšíření. Jediné negativum z pohledu komunity je v tom, že práce není psána anglicky. | ||
Prezentační úroveň technické zprávy | 90 | Text je velmi dobře strukturován, vše řádně navazuje a usnadňuje pochopení. Části jsou vhodně provázány odkazy, které zjednodušují orientaci v textu. Okrajově bych vytkl, že nejasnost ohledně převodu AST na (H)IR na str. 35 je vyjasněna až v sekci 6.3, což by vyřešilo krátké vysvětlení zkratky (H)IR už dříve. Dále u sekce 6.3.4 by bylo lepší dokreslit vše vhodným schématem nebo diagramem pro obalující struktury, aby text nebyl tolik abstraktní. Větší slabinou je podle mě to, že v textu není analýza alternativních generátorů syntaktických analyzátorů pro Rust (než dříve použitý Pest), které by lépe odpovídaly požadavků (např. binding generátoru tree-sitter pro Rust atd.). | |
Formální úprava technické zprávy | 98 | Za poslední dobu asi nejpoctivěji zpracovaný text po jazykové i typografické, který bylo radost číst. Jedinou výtku mám k ne vždy dobře použitým číselným referencím, kdy občas chybí určení, na jaký typ objektu se číselná reference odkazuje (sekce či obrázek). | |
Práce s literaturou | 90 | Pozitivně hodnotím i výběr literatury, která je dobře citována v celém textu. Dobře je odlišeno, co je práce studenta a co je součást původního systému. | |
Realizační výstup | 88 | Implementace v jazyce Rust je součásti přiloženého média a je plně funkční a kód je dobře komentovaný. Obsahuje také README soubory, které upřesňují, u kterých souborů je student autor. Soubory většinou nemají autorskou hlavičku, což vypadá jako zvyklost v projektu YARA-X. Student vyvinul nový modul podporující analýzu formátu Mach-O (binární formát běžný na zařízeních Apple), analyzátor YARA pravidel odolný vůči chybám vedoucí na možnost implementace LSP, který student také částečně implementoval a demonstroval rozšířením pro Visual Studio Code. Dále implementoval možnost získávat strukturované výstupy z nástroje YARA-X, čímž student umožnil implementovat i rámec pro testování nových modulů pro YARA-X (včetně fuzzy testování). Poslední 2 části považuji za rozšíření nad rámec zadání. Jelikož nemám s jazykem Rust velké zkušenosti, neumím posoudit, zda je návrh v tomto nízkoúrovňovém jazyce nějak výjimečný. | |
Využitelnost výsledků | Přinejmenším část programového díla je již součástí vývojářských verzí YARA-X, jak lze dohledat ve veřejném git repozitáři. Popularita nástroje lze naznačit jen počtem přes 500 hvězdiček na Github |
eVSKP id 155210