Nogle udviklere forurener open source-software

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

Getty Images

En af de mest fantastiske ting ved open source er ikke, at den producerer fantastisk software. Det er, at så mange udviklere lægger deres egoer til side for at skabe fantastiske programmer med hjælp fra andre. Nu sætter en håndfuld programmører imidlertid deres egne bekymringer foran de manges gode og potentielt ødelæggende open source-software for alle.

For eksempel, JavaScripts pakkehåndteringsvedligeholder RIAEvangelist, Brandon Nozaki Miller, skrev og udgav en åben kode npm kildekodepakke kaldet peacenotwar. Det gjorde ikke andet end at printe en besked om fred til desktops. Så langt, så harmløst. 

Miller indsatte derefter ondsindet kode i pakken for at overskrive brugernes filsystemer, hvis deres computer havde en Rusland eller Belarus IP-adresse. Han tilføjede det derefter som en afhængighed til hans populære node-ipc program og øjeblikkeligt kaos! Adskillige servere og pc'er gik ned, da de opdaterede til den nyeste kode, og deres systemer fik derefter deres drev slettet. 

Millers forsvar, "Dette er alt sammen offentligt, dokumenteret, licenseret og open source,” holder ikke. 

Liran Tal, den SNYK Forsker, der afslørede problemet, sagde: "Selv om den bevidste og farlige handling af nogle opfattes som en legitim protesthandling, hvordan afspejler det vedligeholderens fremtidige omdømme og andel i udviklersamfundet? Ville denne vedligeholder nogensinde igen blive tillid til ikke at følge op på fremtidige handlinger i sådanne eller endda mere aggressive handlinger for nogen projekter, de deltager i?" 

Miller er ikke en tilfældig håndsving. Han har produceret en masse god kode, såsom node-ipc og Node HTTP-server. Men kan du stole på, at hans kode ikke er ondsindet? Mens han beskriver det som "ikke malware, [men] protestware som er fuldt dokumenteret", er andre giftigt uenige. 

Som en GitHub-programmør skrev: "Hvad der kommer til at ske med dette er, at sikkerhedsteams i vestlige virksomheder, der absolut intet har med Rusland eller politik at gøre, vil begynde at se gratis og open source-software som en mulighed for forsyningskædeangreb (hvilket det i bund og grund er) og begynd simpelthen at forbyde gratis og open source-software - alt gratis og open source-software - i deres virksomheder." 

Som en anden GitHub-udvikler med håndtaget nm17 skrev: "The tillidsfaktor for open source, som var baseret på udviklernes gode vilje, er nu praktisk talt væk, og nu er flere og flere mennesker klar over, at en dag kan deres bibliotek/applikation muligvis udnyttes til at gøre/sige, hvad en eller anden tilfældig udvikler på internettet mente ' var det rigtige, de gjorde."

Begge har gyldige pointer. Når du ikke kan bruge kildekoden, medmindre du er enig i dens skabers politiske holdning, hvordan kan du så bruge den med tillid? 

Millers hjerte er måske på det rigtige sted - Slava Ukraini! — men er open source-software inficeret med en ondsindet nyttelast den rigtige måde at beskytte Ruslands invasion af Ukraine på? Nej det er ikke. 

Open source-metoden virker kun, fordi vi stoler på hinanden. Når den tillid er brudt, uanset hvilken årsag, så er open sources grundlæggende ramme brudt. Som Greg Kroah-Hartman, Linux-kernevedligeholderen for den stabile gren, sagde, da studerende fra University of Minnesota bevidst forsøgte at indsætte dårlig kode i Linux-kernen til et eksperiment i 2021 sagde: "Det, de gør, er bevidst ondsindet adfærd og er ikke acceptabelt og totalt uetisk."

Folk har længe argumenteret for, at open source også bør omfatte etiske bestemmelser. For eksempel 2009'erne Exception General Public License (eGPL), en revision af GPLv2, forsøgte at forbyde "undtagelser", såsom militære brugere og leverandører, at bruge dens kode. Det mislykkedes. Andre licenser som f.eks JSON-licens med sin søde naive "softwaren skal bruges til det gode, ikke det onde"-klausul, der stadig eksisterer, men ingen håndhæver den.  

For nylig introducerede aktivisten og softwareudvikleren Coraline Ada Ehmke en open source-licens, der kræver, at dens brugere handler moralsk. Nærmere bestemt hende Hippokratisk licens tilføjet til MIT open source-licens en klausul, der siger: 

"Softwaren må ikke bruges af enkeltpersoner, virksomheder, regeringer eller andre grupper til systemer eller aktiviteter, der aktivt og bevidst bringer, skader eller på anden måde truer det fysiske, mentale, økonomiske eller generelle velbefindende hos underprivilegerede personer eller grupper i krænkelse af De Forenede Nationers Verdenserklæring om Menneskerettigheder."

