Open-source je poprvé kvalitnější než proprietární software

Z analýz zdrojových kódů za rok 2013 vyplynulo, že Open-source programy obsahují méně chyb. Jak je to ale s celkovou bezpečností? Můžeme věřit svobodným vývojářům?

Poslední týdny se v médiích, včetně těch obecných skloňuje chyba Heartbleed. Kritická chyba, která se objevila v knihovně OpenSSL v březnu 2012 umožnovala vylákat ze serverů (i klientů) privátní šifrovací klíče, hesla i další bezpečnostní prvky. Po dva roky tak měli šikovní hackeři možnost poměrně jednoduše útočit na servery, které se tvářili zabezpečeně. Až v dubnu byla chyba CVE-2014-0160 v kódu OpenSSL opravena.

Zároveň s tím se opět zintenzivnila debata o tom, jaký typ softwaru je bezpečnější a kvalitnější. Je jím open-source, který může každý programátor otevřít, dlouhé měsíce kontrolovat a objevovat chyby, nebo proprietární „closed-source“, jež kontrolují sami společnosti vyvíjející software?

Open-source vs. Closed-source

Open-source, který u nás rádi nazýváme svobodným softwarem je specifický svou vlastností veřejného zdrojového kódu. Kdokoliv může tento kód vzít, doma si jej přepsat, znovu zkompilovat a používat svoji zkontrolovanou verzi. To stejné mohou udělat společnosti, které využijí GNU licencí a původní kód rozšíří o svůj díl a tento software dále distribuují.

Zastánci open-source rádi hovoří právě o oné kontrole stovkami či tisícovkami dobrovolníků, kteří by měli objevené chyby nahlašovat a zasadit se tím o bezpečnější software. To, v jaké míře takováto kontrola funguje, je na dlouhé filozofické debaty či spory mezi oběma tábory. Chyba Heartbleed však ukázala, že ani velké open-sourcové projekty, se nevyhnou kritickým chybám.

Naproti tomu proprietární software komunita jen tak „kontrolovat“ nemůže. Za jeho vývojem i odhalování chyb stojí vývojové a bezpečnostní týmy samotných společností, které program vyvíjí. U těch největších korporací, jakou je třeba Microsoft, prochází všechny změny v kódu několika instancemi kontrol, kdy je většina chyb odhalena.

Open-source software, který zde může být prezentován právě kryptografickou knihovnou OpenSSL, stojí a padá na oné dobrovolnosti. Vývojový tým OpenSSL čítá do dvaceti programátorů. Další rutina především s kontrolou kódu je ponechána komunitě.

Jen největší naiva by si mohl myslet, že předtím než Codemicon odhalil chybu v OpenSSL a pojmenoval ji podle mechanismu, který zneužívá, o ní nikdo nevěděl. Spekuluje se o tom, že chybu zneužívala NSA a nejeden bezpečnostní expert se nechal slyšet, že samotná NSA může za touto chybou stát.

Infikovat software s otevřeným zdrojovým kódem je logicky mnohem jednodušší než se dostat do vývojového týmu v některé z velkých korporací a tam nepozorovaně do kódu vložit nenápadnou kritickou chybu. V hierarchii open-sourcových vývojářů panují pro takové počínání mnohem přívětivější podmínky.

I proto se v poslední době hovoří o velkých změnách, které by mohly ve vývoji softwaru nastat. Audity, které by nahlížely do zdrojových kódů kritických projektů by mohly být jistější cestou, než současná „komunitní“ kontrola.

Co je kvalitnější

Bezpečnostní firma Coverity se zabývá analýzou zdrojových kódů a odhalování chyb. Ač vznikla jako agentura při ministerstvu obrany USA, nyní pracuje nezávisle. V únoru tohoto roku byla koupena americkým gigantem Synopsys.

Každý rok analyzuje stovky milionů řádků kódů jak softwaru s otevřeným kódem, tak proprietárních aplikací. Právě z těchto analýz vznikla statistika za rok 2013, v níž mohla být porovnána na solidním vzorku kvalita obou softwarových řešení.

Mezi otevřené projekty, které Coverity analyzuje a hlásí chyby, patří i NetBSD, FreeBSD, LibreOffice, Apache Hadoop či Linux. Celkem jich za rok 2013 bylo 741 s celkovým počtem 252 milionů řádků zdrojového kódu. Mezi proprietárním softwarem byl vzorek tvořen celkem 493 projekty s 684 mililony řádků kódu.

Screen Shot 2014-04-18 at 01.16.21.png
Počty zkontrolovaných  řádků kódu a chyb v nich objevených

V tabulce si můžete prohlédnout jak informace o zkoumaných projektech včetně průměrné velikosti zdrojových kódů, tak výsledky. Nejpodstatnějším číslem je poslední řádek – počet objevených chyb na tisíc řádků kódu. Z výsledků tedy vyplývá, že 100 000 řádků open-sourcového programu obsahuje průměrně 59 chyb, kdežto u proprietárního softwaru je to 72 chyb. Tímto výsledkem skončila roční analýza poprvé. Do roku 2012 podle Coverity vždy platilo, že proprietární software obsahoval menší množství chyb.

Pokud patříte mezi C/C++ vývojáře, můžete se podívat i na nejčastější typy chyb, které se v kódu nejčastěji objevují.

Screen Shot 2014-04-18 at 01.37.44.png
Typy chyb, které se v kódu nejčastěji vyskytují

Coverity podrobuje pravidelným kontrolám i linuxové jádro. Do výsledků za rok 2013 byla zahrnuta analýza kernelu s označením 3.12. Obsahovala přes 8,5 mil. řádků zdrojového kódu, v nichž bylo nalezeno 3 299 chyb. Jak se vyvíjel počet chyb v jádře linuxu se můžete podívat v tabulce:

Screen Shot 2014-04-18 at 01.37.53.png
Takto je na tom s bezpečností Linux

Coverity nám statistikou za rok 2013 potvrdilo, že open-source může mít kvalitnější zdrojový kód s menším počtem chyb. O nalezených problémech v kódu se však ve většině případů nedá mluvit jako o bezpečnostních chybách. Z tabulky výše vyplývá, že jde o programátorské chyby jako jsou neinicializované proměnné nebo špatná práce s pamětí.

Heartbleed nám naopak ukázalo, že open-source v případě kritických bezpečnostních řešení nemusí být nejlepší volbou. OpenSSL patří k nejpoužívanějším šifrovacím knihovnám a až následující měsíce či roky nám ukáží, zda tomu tak bude i nadále nebo se vývoj open-source ubere novým směrem.

Diskuze (79) Další článek: Nový algoritmus Googlu dokáže vyluštit i složitý test CAPTCHA

Témata článku: , , , , , , , , , , , , , , ,