HAVLÍČEK, L. Možnosti normalizace programů jazyka JavaScript při vyhledávání zranitelností [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2023.
Zadání práce bylo velmi náročné. Pan Havlíček na práci pracoval průběžně po celý rok. Student aktivně navrhoval řešení problémů. Z průběhu práce jsem získal užitečné výsledky. Proto celkově navrhuji hodnotit práci jako velmi dobrou (B).
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Informace k zadání | Bakalářská práce navazovala na diplomovou práci z loňského roku. Původní idea byla, že se v rámci práce vyřeší jeden z identifikovaných problémů. V rámci řešení práce a během konzultací se ukázalo, že je práce příliš náročná a požadovanými znalostmi by se více hodila na práci diplomovou (na bakalářském stupni chybí požadované teoretické znalosti). Jsem spokojený, že student svou práci provedl jak nejlépe mohl a nalezl možná úskalí a poctivě reportoval své neúspěchy. | ||
Práce s literaturou | Student využíval především literaturu, kterou si sám dohledal. Během finalizace práce jsem studentovi vyznačil chybně vysázené záznamy jako je "Foundation, M." namísto Mozilla Foundation. Některé takové záznamy však v literatuře zůstaly i do finální verze. | ||
Aktivita během řešení, konzultace, komunikace | Viděli jsem se asi dvakrát v zimě a třikrát v létě. Četnější konzultace by prospěly systematičtějšímu řešení práce. Každopádně student musel nastudovat celou řadu informací a proto nejspíše neměl potřebu častějších konzultací. | ||
Aktivita při dokončování | Mimo testování a závěr jsem práci viděl v dostatečném předstihu. Mé poznámky byly vesměs do práce integrovány. | ||
Publikační činnost, ocenění | Není známá. |
Autor úspšěně rozšířil již existující aplikaci (rozšíření webového prohlížeče) o nové možnosti normalizace a deobfuskace JavaScriptových kódů před jejich analýzou. Při testování se ovšem autorovi nepodařilo řádně ověřit a prokázat, zda-li nově implementované možnosti přinesly reálné zlepšení či ne (může se zdát, že daná aplikace nyní funguje hůře než před rozšířením, především z důvodu použití deobfuskační knihovny). Z těchto důvodu hodnotím 68 body, tedy stupněm D.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Náročnost zadání | Cílem práce je návrh a implementace nových technik pro normalizaci zdrojového kódu jazyka JavaScript v rámci již existujícího nástroje a jeho rozříšení. Pro efektivní řešení je nutné se dobře seznámit s již existujícím nástrojem a problematikou normalizace a obfuskace zdrojových kódů daného jazyka. Problematika je aktuální a cílový jazyk je populární, tedy o kvalitní materiály věnující se problematice práce není nouze. Zadání hodnotím jako průměrně složité. | ||
Rozsah splnění požadavků zadání | Autor úspěšně analyzoval možnosti minifikace a (de)obfuskace JavaScriptových kódů, seznámil se s existujícími výsledky práce Ing. Randýska a navrhl a implementoval rozšíření tohoto již existujícího řešení. Těmito výsledky tedy splňuje body 1-5 zadání. Autor následně testuje a ověřuje funkčnost vytvořeného řešení a výsledky porovnává s výsledky originálního nástroje (bod 6 zadání). K samotnému testování mám několik výhrad: V rámci řešení je použita knihovna JavaScript Deobfuscator , která dle slov autora (kapitola 6.3 odst. 2) "[...] často generuje kód, který není validní a knihovna Acorn AST walker jej nedokáže zpracovat [...]" a tento fakt není při testování žádným dalším způsobem zohledněn , není uvedeno např: kolik z testovaných scriptů se nepodařilo vůbec otestovat, jaká je úspěšnost při použití této knihovny a bez jejího použití. Při porovnávání výsledků detekce nástrojem před a po jeho rozšíření autor sice porovnává scripty ze stejných stránek, jejich počty se ovšem při porovnání liší (tabulka 6.1 str. 58) jak v celkovém počtu kontrolovaných scriptů tak v počtu detekovaných zranitelností — toto porovnání tedy nepřináší žádné užitečné informace a nelze z něj učinit spolehlivé závěry . V počtech testovaných scriptů dále také není zmínka o počtech/poměrech minifikovaných/obfuskovaných/nezměněných testovaných scriptů — celkové počty a výsledná úspěšnost nástroje při detekcích v těchto oddělených kategoriích by přinesly značný vhled do potenciálních změn úspěšnosti a funkcionality rozšířené aplikace. Toto by mělo být hlavním bodem testování autorem. Testování probíhalo přímo v prohlížeči s daným rozšířením polo-automatizovaně a za pomoci scriptu který prochází předem definovaný seznam stránek a po 5 vteřinách mezi nimi prochází (nehledě na stav stažení a dostupnosti scriptů stránky). Toto řešení testování neškáluje příliš dobře a zároveň nenabízí žádné možnosti spolehlivé reprodukovatelnosti (seznam testovaných scriptů není součástí odevzdání, seznam testovaných stránek je součástí odevzdání spolu se scriptem pro automatizaci testu) v čase . Rozsah ani výsledky testování implementace jednotkovými či integračními testy nejsou v textu autorem detailněji popisovány. Autor tedy nemůže být na základě výsledků testování schopen spolehlivě tvrdit, zda-li je rozšíření aplikace (potažmo tedy výsledky práce) přínosné či ne. | ||
Rozsah technické zprávy | Dle fakultní aplikace pro analýzu rozsahu PDF dokumentů ( https://app.fit.vut.cz/normostrany ) má odevzdaná zpráva zhruba 49 normostran včetně obrázků, 47 normostran bez obrázků. Celkový rozsah práce je tedy téměř v obvyklém rozmezí. | ||
Prezentační úroveň technické zprávy | 75 | Práce je dobře strukturovaná a čitelná. Kapitoly na sebe logicky navazují a jsou informačně bohaté. Zpracování přehledných a reprezentativních diagramů a grafických reprezentací AST s příklady korespondujících pseudokódů či přímo ukázkami JavaScriptových kódů značně pomáhají k dobrému pochopení konkrétních detailů řešené problematiky. Autor zřejmě věnoval podobě technické zprávy značné úsilí. Větší problémy s obsahem jsou pouze v rámci kapitoly testování, jak již bylo uvedeno v bodech v rámci sekce rozsah splnění požadavků zadání. | |
Formální úprava technické zprávy | 70 | Práce obsahuje několik málo typografických chyb: chybné používání spojovníků [-] namísto pomlček [—] (kapitola 1 str. 4, titulek pro "Výpis" str. 20, 21, 22, výčet na str. 29, ...), chybějící úvody pod nadpisy sekcí (kapitola 2.2, 3.4, 3.5, 3.6, ...). Technická zpráva dále obsahuje drobné jazykové chyby: Autor v textu často střídá využití a nevyužití trpného rodu a vysvětluje co a jak dělal a čeho tím dosáhl (kapitola 5.2 str. 32, některé další kapitoly 5.2.*, kapitoly 6.1-3 str. 56+). Další drobné poznámky k obsahu textu práce: obrázky i tabulky bez vlastních popisků (pouze titulky), chybějící seznam výpisů. | |
Práce s literaturou | 60 | Autor cituje aktuální a relevantní zdroje. Práce čerpá z 12 různých zdrojů (7 z nich online). Formát i použití citací je správné dle platných fakultních pravidel a zvyklostí. Vzhledem k zaměření práce bych očekával, že autor bude čerpat z více informačních zdrojů. Zdroj "Google Closure Compiler" [6] i "JavaScript Obfuscation: The Definitive Guide" [8] je zřejmě online zdroj, ovšem online označení v bibliografické citaci chybí. | |
Realizační výstup | 60 | Výsledná aplikace je funkční a všeobecně použitelná (šlo pouze o rozšíření existujícího řešení). Interní funkcionalita nového rozříšení (nově implementovaných metod pro normalizaci) je ověřována jednotkovými testy, kód je čitelný, ale prakticky nevyužívá principů OOP. Implementované metody jsou řádně dokumentovány komentáři včetně jejich korespondujícího autora. Aktuální řešení zřejmě v řadě případů, dle slov autora rozšíření (kapitola 6.3 odst. 2), nefunguje. Zda-li došlo rozšířením ke kvalitativnímu zlepšení původní aplikace je nezodpovězenou otázkou. Součástí odevzdání nejsou sady scriptů u kterých byla funkcionalita detekce ověřována, testování probíhalo polo-automatizovaně přímo v prohlížeči. | |
Využitelnost výsledků | Výstupem práce je rozšíření již existující aplikace (rozšíření webového prohlížeče) která je veřejně dostupná na chrome web store ( https://chrome.google.com/webstore/detail/js-vulnerability-detector/bmcojnncgfmglejiinbdnahmkmbgifhk ). Autor práce nebyl v kontaktu s tvůrcem původní aplikace a nově vytvořená rozšíření aktuálně nejsou součástí dostupné aplikace. Aplikace jako takové pracuje stále na stejném principu a v závislosti na vyhodnocení úspěšnosti detekce by bylo možné změny publikovat k volnému užití v nové verzi již existující aplikace. |
eVSKP id 144947