Argumenty bezpečnosti open-source

Argumenty bezpečnosti open-source
« kdy: 28. 04. 2020, 10:09:41 »
Ahoj, v enterprise prostředí se často setkávám s názorem, že open-source software je zabugovaný a je nutné ho záplatovat a hlídat "3x více"  než proprietární produkty od MS a dalších. Často i od lidí, kteří za tím nemají svůj obchodní zájem.

Nechci spouštět nějaký flame. Je jasné, že existuje dobrý a špatný open source a to stejné platí o proprietárním softwaru.

Jaký používáte argument pro vyvrácení tohoto bludu? Argument, že open-source používá spousta firem mi přijde takový plytký.


Re:Argumenty bezpečnosti open-source
« Odpověď #1 kdy: 28. 04. 2020, 10:37:16 »
Mnohem lepší argument je, že open source vyvíjí spousta firem a má na tom postavený byznys. Třeba IBM (vlastník Red Hatu), SUSE, Canonical a spousta dalších. Oni mají stejný zájem na bezpečnosti jako zmíněný Microsoft, který mimochodem taky přispívá do spousty open-source projektů. Navíc všichni spolupracují a stačí to opravit jednou pro všechny.

Re:Argumenty bezpečnosti open-source
« Odpověď #2 kdy: 28. 04. 2020, 11:06:44 »
Chyby: vznikají jak v OSS, tak v uzavřeném SW.

Uzavřený SW: nikdo kromě vendora nemá velkou šanci ukrytou chybu najít.
Otevřený SW: v praxi je popsáno dost případů, kdy i velmi závažné chyby existovaly bez povšimnutí dlouhé roky.
Uzavřený SW: backdoory mohou existovat kvůli zájmům vendora, i kvůli zájmům jeho země
Otevřený SW: backdoory mohou být propašovány stejným způsobem (do OSS velkou měrou přispívají giganti, kteří patří i do předchozí skupiny)

V tomto porovnání mi to přijde z hlediska rizik prakticky rovnocenné.
Méně rovnocenné mi to přijde v zájmu hledání chyb. U uzavřeného SW je přímým komerčním zájmem vendora, aby neztratil důvěru zákazníků, lze předpokládat, že do této aktivity investuje část peněz. U OSS opravdu musí tuto činnost řešit samotný uživatel software.

Ale jak psal pan kolega Krčmář, nelze to paušalizovat. Např. OSS který vyvíjí RedHat, SuSE a další je pro ně zároveň komerčním zájmem a tam to funguje úplně stejně jako ukomerčního software. Na Vás je "jen" sledovat a aktualizovat. Podobně je na tom třeba i PostgreSQL (který takový přímý komerční tah nemá) a spousta dalších. Naopak odstrašujícími příklady OSS a bezpečnosti jsou např. CMS systémy typu WordPress a další.

Z hlediska firmy bývá někdy levnější vzít řešení od partnera (ať už je postavené na OSS či ne), který se umí o systém postarat pod nějakou smlouvou.

U proprietárního software taky nelze paušalizovat. Např. Microsoft musí dbát na to, aby neztratil důvěru firem, byl by bez chleba. Existuje ale spousta komerčních SW, u kterých vendor na aktualizace a bezpečnost z vysoka prdí. V takovém případě je lepší OSS alternativa.

Pokud bych si to dovolil trochu zpaušalizovat, pak bych řekl, že pro malé a střední podniky (do několika set zaměstnanců) platí: pokud existuje komerční produkt, který je dobře udržovaný, pak je levnější, než OSS alternativa. Pokud takový neexistuje, pak je OSS výborná volba. (Tato teze vychází ze základních zákonů trhu, cena směřuje k optimu - kdyby OSS ohrožoval některého vendora, logicky sníží cenu)
« Poslední změna: 28. 04. 2020, 11:08:25 od Miroslav Šilhavý »

Re:Argumenty bezpečnosti open-source
« Odpověď #3 kdy: 28. 04. 2020, 11:10:47 »
Především je potřeba si uvědomit, že nelze automaticky předpokládat, že počet vydaných oprav odpovídá počtu nalezených chyb. Když nějaký projekt nebude vydávat opravy vůbec, nemůžu z toho přece vyvozovat, že ten software nemá žádné chyby. Zrovna tak sice praxe některých komerčních firem vydávat opravy kumulativně např. jednou za měsíc sice na první pohled vypadá prakticky (je otravné pořád instalovat nějaké updaty), ale znamená to, že zákazník bude často na opravu konkrétní chyby zbytečně čekat déle, než je nutné.

