Tuesday, April 12, 2011

Bezpečnost - srovnání OSS vs komerční SW vs. cloud, příklady

Kategorie SW, vyjasnění pojmů

Než začnu přímo o bezpečnosti SW, rád bych ujasnil několik pojmů ve vztahu k druhům SW, kterým se tu budu věnovat. Zkratka OSS je většině čtenářů nejspíše povědomá, znamená Open-source software a používá se ve stejném znění i v češtině. Ačkoli nejde přímo o obchodní známku, je OSS od roku 1998 definován společností Open Source Initiative (OSI), která na svém webu udržuje tzv. OSD (Open Source Definition) a seznam softwarových licencí, které definici splňují. Ta obsahuje 10 podmínek či svobod, z nichž nejdůležitější jsou právo studovat, upravovat a šířit (upravený) zdrojový kód takto licencovaného SW.

Vedle OSS však existuje i pojem free software (v češtině také tzv. svobodný software), který definuje organizace Free Software Foundation (FSF). Ta byla založena již 1985 a jejím hlavním představitelem a obecně i propagátorem free software je Richard Stallman. Definice free softwaru je jen nepatrně striktnější než OSD a množiny vyhovujících licencí jsou tak téměř shodné. Rozdíly jsou spíše teoretické – zatímco hnutí free software je starší a zdůrazňuje spíše svobodu SW jako ideál, hnutí OSS se vyčlenilo až později a je spíše praktičtějším směrem, který se chtěl „zbavit“ slova free, které může být komerčně nevýhodné a odrazující. Především však může být zavádějící, co se týká významu - jak ostatně poukazuje právě např. R. Stallman:

„This is a matter of freedom, not price, so think of free speech, not free beer.“

V praxi však oba pojmy splývají a postupem času vznikly společné zkratky FOSS či FLOSS (Free/Libre/Open source SW). Lehce zavádějící mohou být i dnes moderní pojmy „Source available„ popřípadě „Shared source“, které však značí pouze dostupnost kód a nikoli již možnost ho modifikovat a redistribuovat. V dalším textu se budu věnovat už jen OSS a budu jím obecně myslet i free software, protože rozdíly v praxi jsou zanedbatelné.

Obr. 1 - Kategorie SW dle GNU

Pojem komerční SW teoreticky znamená software šířený za úplatu, ale v praxi je často chápán jako opak OSS, tedy software s uzavřeným kódem. Ten se však v odborné terminologii správně nazývá spíše jako proprietární SW, případně ještě „non-free“ nebo přímo „closed-source“. V dnešní době navíc může být do jisté míry komerční i OSS, protože může využívat komplementárních obchodních modelů (např. platba jen za podporu, dokumentaci atd.) Pokud tedy v dalším textu budu mluvit o komerčním SW, je tím myšlen především SW proprietární jakožto protipól OSS.

A nakonec pod pojmem cloud bude myšlen především klasický veřejný (public) cloud (tedy nikoli interní či hybridní způsoby nasazení) a konkrétně distribuční model SaaS, tedy Software as a Service.


Co je to vlastně bezpečnost SW?

Bezpečnost SW nemá v dnešní době jasnou jednotnou definici. Obecně je jí většinou myšlen stav, kdy SW pracuje přesně tak, jak má a vykonává správně a výhradně jen ty funkce, které uživatel očekává. V dnešní době je už však bezpečnost spíše než jako stav často chápána jako proces, který začíná už při návrhu SW a končí až jeho vyřazením z provozu. Jednotná situace nepanuje ani v oblasti měření bezpečnosti SW, existuje několik druhů kritérií:

  1. Počet bugů/zranitelností - na produkt či jeho verzi, nebo na určitý počet řádek kódu (nejčastěji 1000).
  2. Doba od odhalení bugu k updatu vyjadřující reakceschopnost vývojáře a tedy v podstatě velikost prostoru pro zneužití nově nalezené zranitelnosti.
  3. Stabilita programu jako takového.
  4. Stabilita a bezpečnost HW, na kterém daný SW běží.
  5. Lidský faktor jakožto statisticky největší bezpečnostní slabina nejen podnikových informačních systémů (některé zdroje uvádějí procentuální podíl na útocích i přes 30%).

Mapováním bezpečnosti SW z hlediska těchto kritérií se zabývají různé společnosti (např. Secunia), avšak nutno poznamenat, že jejich metodiky hodnocení se liší a mohou výrazně ovlivnit celkové výsledky. Lze tedy doporučit je brát s rezervou. Navíc zejména u komerčního SW nebo cloudu tyto srovnávací studie často nemají dostatek informací (objevuje se zatajování).


OSS (Open source software)
+ Linusův zákon: „Given enough eyeballs, all bugs are shallow.“ Aneb více očí víc vidí - zdrojový kód OSS je vystaven veřejnosti a studuje ho mnoho vývojářů a odborníků, kteří mohou odhalovat, reportovat nebo i rovnou opravovat chyby.
+ Rychlejší opravy chyb - komunita kolem OSS produktu je obvykle (u významných projektů) reagovat rychleji než dodavatelé komerčních produktů. Navíc chyby u OSS lze v případě nutnosti opravit i svépomocí (což např. po ukončení podpory komerčního SW nelze).
+ Spolupráce na projektech vynucuje dodržování standardů, čitelný kód se snáze reviduje a opravuje. Tento tlak je tedy přirozený narozdíl od mnoha komerčních projektů.
+ Nezávislost na dodavateli, možnost přizpůsobit SW na míru zvyšuje bezpečnost, protože dělá přesně a jenom to, co chceme, a zmenšuje tak prostor pro chyby v kódu i omyly uživatelů.
- Snazší přístup útočníků k „lidskému“ kódu (Google Code Search).
- Kdokoliv může vložit vlastní tj. i škodlivý kód (zejména trojské koně).
- Vysoká míra sdílení SW knihoven usnadňuje šíření potenciální zranitelnosti, protože objeví-li se v jedné komponentně chyba, jsou díky ní zranitelné všechny produkty, které tuto komponentu využívají.
- Obvykle není definována legální odpovědnost (žádné záruky, pravidla, povinnost podpory...)
- Menší projekty a komunity nemusí být schopny dosáhnout potenciálních výhod OSS, není „dost očí“.


