Někteří vývojáři kazí software s otevřeným zdrojovým kódem

gettyimages-1159346361-malicious-code-skull-crossbones.jpg

Getty Images

Jednou z nejúžasnějších věcí na open-source není to, že produkuje skvělý software. Je to tak, že tolik vývojářů odložilo své ego a vytvořilo skvělé programy s pomocí ostatních. Nyní však hrstka programátorů staví své vlastní obavy před dobro mnoha a potenciálně ničí open-source software pro každého.

Například správce balíčků JavaScriptu RIAEvangelist, Brandon Nozaki Miller, napsal a zveřejnil balíček zdrojového kódu npm s otevřeným kódem nazvaný peacenotwar. Udělalo to málo, ale vytisklo na stolní počítače zprávu pro mír. Zatím tak neškodné. 

Miller pak do balíčku vložil škodlivý kód, aby přepsal souborové systémy uživatelů, pokud jejich počítač měl ruskou nebo běloruskou IP adresu. Pak to přidal jako závislost ke svému oblíbenému uzel-ipc program a okamžitý chaos! Řada serverů a počítačů selhala, když se aktualizovaly na nejnovější kód a poté byly jejich systémy vymazány. 

Millerova obrana, “To vše je veřejné, zdokumentované, licencované a open source“ nevydrží. 

Liran Tal, Snyk výzkumník, který problém odhalil, řekl: „I když úmyslný a nebezpečný čin [je] některými vnímán jako legitimní akt protestu, jak se to odráží na budoucí pověsti správce a podíl ve vývojářské komunitě? Bylo by tomuto správci ještě někdy důvěřováno, že nebude navazovat na budoucí akce v takových nebo ještě agresivnějších akcích pro projekty, kterých se účastní? 

Miller není náhodný klikař. Vytvořil spoustu dobrého kódu, jako je node-ipc a Uzel HTTP Server. Ale můžete věřit, že některý z jeho kódu není škodlivý? Zatímco to popisuje jako „ne malware, [ale] protestware, který je plně zdokumentován“ jiní jedovatě nesouhlasí. 

Jak napsal jeden programátor GitHubu: „Co se s tím stane, je, že bezpečnostní týmy v západních korporacích, které nemají absolutně nic společného s Ruskem nebo politikou, začnou vidět bezplatný a open-source software jako cesta pro útoky na dodavatelský řetězec (což je totálně) a jednoduše začnou zakazovat svobodný a open-source software – veškerý bezplatný a open-source software – ve svých společnostech.“ 

Jak napsal další vývojář GitHub s rukojetí nm17: „The faktor důvěry open source„ byla správná věc, kterou udělali.“

Oba dělají platné body. Když nemůžete používat zdrojový kód, pokud nesouhlasíte s politickým postojem jeho tvůrce, jak jej můžete používat s důvěrou? 

Millerovo srdce může být na správném místě — Slava Ukraini! — ale je software s otevřeným zdrojovým kódem infikovaný škodlivým nákladem tím správným způsobem, jak ochránit ruskou invazi na Ukrajinu? Ne, to není. 

Open-source metoda funguje jen proto, že si navzájem důvěřujeme. Když je tato důvěra narušena, bez ohledu na to, z jaké příčiny, pak je narušen základní rámec open-source. Jak řekl Greg Kroah-Hartman, správce linuxového jádra pro stabilní větev, když se studenti z University of Minnesota v roce 2021 záměrně pokusili vložit špatný kód do linuxového jádra pro experiment, řekl: „To, co dělají, je záměrné škodlivé chování a není přijatelné a zcela neetické."

Lidé dlouho tvrdili, že open-source by měl zahrnovat také etická ustanovení. Například rok 2009 Výjimka General Public License (eGPL), revize GPLv2, se pokusil zakázat „výjimkám“, jako jsou vojenští uživatelé a dodavatelé, používat svůj kód. Nepodařilo se to. Další licence, jako např licence JSON s jeho sladce naivní klauzulí „software se má používat k dobru, ne ke zlu“ stále existuje, ale nikdo to nevynucuje.  

Nedávno představila aktivistka a vývojářka softwaru Coraline Ada Ehmke licenci s otevřeným zdrojovým kódem, která vyžaduje, aby její uživatelé jednali morálně. Konkrétně jí Hippokratova licence přidán do MIT open-source licence klauzule, která říká: 

„Software nesmí být používán jednotlivci, společnostmi, vládami nebo jinými skupinami pro systémy nebo činnosti, které aktivně a vědomě ohrožují, poškozují nebo jinak ohrožují fyzické, duševní, ekonomické nebo obecné blaho znevýhodněných jednotlivců nebo skupin v porušení Všeobecné deklarace lidských práv OSN."