Není žádný důvod předpokládat, že by v open source bylo a priori víc chyb. U obou modelů jsou projekty vedené dobře a projekty udržované mizerně. Celkově bych ale spíš řekl, že public scrutiny u open source nutí vývojáře k větší sebekázni a lepší kultuře. Viděl jsem zdrojáky některých projektů, které byly dlouhodobě vyvíjeny jako closed source a potom otevřeny, viděl jsem zdrojáky některých out of tree jaderných modulů a s trochou cynické nadsázky bych řekl, že hlavním důvodem, proč mnohé firmy upřednostňují closed source vývoj, není ani tak strach o jejich drahocenné know-how, ale spíš strach z ostudy, kdyby ty zdrojáky viděl někdo cizí.

Re:Argumenty bezpečnosti open-source
« Odpověď #4 kdy: 28. 04. 2020, 11:25:25 »
Ten názor zjevně pramení z toho, že dotyčný má zmatek v tom, co je open source a co je software zdarma. Firmy opensourcují software (a určitě do něj otevřením zdrojových kódů nenaskáčou chyby), staví na opensource (např. Chromium → Chrome nebo VSCodium→ VS Code od Microsoftu) a nedává smysl, aby si firma někde bokem držela úpravy, které tu opensource část udělají méně chybovou. Microsoft umožňuje po podepsání příslušných NDA získat zdrojové kódy Windows – a pokud nějaká firma či vláda má ke zdrojákům Windows přístup, nejsou pro ně Windows najednou 3× více chybové. Takže to, jestli má nebo nemá někdo jiný přístup ke zdrojovým kódům evidentně nemá vliv na to, jak je software zabugovaný“.

Možná si to ale spíš pletou se softwarem poskytovaným zdarma. Tam je ale zase několik variant – můžete mít software poskytovaný zdarma, ke kterému nikdo neposkytuje žádnou podporu a žádné záruky. Ale ke spoustě softwaru, který je dostupný i zdarma, je možné zaplatit si podporu. Pak je to ale s podporou stejné, jako u jakéhokoli jiného komerčního softwaru.

Podle mne o chybovosti softwaru rozhoduje především to, kolik lidí se věnuje vývoji. A to samozřejmě může být od one man show open source projektu i komerčního softwaru po velké projekty. Pak už je to víceméně jen o poměru „objem kódu ku člověkohodinám programátorů a testerů“, a to bych si tipoval, že linuxové jádro na tom bude o dost lépe, než Microsoft, produkty RedHatu řádově srovnatelně atd.

No a pokud někdo argumentuje speciálně Microsoftem, připomněl bych mu, že Microsoft evidentně open source věří, protože spousta služeb v Azure je postavená kolem open source. Takže pokud věří Microsoftu, ať si ten open source klidně koupí od Microsoftu :-)


Re:Argumenty bezpečnosti open-source
« Odpověď #5 kdy: 28. 04. 2020, 11:43:39 »
Uzavřený SW: nikdo kromě vendora nemá velkou šanci ukrytou chybu najít.
Tohle není pravda. Open source pomáhá, když chcete chybu pochopit a když jí chcete opravit. Pro nalezení chyby jsou ale zdrojové kódy jen velmi mizivý přínos.

Otevřený SW: v praxi je popsáno dost případů, kdy i velmi závažné chyby existovaly bez povšimnutí dlouhé roky.
To platí i pro uzavřený software.

Méně rovnocenné mi to přijde v zájmu hledání chyb. U uzavřeného SW je přímým komerčním zájmem vendora, aby neztratil důvěru zákazníků, lze předpokládat, že do této aktivity investuje část peněz. U OSS opravdu musí tuto činnost řešit samotný uživatel software.
Za prvé, i open source může být komerční. Za druhé, dodavatel může investovat část peněz do toho, aby neztratil důvěru zákazníků. Ta investice ale může jít jak do skutečného zlepšování softwaru, tak do tajení chyb.

Např. Microsoft musí dbát na to, aby neztratil důvěru firem, byl by bez chleba. Existuje ale spousta komerčních SW, u kterých vendor na aktualizace a bezpečnost z vysoka prdí. V takovém případě je lepší OSS alternativa.
Záleží na tom, v jaké oblasti. Pokud jde o Windows, není pravda ani že by byl bez chleba, ani že by ztratil důvěru. To, že na bezpečnost z vysoka prdí, je naopak u Windows jedna z jejich největších výhod, ne-li ta největší. A Microsoft naopak ztrácí důvěru klientů pokaždé, když se snaží udělat Windows bezpečnější. Samozřejmě není řeč o nějakých záplatičkách buffer overflow apod., ale o koncepci OS – a tam Microsoft sází na obrovskou zpětnou kompatibilitu, představu, že počítač nepotřebuje žádného správce, a představu, že software se distribuuje tak, že někde na internetu splašíte nějaký EXE soubor a ten spustíte. Tyhle tři věci jsou obrovské bezpečnostní díry, a zároveň jsou to pilíře, na kterých veškerá obliba Windows stojí.

