Neki programeri zagađuju softver otvorenog koda

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

Getty Images

Jedna od najnevjerovatnijih stvari kod otvorenog koda nije to što proizvodi odličan softver. Toliko programera ostavlja po strani svoj ego kako bi kreirali sjajne programe uz pomoć drugih. Sada, međutim, nekolicina programera stavlja svoje brige ispred dobra mnogih i potencijalno uništava softver otvorenog koda za sve.

Na primjer, JavaScript menadžer paketa održavatelj RIAEvangelist, Brandon Nozaki Miller, napisao i objavio paket npm izvornog koda otvorenog koda pod nazivom peacenotwar. Učinio je malo osim što je štampao poruku za mir na desktopu. Za sada tako bezopasno. 

Miller je zatim ubacio zlonamjerni kod u paket da prepiše sistem datoteka korisnika ako njihov računar ima IP adresu u Rusiji ili Belorusiji. Zatim ju je dodao kao zavisnost svojoj popularnosti čvor-ipc program i trenutni haos! Brojni serveri i računari su se pokvarili dok su se ažurirali na najnoviji kod, a zatim su njihovi sistemi izbrisani. 

Millerova odbrana, “Ovo je sve javno, dokumentirano, licencirano i otvorenog koda”, ne drži. 

Liran Tal, the Snyk istraživač koji je otkrio problem rekao je: „Čak i ako neki namjerni i opasni čin [se] percipiraju kao legitiman čin protesta, kako se to odražava na buduću reputaciju održavaoca i udio u zajednici programera? Hoće li se ovom održavaocu ikada više vjerovati da neće pratiti buduća djela u takvim ili još agresivnijim akcijama za bilo koje projekte u kojima sudjeluje?” 

Miller nije nasumičan kreteni. Napravio je mnogo dobrog koda, kao što je node-ipc, i HTTP server čvora. Ali, možete li vjerovati da bilo koji njegov kod nije zlonamjeran? Dok on to opisuje kao "ne zlonamjerni softver, [već] protestni softver koji je u potpunosti dokumentiran“, drugi se otrovno ne slažu. 

Kao što je jedan GitHub programer napisao: „Ono što će se dogoditi s ovim je da će sigurnosni timovi u zapadnim korporacijama koji nemaju apsolutno nikakve veze s Rusijom ili politikom početi vidjeti besplatni softver otvorenog koda kao put za napade na lanac nabavke (što je ovo u potpunosti) i jednostavno počnite zabranjivati ​​besplatni softver i softver otvorenog koda — sav besplatni softver i softver otvorenog koda — unutar svojih kompanija.” 

Kao što je napisao još jedan GitHub programer sa ručkom nm17, „The faktor povjerenja otvorenog koda, koji je bio zasnovan na dobroj volji programera, sada je praktički nestao, a sada, sve više ljudi shvaća da će jednog dana njihova biblioteka/aplikacija možda biti iskorištena da rade/reče što god neki slučajni dev na internetu misli ' je bila prava stvar koju su uradili.'”

I jedni i drugi donose valjane bodove. Kada ne možete koristiti izvorni kod osim ako se ne slažete s političkim stavom njegovog tvorca, kako ga možete koristiti s povjerenjem? 

Millerovo srce je možda na pravom mjestu — Slava Ukraini! — ali da li je softver otvorenog koda zaražen zlonamjernim teretom pravi način da se zaštiti ruska invazija Ukrajine? Ne, nije. 

Metoda otvorenog koda funkcionira samo zato što vjerujemo jedni drugima. Kada je to povjerenje narušeno, bez obzira iz kojeg razloga, temeljni okvir otvorenog koda je slomljen. Kako je Greg Kroah-Hartman, održavatelj Linux kernela za stabilnu granu, rekao kada su studenti sa Univerziteta Minnesota namjerno pokušali ubaciti loš kod u Linux kernel za eksperiment 2021. godine, rekao je: „Ono što rade je namjerno zlonamjerno ponašanje i nije prihvatljivo i potpuno neetično.”

Ljudi su dugo tvrdili da bi open source trebao uključivati ​​i etičke odredbe. Na primjer, 2009 Izuzetak Opća javna licenca (eGPL), revizija GPLv2, pokušao je zabraniti „izuzecima“, kao što su vojni korisnici i dobavljači, korištenje njegovog koda. Nije uspjelo. Druge licence kao što su JSON licenca sa svojom slatko naivnom klauzulom „softver će se koristiti za dobro, a ne za zlo“ još uvijek postoji, ali je niko ne provodi.  

Nedavno je aktivistkinja i programerka softvera Coraline Ada Ehmke predstavila licencu otvorenog koda koja od korisnika zahtijeva da se ponašaju moralno. Tačnije, nju Hipokratova licenca dodano u MIT licenca otvorenog koda klauzula koja kaže: 

“Softver ne smiju koristiti pojedinci, korporacije, vlade ili druge grupe za sisteme ili aktivnosti koje aktivno i svjesno ugrožavaju, štete ili na drugi način prijete fizičkoj, mentalnoj, ekonomskoj ili općoj dobrobiti neprivilegiranih pojedinaca ili grupa u kršenje Univerzalne deklaracije Ujedinjenih naroda o ljudskim pravima.”