Det lyder godt, men det er ikke open source. Du kan se, open source er i sig selv en etisk holdning. Dens etik er indeholdt i Free Software Foundation's (FSF)'s Fire væsentlige friheder. Dette er grundlaget for alle open source-licenser og deres kernefilosofi. Som open source juridisk ekspert og Columbia juraprofessor Eben Moglen sagde dengang, at etiske licenser ikke kan være fri software eller open source licenser: 

"Frihed nul, retten til at køre programmet til ethvert formål, kommer først i de fire friheder, fordi hvis brugere ikke har den ret med hensyn til computerprogrammer, de kører, har de i sidste ende slet ikke nogen rettigheder til disse programmer. Bestræbelser på kun at give tilladelse til gode formål, eller at forbyde dårlige i licensgiverens øjne, overtræder kravet om at beskytte frihed nul." 

Med andre ord, hvis du af en eller anden grund ikke kan dele din kode, er din kode ikke rigtig open source. 

Et andet mere pragmatisk argument om at forbyde en gruppe at bruge open source-software er, at blokering på noget som f.eks. en IP-adresse er en meget bred børste. Som Florian Roth, sikkerhedsfirma Nextron systemer' Forskningschef, der overvejede "deaktivering af mine gratis værktøjer på systemer med visse sprog- og tidszoneindstillinger,” besluttede det endelig ikke. Hvorfor? For ved at gøre det, "vi ville også deaktivere værktøjerne på systemer af kritikere og fritænkere der fordømmer deres regeringers handlinger." 

Desværre er det ikke kun folk, der forsøger at bruge open source til det, de ser som et højere etisk formål, der skaber problemer for open source-software. 

Tidligere i år saboterede JavaScript-udvikleren Marak Squires bevidst sine obskure, men livsvigtige open source Javascript-biblioteker 'colors.js' og 'faker.js'. Resultatet? Titusindvis af JavaScript-programmer sprængte i luften.

Hvorfor? Det er stadig ikke helt klart, men i et siden slettet GitHub-indlæg skrev Squires: "Respektfuldt, Jeg vil ikke længere støtte Fortune 500s (og andre mindre virksomheder) med mit gratis arbejde. Der er ikke meget andet at sige. Udnyt dette som en mulighed for at sende mig en sekscifret årlig kontrakt eller udskifte projektet og få en anden til at arbejde på det." Som du måske forestiller dig, lykkedes dette forsøg på at afpresse sig til en lønseddel ikke så godt for ham. 

Og så er der folk, der bevidst putter malware ind i deres open source-kode for sjov og fortjeneste. For eksempel sikkerhedsfirmaet DevOps JFrog opdagede 17 nye JavaScript-ondsindede pakker i NPM-lageret, der bevidst angriber og stjæler en brugers Discord-tokens. Disse kan så bruges på Discord kommunikation og digital distributionsplatform.

Udover at skabe nye ondsindede open source-programmer, der ser uskyldige og hjælpsomme ud, tager andre angribere gammel, forladt software og omskriver dem til at inkludere kryptomønter, der stjæler bagdøre. Et sådant program var event-stream. Den havde ondsindet kode indsat for at stjæle bitcoin-punge og overføre deres saldi til en Kuala Lumpur-server. Der har været flere lignende episoder gennem årene.

Med hvert sådant træk er troen på open source-software slidt ned. Da open source er helt afgørende for den moderne verden, er dette en elendig trend. 

Hvad kan vi gøre ved det? Nå, for det første bør vi overveje meget nøje, hvornår, hvis nogensinde, vi bør blokere brugen af ​​open source-kode. 

Mere praktisk skal vi begynde at vedtage brugen af Linux Foundation Software Package Data Exchange (SPDX) , Softwarestykliste (SBOM). Sammen vil disse fortælle os præcis, hvilken kode vi bruger i vores programmer, og hvor den kommer fra. Så vil vi være meget mere i stand til at træffe informerede beslutninger.

I dag bruger folk alt for ofte open source-kode uden at vide præcis, hvad de kører, eller tjekke det for problemer. De går ud fra, at alt er godt med det. Det har aldrig været en smart antagelse. I dag er det direkte tåbeligt. 

Selv med alle disse nylige ændringer er open source stadig bedre og sikrere end de proprietære softwarealternativer med black-box. Men vi skal kontrollere og verificere koden i stedet for blindt at stole på den. Det er den eneste smarte ting at gøre fremadrettet.

Relaterede historier:



Kilde