Autora programu lze určit nejen ze zdrojového kódu

ITBiz.cz , 24. duben 2018 06:00 0 komentářů
Autora programu lze určit nejen ze zdrojového kódu

Zdrojový kód každého autora je specifický málem jako literární styl, nicméně moderní nástroje prý umožňují identifikovat tyto vlastnosti celkem spolehlivě i ve zkompilovaném kódu. Může to být využitelné např. při pátrání po tvůrcích malwaru nebo v jiných forenzních aplikacích; mnoho programátorů může však současně mít pocit ohrožení soukromí.

Výzkumníci z Princeton University, Drexel University, Braunschweig University of Technology a společností Sophos a Shiftleft ukázali ve studii publikované na preprintovém serveru ArXiv, jak lze nástroje zkoumající styl nasadit i na binární soubory. Stačí pomocí strojového učení dostatečně vytrénovat program na obdobných známých vzorcích a pak binární soubor dekompilovat do kódu podobného jazyku C (jistě by šlo provést i jinak). Vlastní použitý proces je několikastupňový, přes assembler až po tvorbu abstraktního syntaktického stromu, a využívá více nástrojů (Radare2, ndisasm, Hex-Rays) – ti si autoři výzkumu sami nevyvíjeli, takže zde je další prostor pro zvýšení účinnosti, vytvořením speciálních nástrojů šitých na míru.

Při kompilování se celá řada atributů původního zdrojového kódu samozřejmě ztratí, např. i v důsledku optimalizace. Komentáře, mnohá metadata nebo i názvy proměnných a funkcí se již dekomplilací obnovit nedají, ale i tak zbude dost individuálních rysů – alespoň pro současné programy umělé inteligence. Jaká je úspěšnost přiřazení autora? Výzkumníci zkusili své neuronové sítě na dvou typech vzorků, z Google Code Jam a veřejných repozitářů na GitHubu.

U Google Code Jam dostal algoritmus strojového učení na začátek 8 programů každého účastníka. Mezi 100 programátory pak šlo autora určit s úspěšností 96 %, mezi 600 poklesla na 83 %. Zajímavé je, že úspěšnost identifikace stoupala s pokročilostí programátora – čím jsou lepší, tím mají víc vlastní styl (přitom by se dalo čekat, že naopak snadněji by šlo odhalit programátory podle toho, že používají neefektivní, suboptimální řešení, špatně lze věc udělat více způsoby než správně; možná by se to dalo porovnávat třeba s identifikací děl malířů, šachistů apod. v závislosti na jejich kvalitě).

U GitHubu byla úspěšnost menší, asi 65 % při 50 programátorech. To podle autorů výzkumu vyplývá hlavně z toho, že kód mnohdy obsahuje části, jejichž autorem byl někdo jiný než vlastník repozitáře.

Další otázkou je, co se stane, pokud autoři programu budou kromě komplikace mít snahu záměrně své dílo anonymizovat, tedy např. odstranit operace o symbolech, měnit operace za jejich sémantické ekvivalenty nebo dokonce přidávat nepotřebné příkazy (tedy používat různé techniky obfuskace, ty jsou ovšem ve stávající podobě určeny pro znečitelnění zdrojového kódu). Samozřejmě záleží na tom, jaké konkrétní nástroje se k tomu použijí, ale podle autorů výzkumu se tím přiřazení autorství neznemožní, i když úspěšnost identifikace programátora přirozeně poklesne.

Techniky znáhodňování kódu používají na různé úrovni už dávno tvůrci malwaru, nemusí jim to ale být nic platné (pokud ovšem není kód dílem velké skupiny, která navíc využívá ještě jiné části kódu). Také lze tímto způsobem třeba odhalovat autorství programů, které se z řady důvodů nelíbí v některých státech – obcházejí cenzuru, firewally, nabízejí šifrování apod. Mohou takto prostě vycházet najevo různé věci, bez ohledu na to, na čí straně budou v konkrétních případech naše sympatie.

Co doporučit vývojářům, kteří si chtějí zachovat anonymitu? Podle autorů výzkumu je nejjednodušší v první řadě nepoužívat veřejné přístupné repozitáře kódů. Pro každý uvolněný kód lze vytvořit jinou identitu – neuronová síť nejprve potřebuje určitý vzorek, aby se „naučila“ styl konkrétního člověka, s hromadou autorů jediného programu si asi pořádně poradit nedokáže. The Register cituje Ailyn Calyskan z Princetonu, která navíc rozebírá účinnost různých speciálních technik na proces detekce (např. náhodně vždy použít různých obfuskačních nástrojů apod.). Nakonec některé věci stejně náhodné nejsou, malware třeba komunikuje s určitými řídicími servery, odesílá určitá data – to už ale není předmětem vlastní práce.


Komentáře

RSS 

Komentujeme

Agilita a devops, přepracování a vyhoření

Pavel Houser , 12. červenec 2018 12:30
Pavel Houser

Michael Cote na The Register upozorňuje na častý problém: nové „agilní“ metody vývoje, všechny příst...

Více







RSS 

Zprávičky

Hackeři ukradli zdravotní záznamy 1,5 milionu Singapurců

ČTK , 20. červenec 2018 14:37

Cílem útoku bylo prý získat podrobné údaje o singapurském premiérovi a také o lécích, které užíval....

Více 0 komentářů

Ericsson je díky úsporám v mírném zisku

ČTK , 20. červenec 2018 11:36

Švédský podnik se v poslední době potýkal se slábnoucí poptávkou telekomunikačních operátorů....

Více 0 komentářů

Čip v občanském průkazu si zatím aktivovala třetina lidí

ČTK , 20. červenec 2018 08:00

Prostřednictvím Portálu občana lidé mají přístup např. k údajům o důchodu nebo si mohou pořídit výpi...

Více 0 komentářů

Kalendář

04. 08.

09. 08.
Black Hat USA 2018
09. 08.

12. 08.
DEF CON 26
06. 09.

07. 09.
Humusoft Technical Computing Camp 2018

Starší zprávičky

Red Hat Ansible Engine přináší další automatizaci cloudu

Pavel Houser , 19. červenec 2018 13:52

Nejnovější verze platformy Red Hat Ansible Engine 2.6 rozšiřuje automatizaci cloudů AWS, Google Clou...

Více 0 komentářů

Samsung chystá na příští rok telefon se sklopným displejem

ČTK , 19. červenec 2018 10:00

Displej půjde složit na polovinu jako peněženku. Ve složeném stavu je na přední straně přístroje men...

Více 0 komentářů

Internet Mall snížil ztrátu, tržby mu vzrostly na 7,2 miliardy Kč

ČTK , 18. červenec 2018 17:29

Internet Mall mj. investuje do distribučního centra v Jirnech u Prahy, které by mělo sloužit 7 střed...

Více 0 komentářů

Google dostal kvůli Androidu od EK rekordní pokutu 4,34 mld. eur (aktualizace)

ČTK , 18. červenec 2018 13:26

Google využil Android k upevnění dominantní pozice svého internetového vyhledávače, uvádí EK....

Více 0 komentářů