Zvuči dobro, ali nije otvorenog koda. Vidite, open source je sam po sebi etička pozicija. Njegova etika sadržana je u Fondacija za slobodni softver (FSF)'s Četiri osnovne slobode. Ovo je temelj za sve licence otvorenog koda i njihovu osnovnu filozofiju. Kako je pravni stručnjak otvorenog koda i profesor prava iz Kolumbije Eben Moglen rekao u to vrijeme da etičke licence ne mogu biti slobodni softver ili licence otvorenog koda: 

"Sloboda nula, pravo na pokretanje programa za bilo koju svrhu, dolazi na prvo mjesto u četiri slobode, jer ako korisnici nemaju to pravo u odnosu na kompjuterske programe koje pokreću, u konačnici nemaju nikakva prava u tim programima. Nastojanja da se daju dozvole samo za dobru upotrebu ili da se zabrani loše u očima davaoca licence krše zahtjev za zaštitu nulte slobode.” 

Drugim riječima, ako iz bilo kojeg razloga ne možete podijeliti svoj kod, vaš kod nije istinski otvorenog koda. 

Još jedan pragmatičniji argument o zabrani jednoj grupi da koristi softver otvorenog koda je da je blokiranje nečega kao što je IP adresa vrlo široka četka. Kao Florian Roth, sigurnosna kompanija Nextron Systems' Šef istraživanja, koji je smatrao “onemogućavanje mojih besplatnih alata na sistemima sa određenim postavkama jezika i vremenske zone”, konačno odlučio da ne. Zašto? Jer na taj način, “takođe bismo onemogućili alate na sistemima kritičara i slobodoumnika koji osuđuju postupke svojih vlada.” 

Nažalost, nisu samo ljudi koji pokušavaju da koriste open-source za ono što vide kao višu etičku svrhu ono što uzrokuje probleme softveru otvorenog koda. 

Ranije ove godine, JavaScript programer Marak Squires namjerno je sabotirao svoje nejasne, ali vitalno važne Javascript biblioteke otvorenog koda 'colors.js' i 'faker.js'. Rezultat? Desetine hiljada JavaScript programa su eksplodirale.

Zašto? Još uvijek nije sasvim jasno, ali u post-izbrisanoj GitHub objavi, Squires je napisao: “S poštovanjem, Više neću podržavati Fortune 500s (i druge manje kompanije) sa mojim besplatnim radom. Nema se šta drugo reći. Iskoristite ovo kao priliku da mi pošaljete šestocifreni godišnji ugovor ili da odvojite projekat i da neko drugi radi na njemu.” Kao što možete zamisliti, ovaj pokušaj da ucjeni njegov put do plaće nije mu dobro prošao. 

A tu su i ljudi koji namjerno stavljaju zlonamjerni softver u svoj otvoreni kod radi zabave i zarade. Na primjer, sigurnosna firma DevOps JFrog otkrio 17 novih JavaScript zlonamjernih paketa u NPM spremištu koji namjerno napadaju i kradu korisnikove Discord tokene. Oni se zatim mogu koristiti na Discord komunikacija i platforma za digitalnu distribuciju.

Osim što stvaraju nove zlonamjerne programe otvorenog koda koji izgledaju nevino i korisni, drugi napadači uzimaju stari, napušteni softver i prepisuju ga kako bi uključili backdoor za krađu kripto novčića. Jedan takav program je bio event-stream. U njega je umetnut zlonamjerni kod za krađu bitcoin novčanika i prijenos njihovih stanja na server u Kuala Lumpuru. Bilo je nekoliko sličnih epizoda tokom godina.

Sa svakim takvim potezom, vjera u softver otvorenog koda gubi se. Budući da je open-source apsolutno vitalan za moderni svijet, ovo je loš trend. 

Šta možemo učiniti povodom toga? Pa, kao prvo, trebali bismo vrlo pažljivo razmotriti kada, ako ikada, trebamo blokirati korištenje otvorenog koda. 

Praktičnije, moramo početi usvajati upotrebu Linux fondacije Razmjena podataka o softverskom paketu (SPDX) i Softverska lista materijala (SBOM). Ovo će nam zajedno reći koji kod koristimo u našim programima i odakle dolazi. Tada ćemo biti mnogo sposobniji da donosimo informisane odluke.

Danas, sve do često ljudi koriste otvoreni izvorni kod, a da ne znaju tačno šta pokreću ili ne provjeravaju ima li problema. Pretpostavljaju da je sve u redu s tim. To nikada nije bila pametna pretpostavka. Danas je to potpuno glupo. 

Čak i sa svim ovim nedavnim promjenama, open-source je i dalje bolji i sigurniji od alternativa vlasničkog softvera crne kutije. Ali, moramo provjeriti i potvrditi kod umjesto da mu slijepo vjerujemo. To je jedina pametna stvar za dalje.

Povezane priče:



izvor