Pokud bych si to dovolil trochu zpaušalizovat, pak bych řekl, že pro malé a střední podniky (do několika set zaměstnanců) platí: pokud existuje komerční produkt, který je dobře udržovaný, pak je levnější, než OSS alternativa. Pokud takový neexistuje, pak je OSS výborná volba. (Tato teze vychází ze základních zákonů trhu, cena směřuje k optimu - kdyby OSS ohrožoval některého vendora, logicky sníží cenu)
o ale vycházíte z předpokladu, že komerční je protikladem open source. Což je chybný předpoklad. Můžete mít jak komerční udržovaný open source, tak si můžete koupit desítky počítačů s OEM Windows a podporu budete mít nulovou.

Re:Argumenty bezpečnosti open-source
« Odpověď #6 kdy: 28. 04. 2020, 11:53:42 »
Uzavřený SW: nikdo kromě vendora nemá velkou šanci ukrytou chybu najít.
Tohle není pravda. Open source pomáhá, když chcete chybu pochopit a když jí chcete opravit. Pro nalezení chyby jsou ale zdrojové kódy jen velmi mizivý přínos.

Takze kdyz mam neosetreny zapis do bufferu, nebo kdyz neresim v pripade UTF-8 rozditl byte vs character delky, coz je podstatna cast nalezenych chyb, pristup k zdrojaku mi nepomuze?
Ono sakra podstatnou cast takovych chyb najde blbej valgrind, akorat to nikdo nedela.


Re:Argumenty bezpečnosti open-source
« Odpověď #7 kdy: 28. 04. 2020, 11:56:54 »
Kvalita SW nezalezi na tom, jestli je opensource/closed source.

Opensource ma snazsi moznost nalezeni chyby z prosteho duvodu volnych zdrojaku, jestli ty zdrojaky ale opravdu nekdo prohlizel, je vec jina.

Re:Argumenty bezpečnosti open-source
« Odpověď #8 kdy: 28. 04. 2020, 12:16:36 »
Kvalita SW nezalezi na tom, jestli je opensource/closed source.

Dotaz byl na celkovou nákladnost, ne na jakost SW. Odpověď je: záleží na konkrétní situaci a na konkrétním software a taky na tom, jaký aparát má klient. Pokud má vývojový tým a hodí se mu začlenit nějaký OSS do svého portfolia, může být levnější se o něj starat sám. Pokud má tři a půl pracovníků, kteří nevědí kam skočit, může OSS vyjít dráž než komerční.

Na tyto otázky chce kdekdo odpověď, ale ta prostě není triviální.

Re:Argumenty bezpečnosti open-source
« Odpověď #9 kdy: 28. 04. 2020, 13:07:19 »
Takze kdyz mam neosetreny zapis do bufferu, nebo kdyz neresim v pripade UTF-8 rozditl byte vs character delky, coz je podstatna cast nalezenych chyb, pristup k zdrojaku mi nepomuze?
Ono sakra podstatnou cast takovych chyb najde blbej valgrind, akorat to nikdo nedela.
Proč se ptáte, když si vzápětí odpovíte? Ano, opravdu vám přístup ke zdrojáku prakticky nepomůže k tomu, abyste takové chyby našel. Například vámi zmiňovaný Valgrind zdrojáky nepotřebuje.

Opensource ma snazsi moznost nalezeni chyby z prosteho duvodu volnych zdrojaku, jestli ty zdrojaky ale opravdu nekdo prohlizel, je vec jina.
Toto své tvrzení jste si v předchozím komentáři sám vyvrátil. Přesněji řečeno – ano, u open source je opravdu o 0,00001 % snazší chybu najít. Akorát že to je oproti jiným vlivům tak malý rozdíl, že to reálně nemá žádný vliv.
« Poslední změna: 28. 04. 2020, 13:10:28 od Filip Jirsák »

Re:Argumenty bezpečnosti open-source
« Odpověď #10 kdy: 28. 04. 2020, 15:22:35 »
Uzavřený SW: nikdo kromě vendora nemá velkou šanci ukrytou chybu najít.
Tohle není pravda. Open source pomáhá, když chcete chybu pochopit a když jí chcete opravit. Pro nalezení chyby jsou ale zdrojové kódy jen velmi mizivý přínos.

Takze kdyz mam neosetreny zapis do bufferu, nebo kdyz neresim v pripade UTF-8 rozditl byte vs character delky, coz je podstatna cast nalezenych chyb, pristup k zdrojaku mi nepomuze?
Ono sakra podstatnou cast takovych chyb najde blbej valgrind, akorat to nikdo nedela.

