Hackovat programy byl můj relax, jako někdo luští křížovky, říká CTO Behavia Libor Mořkovský
CTO a spolumajitel Behavia Libor Mořkovský je člověk s hodně širokým záběrem. Při vedení vývojářského týmu v Behaviu si nedávno střihl doktorát z biologie (analyzoval DNA slavíků), před lety cosi řešil v urychlovači částic v Grenoblu a své krásné svatební oznámení vyryl technikou suché jehly. Rozhovor s Liborem vedl Jirka, další ze zakladatelů Behavia a taky Liborův spolužák z gymnázia.
Libore, tys byl jedním z klíčových vývojářů v Avastu. Přetáhnout tě z Avastu do vlastní firmy byla fuška. Co byly vývojářsky nebo datově nejzajímavější věci, které jsi v Avastu řešil?
Neřekl bych, že jsem byl klíčový vývojář. Ale je pravda, že jsem měl hodně vlivu na to, jak se v Avastu dnes chytají viry. V době, kdy antivir programoval ještě sám Pavel Baudyš, se to totiž dělalo trochu ručně. Na každou virovou rodinu byl nějaký šikovný expert a ten procházel vzorky souborů a hledal, co mají společného. Jenže v době, kdy jsem byl v Avastu, už bylo potřeba analyzovat stovky tisíc nových vzorků denně.
Od dat to někdy není k umění až tak daleko (Liborova analýza účinnosti nové metody rozpoznání malware – zelená barva – ve srovnání s ostatními. Zdroj: Recognizing malware, Libor Mořkovský
Takže jsme tehdy hledali způsob, jak hledání podobností mezi vzorky řešit pomocí strojového učení. A je pravda, že ta nejefektivnější metoda, kterou jsme ještě s kolegy Peterem a Robertem vyvinuli, žije v Avastu šťastně dodnes.
Ke konci jsem pak nejvíc řešil phishing, neboli podvodné prokliky z e-mailů a sociálních sítí. Vymýšleli jsme, jak za jednu vteřinu zkontrolovat 100 tisíc URL adres, jestli mezi nimi není odkaz na falešný login do banky. Protože popravdě, dnes už je nejslabším bezpečnostním článkem člověk, většina malwaru využívá lidských chyb. Dříve „viry“ lezly do systémů otevřenýma dveřma, ale ty už jsou dnes většinou dobře zavřené. Na rozdíl od nechvalně známých předchozích verzí jsou Windows 11 myslím nejbezpečnější systém na světě.
Proč ses nakonec rozhodl opustit zavedený Avast a rozjet se spolužáky z gymnázia Behavio?
Avast jsem viděl vyrůst ze 70 lidí na 1 700, tak jsem si říkal, že bych si měl doplnit zkušenost a zažít ještě z 5 na 70. Navíc jsem si říkal, že z jistot korporátu se s narůstajícím věkem odchází čím dál hůř a že ve třiceti je nejvyšší čas splnit dávnou dohodu s kamarády, že spolu jednou budem podnikat.
My jsme teď ve firmě na 35 lidech, takže si to bohužel do té sedmdesátky už moc dlouho užívat nebudeš. Narůstající tým se projevuje i tím, že místo vlastního vývoje řešíš hlavně code reviews. Vidíš v nich nějaké nedostatky, co se hodně opakují?
Nejhorší je, když vidíš, že člověk investoval hodně práce do věci, kterou vůbec neměl dělat. Půl dne práce na věci, která šla vyřešit jednou řádkou. Dost často mi přijde, že by bohatě pomohlo přečíst si pořádně manuál. Ale je fakt, že u juniorů se tohle špatně řeší na úrovni jednotlivců, protože osobnostně máš obvykle buď řešitele, nebo střelce. Když máš samý řešitele, nebudeš mít nikdy nic hotovýho, když máš samý střelce, budeš mít hnojiště. Ideální je to nějak rozumně sladit v rámci týmu. S narůstající senioritou se to pak samozřejmě přibližuje: člověk nějak odhadne, jak moc se vyplatí studovat dokumentaci a jak moc to zrovna stačí nějak střelit.
Na který z produktů nebo jednotlivých funkcí jsi tu nejvíc pyšný?
Asi na Atlas Čechů. Celý vznikl během ani ne tří měsíců, přitom bylo potřeba ujasnit spoustu datových věcí i mezi námi a sociologickým týmem. Přišlo mi tehdy, že se tím přesouváme z garáže do dobře šlapající firmy, co umí zároveň dobře dělat IT i data. Zároveň je to krásný příklad light-weight produktu: na backendu jedna cloud function v Go obsluhuje dotazy, jedna připravuje data, frontend je Lit appka hostovaná na Firebase a hotovo.
Ale popravdě, bavilo mě to mimo jiné i proto, že jsem si tam zase po čase měl možnost část backendového kódu napsat sám, mimojiné vybírač vzorků: věc, která z našich desítek tisíc respondentů vybere vzorek 3 500 lidí tak, aby opravdu přesně reprezentoval českou populaci.
Je to jednoduchý, velmi efektivně napsaný simulated annealing a funguje nám to dobře. Každý to může v Atlasu sám na mnoha místech překontrolovat. Třeba kolik klientů má Air Bank podle Atlasu Čechů a kolik podle reálných klientských údajů bank, které se čas od času zveřejňují v médiích. Zatím nám to dost sedí.
Vím, že se trochu směješ různým vývojářským “náboženstvím” jako je třeba Agile Manifesto. Ale stejně: máš nějakou základní programovací filosofii nebo myšlenku ty?
To není o tom, že nemám rád ta náboženství, já jenom nemám rád dogmatismus. Aby se člověk něčemu mohl smát, tak by to měl navíc dost znát. Takže já všechny ty metodiky sleduju a znám, akorát si z nich vybírám jen to, co se mi hodí. Kdybych měl za sebe říct tři klíčové principy pro dobrý vývoj, tak je to asi zaprvé důraz na rychlost iterace, tedy aby šly věci odbavovat rychle. To znamená DevOps věci jako continuous integration/continuous deployment, neboli jakmile natlačíš kód do repa, tak se hned něco děje samo. Za druhé: kratší sprinty. Za třetí: ownership. Tedy vyhnout se stavu, kdy vývojář nasype kód na testery a vesele čeká na to, až mu řeknou, že to stojí za prd, ačkoli už sám předem tuší, že to úplně nesplňuje, co mělo. Každý má zkrátka sám zodpovědnost za to, že to bude fungovat dobře.
A funguje to? Máme v Behavio dobrý vývoj?
Vždycky když si po roce rekapituluju, co jsme při velikosti našeho týmu všechno stihli, přijde mi to super. Máme myslím bezva tým. Baví mě ta diverzita: každý má svůj kousek a je za něj plně odpovědný. A taky se mi líbí, že kluky zajímá ta naše doména, tedy sociologické a psychologické výzkumy, chtějí rozumět tomu, co programují.
Vždycky mi přišlo, že ses uměl bleskově zorientovat v nějakém novém prostředí. Ať už to byl nový programovací jazyk, nástroj, cokoli. Třeba když jsme kdysi dávno na gymnáziu potřebovali 3D animaci a tys sis stáhnul 3D studio Max, přečetl sis návod a do pár dní ji vyrobil. Dej mi pár triků, jak se takhle bleskově učit.
Jakmile má software víc než 40 čudlíků, jen nejrychlejší způsob učení přečíst si prostě dobře návod. A pokud něco nemá dobrej návod nebo dokumentaci, tak si to prostě nevybereš, a najdeš si něco jiného. Tohle je třeba dost zásadní věc u různých biologických softwarů, který vznikají dost na koleně a většinou jediný zdroj informací o nich jsou vědecké články. Ty ti ale funkcionalitách nic neřeknou. Takže zásadní skill je poznat po čuchu srágoru, kterou vůbec nemá smysl se zabývat, jinak budeš trávit týdny jen pokusy to rozjet na svých datech.
Mimochodem, to 3D studio Max sis předtím cracknul, což už můžu prozradit, když už jsme starci a je to dávno promlčené. Co tě na tom bavilo a jak se díváš na hackerskou komunitu dnes? Mají i nějaký pozitivní společenský přínos, nebo je to banda zlodějů a vyděračů?
Pro mě byla reverzní analýza kódu takový relax. Někdo luští křížovky, někdo luští software a dělá keygen. Jen je tam trochu větší technická bariéra. Dnes už je to něco dost jiného, protože je v tom hrozně peněz: lidi, kteří tohle umí, dělají security researchery. Říká se tomu offensive security. Nalezenou bezpečnostní chybu lze totiž hodně dobře prodat NSA, Izraelcům nebo klidně Saudům. Ti, co nechtějí nosit tak černý klobouk, to mnohem levněji prodávají přímo autorům softwaru, tím se člověk může zase alespoň pochlubit na Twitteru. To množství peněz nám teď trochu vychyluje rovnováhu směrem k rozbíjení. Je o hodně snazší něco rozbít, než to napsat bez jediné chyby. Najednou má moc lidí pocit, že to mají rozbíjet a trochu dochází lidi, kteří by to opravovali. Zdálo by se, že to je armáda mravenců proti firemním gigantům, kteří drží svůj software schovaný, ale není to tak jednoduché. Čím dál víc softwaru ve firmách je open source. Takže by bylo fajn vytvářet podobné finanční incentivy i na druhé straně barikády, a jsem moc rád, že takové věci už se začínají dít ($1M pro Linux, $10B do zabezpečení firem, Google TAG tým, který aktivně hledá zneužívání chyb).
Offensive security má mimochodem ještě jeden zajímavý efekt. Hlavní zákazníci dobrých offsec researcherů jsou státy a tajné služby. Ti mají díky těm zakoupeným chybám docela vysokou jistotu, že se dostanou do počítače nebo mobilu nějakého sledovaného člověka, když bude třeba. A to paradoxně snižuje jejich snahu legislativně nařizovat nějaká zadní vrátka v ochraně softwaru nebo sítí, což by byla pro bezpečnost běžného uživatele mnohem větší katastrofa. Neboli: protože si vlády na tajnačku kupují způsoby, jak hacknout něčí spuštěný počítač, dovolí nám mít opravdu nezlomitelně zašifrované disky a internetové přenosy. A to se hodí.
Jaký podcast bys mi tedy oborově doporučil k poslechu a proč?
Lexe Fridmana. Každý, kdo ve světě IT něco pořádnýho udělal, u něj byl. Třeba autoři Javy, Pythonu, Unixu…. Zrovna díl s jedním z lidí, kteří vytvořili Unix, Brianem Kernighanem mě dost bavil. A taky mě trochu baví sám Fridman, je vřelý, umí lidi pochválit a občas je celkem zábavnej autista.
Spolu s dalšími bývalými kolegy z Avastu jsi jeden z prvních lidí v Česku, kteří si přišli na slušné peníze díky programu zaměstnaneckých akcií. Čeští programátoři na to zatím moc neslyší, zřejmě proto, že kolem sebe mají málo konkrétních příběhů lidí, kteří opravdu už něco dostali. Nechtěl by sis koupit nějaký cool drahý auto a udělat tak zaměstnaneckým akciím trochu reklamu?
Když já vůbec nejsem na ty statusový symboly. Já od věcí vyžaduju, aby fungovaly, pak jsem za ně ochotný platit víc.