Na testování bezpečnosti softwaru je třeba myslet od začátku jeho návrhu a vývoje. Existuje k tomu řada automatizovaných nástrojů, jak komerčních, tak open source, vždy by je ale měla doplnit službou testování bezpečnosti od specializované firmy. Zkušený expert je vždy více než stroj, který si většinou poradí jen s méně sofistikovanými útoky, říká Radovan Vacek z firmy insighti, která se touto problematikou zabývá.
V poslední době existuje množství firem a vzniká řada startupů se zajímavými produkty v oblasti vývoje softwaru. Jak jsou na tom tyto firmy z hlediska bezpečnosti?
Softwarové firmy se v první řadě snaží vyvinout funkční produkt a jeho bezpečnost není tím, čím by se primárně zabývaly. Většinou je to kvůli nedostatku kapacit, času, ale třeba i praktických zkušeností. Otázku bezpečnosti pak začnou komplexněji řešit většinou až v době, kdy překročí svoji embryonální fázi startupu. Pak hledají možnosti, jak zabezpečení programu zvýšit.
Proč by si vás firmy tohoto typu měly vůbec najmout?
Bezpečnost se dnes stala významným prodejním artiklem. Nemůžete poskytovat služby zákazníkům, ať už institucionálním nebo fyzickým osobám, aniž byste alespoň neproklamovali bezpečnost. Pokud však bezpečnost neměříte, ani nevíte, jestli jí máte. Proto byste také měli provádět testy bezpečnosti, a to stejným způsobem, jako když provádíte testy na funkčnost produktu. Proto by měly vývojářské firmy vždy spolupracovat s někým, kdo tyto testy na bezpečnost provádí, třeba s námi. Druhá možnost je řešení zabezpečení produktu svépomocí, to je ale téměř ve všech případech méně účinné i efektivní.
V čem zpravidla dělají startupy, začínající vývojáři, nejčastější chyby?
Právě tím, že bezpečnost neměří a přicházejí k jejímu řešení dost pozdě. Pokud do takovéto firmy přijde náš tester, v drtivé většině případů slaví velké vítězství. Šachisté by tomu řekli „šustrmat“ – mat na tři tahy.
A mohou si vás startupy vůbec dovolit najmout?
Samozřejmě. Tady existuje zažitá představa, že malou firmu pomoc profesionálního dodavatele bezpečnosti musí zruinovat. Naše služby jsou ale diferencované podle rozsahu a složitosti řešení, což většinou i koresponduje s velikostí a možnostmi vývojáře.
Náklady na bezpečnost pak tvoří nějakou adekvátní část, která podle mě rozhodně není nijak zásadní. Navíc jak jsem již říkal, pokud si firma řeší bezpečnost sama, většinou je to méně efektivní a tedy víc nákladné.
Existuje nějaké obecné doporučení, jak by měly takovéto mladé firmy s jinak dobrými nápady postupovat, aby byl jejich produkt zároveň bezpečný?
Doporučením je o bezpečnost se zajímat. Tak jak je jasné, že softwarový produkt musí mít funkční vlastnosti a dělat, co se od něj požaduje, musí se stejným způsobem klást důraz i na jeho zabezpečení. Dnes už jde o větší téma, než jak tomu bylo v minulosti. Na internetu lze najít velké množství zdrojů, jak vyvíjet bezpečné aplikace, čemu se vyhnout, jaké knihovny a návrhové vzory v aplikacích používat. To všechno vede k tomu, že bezpečnost aplikací je dnes vyšší, než bývávala.
Hacking však zároveň stojí na trochu jiných principech než tyto programátorské návrhové vzory. Proto je dobré se bezpečností zabývat už od začátku návrhu aplikace, testovat si ji, a to včas. Existují firmy jako naše insighti, které k tomu poskytují servis. Kromě toho je však dostupné velké množství nástrojů, komerčních i open source, které alespoň nějaké základní měření bezpečnosti umožňují. Určitě bych proto všem doporučil, aby po nich sáhli a co nejdříve je do svého vývojového cyklu nasadili.
Jaký je rozdíl mezi automatizovaným testováním a testováním od specializované firmy, jakou je třeba vaše insighti?
Automatizovaný test udělá pouze ty kroky, které do něj nějaký tvůrce sepsal. Nenapsal je však se znalostí té které konkrétní aplikace, kterou testovat má. Vždy proto bude takový test omezen na ty věci, které jdou udělat jednoduše a velice genericky, aby byly aplikovatelné na téměř kterýkoliv aplikační software. Vývoj softwaru je ale poměrně široké téma, používají se různé knihovny, technologie, vývojáři různě přistupují k řešení stejného problému.
Proto také nelze vždy tyto generické postupy s vidinou dobrého výsledku pro zajištění bezpečnosti aplikace úspěšně aplikovat. Použitím automatizovaného nástroje se pravděpodobně jen vyhnete tomu, aby někdo bez hlubší znalosti váš software hacknul tím, že si stáhne nějaký „tool“ a s jeho pomocí našel chybu typu „low hanging fruit“. Pokud však uvažujete o seriózní bezpečnosti, zejména z pohledu klientů, pak lidská práce (etického) hackera jako takového zajde mnohem, mnohem dál. Najde totiž takové věci, které generalizovat nejdou a budou platné jen pro váš softwarový produkt, které žádný automat nemůže najít.