Zní to dobře, ale není to open source. Vidíte, open-source je sám o sobě etický postoj. Jeho etika je obsažena v Free Software Foundation's (FSF)'s Čtyři základní svobody. To je základ pro všechny licence open source a jejich základní filozofii. Jak tehdy řekl právní expert na open source a profesor práva z Kolumbie Eben Moglen, že etické licence nemohou být svobodný software nebo licence s otevřeným zdrojovým kódem: 

"Svoboda nula, právo spouštět program za jakýmkoli účelem, je na prvním místě mezi čtyřmi svobodami, protože pokud uživatelé nemají toto právo s ohledem na počítačové programy, které spouštějí, v konečném důsledku nemají k těmto programům vůbec žádná práva. Snahy udělit povolení pouze pro dobré účely nebo zakázat ty špatné v očích poskytovatele licence porušují požadavek na ochranu svobody nula.“ 

Jinými slovy, pokud nemůžete svůj kód z jakéhokoli důvodu sdílet, váš kód není skutečně open-source. 

Dalším pragmatičtějším argumentem o zákazu jedné skupiny používat software s otevřeným zdrojovým kódem je, že blokování něčeho, jako je IP adresa, je velmi široký kartáč. Jako Florian Roth, bezpečnostní společnost Systémy NextronVedoucí výzkumu, který zvažoval „deaktivaci mých bezplatných nástrojů v systémech s určitým nastavením jazyka a časového pásma,“ rozhodl se nakonec ne. Proč? Protože tím, „také bychom deaktivovali nástroje na systémech kritiků a volnomyšlenkářů kteří odsuzují činy svých vlád." 

Bohužel to nejsou jen lidé, kteří se snaží používat open-source pro to, co považují za vyšší etický účel, co způsobuje problémy open-source softwaru. 

Začátkem tohoto roku vývojář JavaScriptu Marak Squires záměrně sabotoval své obskurní, ale životně důležité open source Javascriptové knihovny „colors.js“ a „faker.js.“ Výsledek? Desetitisíce programů JavaScriptu vybuchly.

Proč? Stále to není úplně jasné, ale v od té doby smazaném příspěvku na GitHubu Squires napsal: „S úctou, Už nebudu podporovat Fortune 500s ( a další menší firmy ) s mou volnou prací. Není moc co říct. Berte to jako příležitost poslat mi šestimístnou roční smlouvu nebo rozdělit projekt a nechat na něm pracovat někoho jiného.“ Jak si asi umíte představit, tento pokus o vydírání jeho cesty k výplatě mu příliš nevyšel. 

A pak jsou tu lidé, kteří záměrně vkládají malware do svého open source kódu pro zábavu a zisk. Například bezpečnostní firma DevOps JFrog objevil 17 nových škodlivých balíčků JavaScriptu v úložišti NPM, které záměrně útočí a kradou uživateli Discord tokeny. Ty pak lze použít na Platforma pro komunikaci a digitální distribuci Discord.

Kromě vytváření nových škodlivých open-source programů, které vypadají nevinně a užitečně, jiní útočníci berou starý, opuštěný software a přepisují ho tak, aby obsahoval zadní vrátka na krádeže kryptoměn. Jedním z takových programů byl event-stream. Do něj byl vložen škodlivý kód, který ukradl bitcoinové peněženky a převedl jejich zůstatky na server Kuala Lumpur. Podobných epizod bylo v průběhu let několik.

S každým takovým krokem se víra v open-source software opotřebovává. Vzhledem k tomu, že open-source je pro moderní svět naprosto zásadní, je to mizerný trend. 

co s tím můžeme dělat? No, za prvé bychom měli opravdu velmi pečlivě zvážit, kdy, pokud vůbec, bychom měli zablokovat použití open-source kódu. 

Praktičtěji musíme začít používat Linux Foundation Výměna dat softwarových balíčků (SPDX) a Softwarový kusovník (SBOM). Společně nám přesně řeknou, jaký kód v našich programech používáme a odkud pochází. Pak budeme mnohem lépe schopni činit informovaná rozhodnutí.

Lidé dnes často používají kód s otevřeným zdrojovým kódem, aniž by přesně věděli, co spouštějí, nebo v něm kontrolují problémy. Předpokládají, že je s tím všechno v pořádku. To nikdy nebyl chytrý předpoklad. Dnes je to vyloženě hloupé. 

I se všemi těmito nedávnými změnami je open-source stále lepší a bezpečnější než alternativy proprietárního softwaru black-box. Musíme však kód zkontrolovat a ověřit, místo abychom mu slepě důvěřovali. Je to jediná chytrá věc, kterou lze do budoucna udělat.

Příbuzné příběhy:



Zdroj