Komerční SW
+ Obtížnější (ale možný) přístup útočníka ke kódu, obtížnější hledání slabin lidskou analýzou kódu.
+ Vývojáři jsou finančně motivovaní a v případě velkých firem jde o špičkové specialisty.
+ U větších firem bývá vývoj dobře procesně řízen. (Oproti OSS je to však spíše než přirozeným tlakem vynuceno směrnicemi a pravidly společnosti).
+ V případě chyb lze jasně přiřadit odpovědnost a firmě hrozí ztráta byznysu vyvíjející tlak na zaměstnance.
- Svádí k tomu, spoléhat na utajení kódu, což odporuje Kerckhoffsovu principu (nespoléhat na utajení algoritmu, ale pouze na utajení klíče). Dnes navíc existují automatické nástroje hledající vzory v strojovém (reverzním inženýrstvím vygenerovaném) kódu.
- Závislost na dodavateli, princip „ber nebo nech být“ - může se projevit např. u bezpečnostních aktualizací (které jsou navíc pomalejší než u OSS), u podpory, změny rozhraní atd.
- Pirátské verze se škodlivým kódem, neupdatují se - je dobře známo, že mnoho uživatelů včetně firemních využívá pirátské kopie programů, které si pak nemůže aktualizovat a znamenají bezpečnostní hrozbu.
- Komerční SW je často atraktivnějším cílem útoků, ale dnes to už příliš neplatí vzhledem ke komercionalizaci OSS a jeho masovějšímu nasazení.


Cloud SW (SaaS)
+ Rozhoduje důvěra a z toho plyne extrémní snaha providerů ji neztratit.
+ HW a data jsou ve špičkově technicky zabezpečeném datacentru, které dalece předčí možnosti drtivé většiny obchodních firem. Provideři těží z konsolidace, úspor z rozsahu a specializace.
+ Profesionální špičkoví admini SaaS providera mnohonásobně kvalitativně předčí běžné "ajťáky", což znamená menší prostor pro chyby lidského faktoru (s jeho dobře známým velkým podílem).
+ Updaty a změny jsou vždy konzistentně provedeny narozdíl od postupů v praxi běžných firem, kde je často aktualizován pouze OS a antivirový systém.
+ Odpovědnost a pravidla jsou jasně definovány v SLA (v rámci bezpečnosti jsou např. stanoveny metody šifrovaných přenosů a ukládání dat atd.)
- Data i systém mimo kontrolu zákazníka – důvěra?
- SaaS provider má silné důvody zatajovat problémy a nabízejí se spekulace o metodách organizovaného cyberzločinu (populární téma: platí Google výpalné)?
- Závislost na dodavateli, princip „ber nebo nech být“ - může se projevit například při globálním vynuceném přechodu na novou verzi SW s novým GUI, které může zmást některé uživatele a způsobit chyby. Možnost „nech být“ je však u cloudových řešení levnější díky minimálním fixním nákladům.
- Extrémní atraktivita SaaS providera jako cíle útoku pro hackery. Úspěšný útok či i jen odhalení zranitelnosti může přinést značné finance.


Příklady

Příklady produktů z jednotlivých zde rozebíraných kategorií jsou poměrně známé, tak uvádím jen několik z nich v přehledové tabulce:

Obr. 2 - Příklady produktů z různých kategorií SW

Co se týká naměřených hodnot bezpečnosti v rámci kategorií, neexistuje žádné globální srovnání. Dostupné jsou rozsahem omezené studie na jednotlivé produkty. Ty se však někdy i významně liší použitou metodikou a nelze z nich příliš vyvozovat globální závěry. Nejzajímavější je dnes pro uživatele stav bezpečnosti cloudových řešení, ale tato oblast dosud není kvantitativně veřejně prezentována, takže konkrétní případy nechávám spíše na diskuzi na semináři - například Bounty program Googlu ad.


Závěr

Závěrem lze shrnout, že bezpečnost SW dnes není jasně a jednotně definována, ale obvykle se jí myslí stav, kdy se SW chová přesně podle očekávání uživatele, či je chápána zcela dynamicky a komplexně jako proces. Otázku srovnání bezpečnosti OSS, komerčního SW a cloudových řešení SaaS nelze obecně zodpovědět, každá kategorie má své silné a slabé stránky. Potenciál OSS být bezpečnější než „komerční“ může být realizován jen u dostatečně velkých a významných projektů. Cloud je potom pro většinu běžných firem nejbezpečněší, ale nelze mu svěřit přísně tajná a kritická data (vláda, armáda, banky…). V praxi tedy nezbývá než posuzovat vhodnost určitého produktu až ve vztahu k jeho konkrétnímu nasazení a podmínkám.


Použité zdroje

http://www.root.cz/clanky/kdy-se-firme-vyplati-prejit-na-open-source/
http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/open-source-security.html
http://www.cert.org/archive/pdf/CyberSecuritySurvey2011.pdf
https://svobodnysoftware.frantovo.cz/drupal/node/6
http://linuxzblizka.blog.zive.cz/2010/04/linusuv-zakon/
http://securityworld.cz/securityworld/cloud-bezpecnost-a-erp-systemy-podle-ceho-volit-3129

No comments:

Post a Comment