Praveze nepomuze to najit chybu. Pomuze ji to pochopit/odstranit.
Děkuji za možnost editace příspěvku.

Re:Argumenty bezpečnosti open-source
« Odpověď #11 kdy: 28. 04. 2020, 17:22:33 »
Uzavřený SW: nikdo kromě vendora nemá velkou šanci ukrytou chybu najít.
Tohle není pravda. Open source pomáhá, když chcete chybu pochopit a když jí chcete opravit. Pro nalezení chyby jsou ale zdrojové kódy jen velmi mizivý přínos.

Takze kdyz mam neosetreny zapis do bufferu, nebo kdyz neresim v pripade UTF-8 rozditl byte vs character delky, coz je podstatna cast nalezenych chyb, pristup k zdrojaku mi nepomuze?
Ono sakra podstatnou cast takovych chyb najde blbej valgrind, akorat to nikdo nedela.

Praveze nepomuze to najit chybu. Pomuze ji to pochopit/odstranit.

A co statická analýza kódu? Otevřený kód samozřejmě nezaručuje ani bezpečnost ani kvalitu, ale zvyšuje šanci vyhodnotit rizika a případně zjednat nápravu. A to není málo.

Re:Argumenty bezpečnosti open-source
« Odpověď #12 kdy: 28. 04. 2020, 17:34:20 »
A co statická analýza kódu? Otevřený kód samozřejmě nezaručuje ani bezpečnost ani kvalitu, ale zvyšuje šanci vyhodnotit rizika a případně zjednat nápravu. A to není málo.
To jsou hezké teorie. Když se podíváte na praxi, jsou tyhle chyby nalézány stejně často v uzavřeném i otevřeném softwaru a to lidmi mimo okruh vývojářů toho software. Často je to opravdu jen o použití vhodného nástroje (dnes běžně bezpečnostní chyby hlásí lidé, kteří podstatě té chyby nerozumí – prostě jim to jen vyplivl nějaký software). Projděte si třeba zdejší zprávičky o různých bezpečnostních chybách – je běžné, že tam bude uvedeno, že na chybu upozornil nějaký „bezpečnostní expert“.

Re:Argumenty bezpečnosti open-source
« Odpověď #13 kdy: 28. 04. 2020, 21:55:37 »
A co statická analýza kódu? Otevřený kód samozřejmě nezaručuje ani bezpečnost ani kvalitu, ale zvyšuje šanci vyhodnotit rizika a případně zjednat nápravu. A to není málo.
To jsou hezké teorie. Když se podíváte na praxi, jsou tyhle chyby nalézány stejně často v uzavřeném i otevřeném softwaru a to lidmi mimo okruh vývojářů toho software. Často je to opravdu jen o použití vhodného nástroje (dnes běžně bezpečnostní chyby hlásí lidé, kteří podstatě té chyby nerozumí – prostě jim to jen vyplivl nějaký software). Projděte si třeba zdejší zprávičky o různých bezpečnostních chybách – je běžné, že tam bude uvedeno, že na chybu upozornil nějaký „bezpečnostní expert“.

To nic nemění na tom, že možnosti bezpečnostní analýzy bude u otevřeného kódu obecně širší, stejně jako bude obecně širší i možnost oprav a lepší možnost údržby.

Jenže stejně se musí mluvit o konkrétním produktu, protože při porovnání dvou konkrétních produktů může vyjít jako vítěz klidně produkt s uzavřeným kódem (když například bude historie projektu dokládat rychlé opravy chyb a řekněme pravidelné penetrační testování).

Takže ta debata je příliš obecná.

Re:Argumenty bezpečnosti open-source
« Odpověď #14 kdy: 28. 04. 2020, 22:55:55 »
To nic nemění na tom, že možnosti bezpečnostní analýzy bude u otevřeného kódu obecně širší, stejně jako bude obecně širší i možnost oprav a lepší možnost údržby.
Stejně tak můžete argumentovat tím, že obecně jsou lepší možnosti analýzy a oprav u komerčního softwaru, protože to tam dělají placení vývojáři. Jenže nezáleží na teoretických možnostech, ale na tom, jak jsou reálně využívány. A reálně nedostupnost zdrojových kódů neznamená ani to, že by uzavřený software byl chráněný před odhalením chyb, ani že by v něm bylo chyb více, protože je nikdo nenajde. Reálně je rozdíl jenom v tom, že u software s otevřeným zdrojovým kódem je snazší tu chybu analyzovat a vyhnout se jí nebo ji opravit svépomocí.