Nekateri razvijalci kvarijo odprtokodno programsko opremo

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

Getty Images

Ena najbolj neverjetnih stvari pri odprtokodnih ni ta, da proizvaja odlično programsko opremo. Toliko razvijalcev daje svoj ego na stran in s pomočjo drugih ustvarja odlične programe. Zdaj pa peščica programerjev postavlja svoje skrbi pred dobro mnogih in potencialno uničuje odprtokodno programsko opremo za vse.

Na primer, vzdrževalec upravitelja paketov JavaScript RIAEvangelist, Brandon Nozaki Miller, napisal in objavil paket izvorne kode npm z odprto kodo, imenovan peacenotwar. To je naredilo le malo, ampak tiskanje sporočila za mir na namizja. Zaenkrat tako neškodljivo. 

Miller je nato v paket vstavil zlonamerno kodo, da bi prepisal datotečne sisteme uporabnikov, če ima njihov računalnik IP naslov Rusije ali Belorusije. Nato ga je kot odvisnost dodal svoji priljubljeni vozlišče-ipc program in takojšen kaos! Številni strežniki in osebni računalniki so ugasnili, ko so se posodobili na najnovejšo kodo, nato pa so njihovi sistemi izbrisali pogone. 

Millerjeva obramba, "Vse to je javno, dokumentirano, licencirano in odprtokodno,« ne zdrži. 

Liran Tal, Snyk raziskovalec, ki je odkril problem, je dejal: »Čeprav nekateri namerno in nevarno dejanje [se] dojemajo kot legitimno dejanje protesta, kako se to odraža na prihodnjem ugledu vzdrževalca in delež v skupnosti razvijalcev? Ali bi temu vzdrževalcu še kdaj zaupali, da ne bo spremljal prihodnjih dejanj s takšnimi ali celo bolj agresivnimi dejanji za kakršne koli projekte, v katerih sodeluje?« 

Miller ni naključni kreteni. Ustvaril je veliko dobre kode, kot je node-ipc in Strežnik HTTP vozlišča. Toda ali lahko zaupate kateri koli njegovi kodi, da ni zlonamerna? Medtem ko ga opisuje kot "ne zlonamerna programska oprema, [ampak] protestna programska oprema, ki je v celoti dokumentirana,« se drugi strupeno ne strinjajo. 

Kot je zapisal en programer GitHub: »S tem se bo zgodilo, da bodo varnostne ekipe v zahodnih korporacijah, ki nimajo nobene zveze z Rusijo ali politiko, začele videti brezplačna in odprtokodna programska oprema kot pot za napade dobavne verige (kar to popolnoma je) in preprosto začnite prepovedovati brezplačno in odprtokodno programsko opremo – vso brezplačno in odprtokodno programsko opremo – v svojih podjetjih." 

Kot je zapisal drug razvijalec GitHuba z ročajem nm17: »The faktor zaupanja odprte kode, ki je temeljil na dobri volji razvijalcev, zdaj praktično ni več, zdaj pa se vedno več ljudi zaveda, da bo nekega dne njihova knjižnica/aplikacija mogoče izkoristiti, da naredi/pove vse, kar si misli kakšen naključni razvijalec na internetu ' je bila prava stvar, ki so jo naredili."

Oba delata veljavne točke. Ko ne morete uporabljati izvorne kode, razen če se strinjate s političnim stališčem njenega izdelovalca, kako jo lahko uporabljate samozavestno? 

Millerjevo srce je morda na pravem mestu — Slava Ukraini! — toda ali je odprtokodna programska oprema, okužena z zlonamerno obremenitvijo, pravi način za zaščito ruske invazije na Ukrajino? Ne, ni. 

Odprtokodna metoda deluje samo zato, ker si zaupamo. Ko je to zaupanje porušeno, ne glede na to, iz katerega razloga, je temeljni okvir odprtokodnega sistema porušen. Kot je dejal Greg Kroah-Hartman, vzdrževalec jedra Linuxa za stabilno vejo, ko so študenti z Univerze v Minnesoti namenoma poskušali vstaviti slabo kodo v jedro Linuxa za poskus leta 2021: »To, kar počnejo, je namerno zlonamerno vedenje in ni sprejemljivo in popolnoma neetično."

Ljudje že dolgo trdijo, da mora odprtokodna vsebina vključevati tudi etične določbe. Na primer leta 2009 Izjema Splošna javna licenca (eGPL), revizija GPLv2, je skušal "izjemam", kot so vojaški uporabniki in dobavitelji, prepovedati uporabo svoje kode. Ni uspelo. Druge licence, kot je npr Licenca JSON s svojo sladko naivno klavzulo "programska oprema se uporablja v dobro, ne v zlo" ​​še vedno obstaja, vendar je nihče ne uveljavlja.  

Pred kratkim je aktivistka in razvijalka programske opreme Coraline Ada Ehmke predstavila odprtokodno licenco, ki od uporabnikov zahteva, da ravnajo moralno. Natančneje, njo Hipokratova licenca dodano v MIT odprtokodna licenca klavzula, ki navaja: 

