Řešit bezpečnost softwaru až před jeho uvedením do produkce je pozdě. Na zabezpečení programu je třeba myslet už při jeho návrhu, jinak zákazník při pozdějších úpravách zaplatí zbytečně peníze navíc, říká Radovan Vacek z firmy insighti, která se na bezpečnost softwaru specializuje. Mezi její zákazníky patří například i Good Data.
Čím se vaše firma insighti zabývá?
Zabýváme se testováním bezpečnosti softwaru. Většina našich klientů jsou firmy, které vyvíjejí vlastní softwarový produkt a s námi jej ladí do dokonalého stavu, ve kterém jsou schopni ho nabídnout zákazníkům. Jde především o testování aplikací, a to především webových, ale i mobilních. Kromě toho na něj provádíme penetrační testy.
Co znamená bezpečný software?
Bezpečný software znamená, že slouží jen k účelu, pro který jej vytvořil jeho autor. Nedá se tedy využít nebo přinutit vykonat nějakou jinou akci, která jím nebyla původně zamýšlena. Software musí zajistit integritu, důvěrnost a dostupnost všech uživatelských dat.
V čem spočívá testování softwaru na bezpečnost?
Je potřeba říci, že otestování softwaru jako celku bývá až poslední krok. Na zabezpečení je totiž potřeba pamatovat už v samotném návrhu programu. Máme kapacity, které jsou schopny zakomponovat bezpečnost do software už úrovni jeho architektury a pomoci klientům např. s výběrem frameworků, tedy technologií, ze kterých lze vůbec systém poskládat. Dále umíme provádět tzv. code review, tedy statickou analýzu bezpečnosti kódu. To znamená, že už během vývoje než lze software spustit jako celek, jsme schopni hledat bezpečnostní chyby v jeho zdrojovém kódu. V konečné fázi jde o testování celého systému, kdy se musí otestovat nejen vlastní aplikace, ale celý runtime, v němž vše běží, tedy celé produkční prostředí.
A pokud by se testování bezpečnosti nechalo až na dobu, kdy je software hotový?
Pokud se testy provedou až v okamžiku, kdy je celý software hotový, pro jeho tvůrce to znamená mnohem větší dodatečné úpravy celého řešení, kterému věnoval hromadu úsilí na vývoj, funkční testování a integraci s dalšími komponentami. Když mu týden před uvolněním do produkce někdo sdělí, že má ve svém softwaru fatální chybu, kvůli které jej nemůže pustit ven, znamená to prostě strašně moc práce v ten nejnevhodnější okamžik. Právě proto je dobré s testováním začít mnohem dříve, již od samotného návrhu aplikace.
Je to reakce na skutečnost, že na softwaru se pracuje neustále, pořád se něco dodělává. Je to jako s domem, ten také není nikdy hotový, přesto jej v různých mezifázích různí uživatelé používají. Když vývojáři nepamatují na bezpečnost a pustí do světa něco s takovouto chybou, mohou si uříznout pořádnou ostudu. Musejí na to pamatovat od základu.
Z hlediska našich zákazníků, tedy vývojářů, je také důležité, aby naše výstupy byly pro ně „konzumovatelné“, aby našim připomínkám k bezpečnosti jejich softwaru rozuměli. Vývojář totiž musí nejen pochopit, kde je problém, ale také jak jej má odstranit. Dosavadní zpětná vazba od vývojářů ukazuje, že se nám to daří. Běžnou praxí je, že se po penetračním testu ještě pořádá vysvětlovací seminář. Ten po nás většinou nikdo nechce, protože jej od nás už po výše zmíněných a námi dobře zpracovaných připomínkách nepotřebuje.
Najímají si vás i některé opravdu velké softwarové firmy, když to přeženu, proč ne třeba Microsoft nebo Adobe, jejichž bezpečnostní díry jsou kvůli velkému rozšíření jejich softwaru také nejvíce medializovány?
Microsoft si nás pořád ještě nenajal. Pracovali jsme už ale pro firmy, které si od Microsoftu nebo jiného velkého softwarového výrobce něco koupily. Tímto způsobem jsme již mnohokrát odhalili zranitelnosti v produktech těchto velkých firem, které vystupují jako třetí strana. Mohu jmenovat například VMware, kde šlo o vzdálené desktopy (remote desktop service VHorizon), nebo jsme měli už před nějakou dobou vyreportovány bezpečnostní chyby přímo v kódu PHP interpreteru, a také například.
U kterého softwarového segmentu vidíte největší bezpečnostní mezery?
Dnes veškerý software vzniká strašně rychle a na bezpečnost se proto příliš nehledí, protože na to není čas. Kde je to velmi znát, jsou e-shopy, které na jedné straně spravují obchodní informace, na druhé straně osobní data zákazníků. Bezpečnost ale jde často stranou kvůli tlaku na cenu. Měli jsme možnost s několika internetovými obchody v tomto ohledu pracovat a museli jsme konstatovat, že prostor pro zlepšení byl u všech značný.
Hovořil jste také o penetračních testech. Co znamenají ve vašem pojetí? Může také jít o dobře oblečenou a upravenou dámu potulující se po větší firmě které si nikdo nevšimne, která tu a tam položí USB flashpaměť s nákazou…?
Penetračních testů je celé spektrum. Na jeho jednom konci jde o testy na překonání nějakého perimetru. V prvé řadě jde o vnější perimetr, kdy se někdo pokouší dostat z vnější sítě do privátní sítě organizace. Samozřejmě je ale také třeba mít na zřeteli ochranu vnitřního perimetru, kdy se může chtít dostat ze sítě určené pro hosty do prostoru určeného pro správu serverů. Zde jde o hledání bezpečnostních chyb ve vlastní podnikové síti. Na to pak mohou navazovat různé metody sociálního inženýrství, což také nabízíme. Nejsme však zastánci přístupu, kdy někdo přijde na recepci a „ukecá“ tam recepční, byť tuto variantu mnoho firem také nabízí. Bezpečnost firmy totiž nemůže stát na oné recepční. Ve firmě totiž musejí existovat jiné mechanismy. Vždy se proto soustřeďujeme na plošné testy, nejen na někde pohozené USB flash. V případě USB klíčů jde spíše o jejich rozdávání lidem, kteří mají nějaký vhodný profil a vypadají, že by tuto flashpaměť mohli zasunout přímo do vhodného počítače. Může jít také o phishingové útoky, a to nejen na jednotlivce, nýbrž na celá oddělení dané organizace. Musí jít o simulování skutečné plošné praxe, nejen jak přesvědčit nějakou Marušku na recepci, kterou když nepřesvědčíme, tak s průnikem do organizace končíme.
Je také velmi zajímavé, že zdaleka ne všechny průniky jsou způsobeny tím, že by někdo udělal bezpečnostní „botu“, že by někdo špatně napsal nějaký software. Spíše jde o způsob správy sítě a nastavení jejích různých komponent. V síti může být vše nastaveno, jak má být, avšak zároveň se nabízí nějaký otevřený prostor, se kterým nikdo nepočítal.