ĎURIŠ, T. Budování ekosystému nástrojů YARA-X [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.

Posudky

Posudek vedoucího

Regéciová, Dominika

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.

Dílčí hodnocení
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.
Navrhovaná známka
A
Body
95

Posudek oponenta

Křivka, Zbyněk

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.

Dílčí hodnocení
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
Navrhovaná známka
A
Body
91

Otázky

eVSKP id 155210