»Programske opreme ne smejo uporabljati posamezniki, korporacije, vlade ali druge skupine za sisteme ali dejavnosti, ki aktivno in zavestno ogrožajo, škodujejo ali kako drugače ogrožajo fizično, duševno, ekonomsko ali splošno dobrobit prikrajšanih posameznikov ali skupin v kršitev Splošne deklaracije Združenih narodov o človekovih pravicah."

Sliši se dobro, vendar ni odprtokodno. Vidite, odprtokodno je samo po sebi etično stališče. Njena etika je vsebovana v Fundacija za prosto programsko opremo (FSF)je Štiri bistvene svoboščine. To je temelj za vse odprtokodne licence in njihovo osnovno filozofijo. Kot je takrat dejal odprtokodni pravni strokovnjak in profesor prava iz Kolumbije Eben Moglen, da etične licence ne morejo biti brezplačna programska oprema ali odprtokodne licence: 

"Svoboda nič, pravica do izvajanja programa za kateri koli namen, je na prvem mestu pri štirih svoboščinah, ker če uporabniki nimajo te pravice v zvezi z računalniškimi programi, ki jih izvajajo, na koncu sploh nimajo nobenih pravic v teh programih. Prizadevanja, da bi dali dovoljenje samo za dobro uporabo ali prepovedali slabe v očeh dajalca licence, kršijo zahtevo po zaščiti ničelne svobode." 

Z drugimi besedami, če iz kakršnega koli razloga ne morete deliti svoje kode, vaša koda ni resnično odprtokodna. 

Drug bolj pragmatičen argument o prepovedi eni skupini uporabe odprtokodne programske opreme je, da je blokiranje nečesa, kot je naslov IP, zelo široka krtača. Kot Florian Roth, varnostno podjetje Sistemi Nextron' Vodja raziskave, ki je menil,onemogočanje mojih brezplačnih orodij v sistemih z določenimi nastavitvami jezika in časovnega pasu,« se končno odločil, da ne bo. zakaj? Ker s tem "onemogočili bi tudi orodja na sistemih kritikov in svobodomiselnih ki obsojajo dejanja svojih vlad." 

Na žalost odprtokodni programski opremi ne povzročajo težav le ljudje, ki poskušajo uporabljati odprtokodno za tisto, kar vidijo kot višji etični namen. 

V začetku tega leta je razvijalec JavaScript Marak Squires namerno sabotiral svoje nejasne, a življenjsko pomembne odprtokodne knjižnice Javascript 'colors.js' in 'faker.js'. Rezultat? Razstrelilo je deset tisoč programov JavaScript.

zakaj? Še vedno ni povsem jasno, toda v odkar izbrisani objavi na GitHubu je Squires zapisal: »S spoštovanjem, Ne bom več podpiral Fortune 500s ( in druga manjša podjetja ) z mojim brezplačnim delom. Ni kaj drugega za povedati. Vzemite to kot priložnost, da mi pošljete šestmestno letno pogodbo ali prekinite projekt in naj nekdo drug dela na tem." Kot si lahko predstavljate, mu ta poskus izsiljevanja do plače ni uspel tako dobro. 

Poleg tega obstajajo ljudje, ki namerno vnesejo zlonamerno programsko opremo v svojo odprtokodno kodo za zabavo in dobiček. Na primer varnostno podjetje DevOps JFrog odkrili 17 novih zlonamernih paketov JavaScript v repozitoriju NPM, ki namerno napadajo in kradejo uporabnikove žetone Discord. Te lahko nato uporabite na Discord komunikacija in platforma za digitalno distribucijo.

Poleg ustvarjanja novih zlonamernih odprtokodnih programov, ki so videti nedolžni in koristni, drugi napadalci jemljejo staro, zapuščeno programsko opremo in jo prepisujejo tako, da vključuje backdoor za krajo kripto kovancev. Eden takšnih programov je bil tok dogodkov. Vanjo je bila vstavljena zlonamerna koda za krajo bitcoin denarnic in prenos njihovih sredstev na strežnik v Kuala Lumpurju. V preteklih letih je bilo več podobnih epizod.

Z vsako takšno potezo se vera v odprtokodno programsko opremo iztroši. Ker je odprtokodnost absolutno ključnega pomena za sodobni svet, je to slab trend. 

Kaj lahko storimo glede tega? No, najprej bi morali zelo natančno razmisliti, kdaj bi morali blokirati uporabo odprtokodne kode, če sploh kdaj. 

Bolj praktično moramo začeti sprejemati uporabo Linux Foundation Izmenjava podatkov programskega paketa (SPDX) in Osnutek programske opreme (SBOM). To nam bo skupaj povedalo, katero kodo uporabljamo v svojih programih in od kod prihaja. Potem bomo veliko bolj sposobni sprejemati premišljene odločitve.

Danes ljudje zelo pogosto uporabljajo odprtokodno kodo, ne da bi natančno vedeli, kaj izvajajo, ali preverili, ali so v njej težave. Domnevajo, da je z njim vse v redu. To nikoli ni bila pametna predpostavka. Danes je čisto neumno. 

Kljub vsem tem nedavnim spremembam je odprtokodna še vedno boljša in varnejša od alternativ lastniške programske opreme črne skrinjice. Vendar moramo kodo preveriti in preveriti, namesto da ji slepo zaupamo. To je edina pametna stvar za naprej.

Sorodne zgodbe:



vir