Neki programeri zagađuju softver otvorenog koda

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

Getty Images

Jedna od najnevjerojatnijih stvari kod otvorenog koda nije to što proizvodi sjajan softver. Toliki programeri ostavljaju svoj ego po strani kako bi stvorili sjajne programe uz pomoć drugih. Sada, međutim, nekolicina programera svoje brige stavlja ispred dobra mnogih i potencijalno uništava softver otvorenog koda za sve.

Na primjer, JavaScript upravitelj paketa RIAEvangelist, Brandon Nozaki Miller, napisao i objavio paket izvornog koda otvorenog koda npm pod nazivom peacenotwar. Učinio je malo, osim što je ispisao poruku za mir na stolna računala. Zasad tako bezopasno. 

Miller je zatim ubacio zlonamjerni kod u paket kako bi prebrisao datotečne sustave korisnika ako njihovo računalo ima rusku ili bjelorusku IP adresu. Zatim ga je dodao kao ovisnost svojoj popularnosti čvor-ipc program i trenutni kaos! Brojni poslužitelji i računala su se pokvarili dok su se ažurirali na najnoviji kod, a potom su njihovi sustavi izbrisani. 

Millerova obrana, “Sve je to javno, dokumentirano, licencirano i otvorenog koda”, ne drži. 

Liran Tal, 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ći ugled održavatelja i udjela u zajednici programera? Hoće li se ovom održavatelju ikada više vjerovati da neće pratiti buduće radnje u takvim ili još agresivnijim akcijama za bilo koje projekte u kojima sudjeluje?” 

Miller nije slučajni kreteni. Napravio je mnogo dobrog koda, kao što je node-ipc i HTTP poslužitelj čvora. Ali, možete li vjerovati da bilo koji njegov kod neće biti 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 uviđati besplatni softver otvorenog koda kao put za napade na lanac opskrbe (š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 tvrtki.” 

Kao što je napisao još jedan GitHub programer s ručkom nm17, “The faktor povjerenja otvorenog koda, koji se temeljio na dobroj volji programera, sada je praktički nestao, a sada, sve više ljudi shvaća da će jednog dana njihova knjižnica/aplikacija možda biti iskorištena da radi/reče što god neki slučajni dev na internetu misli ' bila je prava stvar koju su učinili.'”

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 možda je na pravom mjestu — Slava Ukraini! — ali je li softver otvorenog koda zaražen zlonamjernim teretom pravi način zaštite od ruske invazije 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. Kao što je Greg Kroah-Hartman, održavatelj Linux kernela za stabilnu granu, rekao kada su studenti sa Sveučilišta Minnesota namjerno pokušali umetnuti loš kod u jezgru Linuxa 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 Iznimka Opća javna licenca (eGPL), revizija GPLv2, pokušao je zabraniti "iznimkama", 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 nitko ne provodi.  

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

“Softver ne smiju koristiti pojedinci, korporacije, vlade ili druge grupe za sustave 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 Opće 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 Zaklada slobodnog softvera (FSF)„s Četiri osnovne slobode. Ovo je temelj za sve licence otvorenog koda i njihovu temeljnu filozofiju. Kako je tada pravni stručnjak otvorenog koda i profesor prava s Kolumbije Eben Moglen rekao da etičke licence ne mogu biti slobodni softver ili licence otvorenog koda: 

"Sloboda nula, pravo pokretanja programa za bilo koju svrhu, dolazi na prvo mjesto u četiri slobode jer ako korisnici nemaju to pravo u odnosu na računalne programe koje pokreću, u konačnici nemaju nikakva prava u tim programima. Nastojanja da se daju dopuštenja samo za dobre namjene ili da se zabrani loše u očima davatelja licence krše zahtjev za zaštitu nulte slobode.” 

Drugim riječima, ako iz bilo kojeg razloga ne možete podijeliti svoj kôd, vaš kôd nije uistinu otvorenog koda. 

Još jedan pragmatičniji argument o zabrani jednoj skupini korištenja softvera otvorenog koda je da je blokiranje nečega kao što je IP adresa vrlo široka četka. Kao Florian Roth, zaštitarska tvrtka Nextron sustavi' Voditelj istraživanja, koji je smatraoonemogućavanje mojih besplatnih alata na sustavima s određenim postavkama jezika i vremenske zone”, konačno odlučio ne. Zašto? Jer na taj način, “također bismo onemogućili alate na sustavima kritičara i slobodnih mislilaca koji osuđuju postupke svojih vlada.” 

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

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? Deseci tisuća JavaScript programa su eksplodirali.

Zašto? Još uvijek nije sasvim jasno, ali u post-izbrisanoj objavi na GitHubu, Squires je napisao: “S poštovanjem, Više neću podržavati Fortune 500s ( i druge manje tvrtke ) s mojim besplatnim radom. Nema se što drugo reći. Iskoristite ovo kao priliku da mi pošaljete šesteroznamenkasti godišnji ugovor ili odvojite projekt i neka netko 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 tvrtka DevOps JŽaba otkrio 17 novih zlonamjernih JavaScript paketa u NPM repozitoriju 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 od takvih programa bio je prijenos događaja. Imao je umetnut zlonamjerni kod za krađu bitcoin novčanika i prijenos njihovih stanja na poslužitelj u Kuala Lumpuru. Bilo je nekoliko sličnih epizoda tijekom godina.

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

Što možemo učiniti u vezi s tim? Pa, kao prvo, trebali bismo vrlo pažljivo razmotriti kada bismo, ako ikada, trebali blokirati korištenje otvorenog koda. 

Praktičnije, moramo početi usvajati korištenje Linux zaklade Razmjena podataka o softverskom paketu (SPDX) i Softverski popis materijala (SBOM). To će nam zajedno reći koji kod koristimo u našim programima i odakle dolazi. Tada ćemo biti puno sposobniji donositi informirane odluke.

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

Čak i uz sve ove nedavne promjene, 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