Vissa utvecklare smutsar ner programvara med öppen källkod

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

Getty Images

En av de mest fantastiska sakerna med öppen källkod är inte att den producerar fantastisk programvara. Det är att så många utvecklare lägger sina egon åt sidan för att skapa fantastiska program med hjälp av andra. Nu sätter dock en handfull programmerare sina egna bekymmer framför de mångas bästa och potentiellt förstörande programvara med öppen källkod för alla.

Till exempel, JavaScripts pakethanterare underhållare RIAEvangelist, Brandon Nozaki Miller, skrev och publicerade ett npm-källkodspaket med öppen kod som heter peacenotwar. Det gjorde inte mycket annat än att skriva ut ett budskap för fred till stationära datorer. Så långt, så ofarligt. 

Miller infogade sedan skadlig kod i paketet för att skriva över användarnas filsystem om deras dator hade en Rysslands eller Vitrysslands IP-adress. Han lade sedan till det som ett beroende till sin populära nod-ipc program och omedelbart kaos! Många servrar och datorer gick ner när de uppdaterade till den senaste koden och sedan raderades deras system. 

Millers försvar, "Allt detta är offentligt, dokumenterat, licensierat och öppen källkod”, håller inte. 

Liran Tal, den Snyk forskare som avslöjade problemet sa: "Även om den avsiktliga och farliga handlingen [uppfattas] av vissa som en legitim handling av protest, hur avspeglar det underhållarens framtida rykte och andel i utvecklargemenskapen? Skulle denna underhållare någonsin kunna lita på igen för att inte följa upp framtida handlingar i sådana eller till och med mer aggressiva åtgärder för några projekt de deltar i?" 

Miller är ingen slumpmässig vev. Han har producerat mycket bra kod, som node-ipc och Nod HTTP-server. Men kan du lita på att någon av hans kod inte är skadlig? Medan han beskriver det som "inte skadlig programvara, [men] protestware som är fullt dokumenterad”, andra håller giftigt med. 

Som en GitHub-programmerare skrev, "Vad som kommer att hända med detta är att säkerhetsteam i västerländska företag som absolut inte har något att göra med Ryssland eller politik kommer att börja se fri programvara med öppen källkod som en väg för attacker i leveranskedjan (vilket detta är helt enkelt) och börja helt enkelt förbjuda gratis och öppen källkod - all gratis och öppen programvara - inom sina företag." 

Som en annan GitHub-utvecklare med handtaget nm17 skrev, "The förtroendefaktor för öppen källkod, som baserades på utvecklarnas goda vilja är nu praktiskt taget borta, och nu inser fler och fler människor att en dag kan deras bibliotek/applikation möjligen utnyttjas för att göra/säga vad någon slumpmässig utvecklare på internet tyckte " var det rätta de att göra.'”

Båda gör giltiga poäng. När du inte kan använda källkoden om du inte håller med om den politiska hållningen hos dess skapare, hur kan du använda den med tillförsikt? 

Millers hjärta kan vara på rätt plats - Slava Ukraini! — men är programvara med öppen källkod infekterad med en skadlig nyttolast det rätta sättet att skydda Rysslands invasion av Ukraina? Nej det är det inte. 

Metoden med öppen källkod fungerar bara för att vi litar på varandra. När det förtroendet bryts, oavsett av vilken orsak, då är öppen källkods grundläggande ram bruten. Som Greg Kroah-Hartman, Linux-kärnunderhållaren för den stabila grenen, sa när studenter från University of Minnesota medvetet försökte infoga dålig kod i Linux-kärnan för ett experiment 2021 sa: "Vad de gör är avsiktligt skadligt beteende och är inte acceptabelt och totalt oetiskt.”

Människor har länge hävdat att öppen källkod också bör inkludera etiska bestämmelser. Till exempel 2009-talet Undantag General Public License (eGPL), en revidering av GPLv2, försökte förbjuda "undantag", såsom militära användare och leverantörer, från att använda dess kod. Det misslyckades. Andra licenser som t.ex JSON-licens med sin ljuvt naiva "mjukvaran ska användas på gott, inte för ont"-klausulen som fortfarande finns kvar, men ingen upprätthåller den.  

På senare tid introducerade aktivisten och mjukvaruutvecklaren Coraline Ada Ehmke en öppen källkodslicens som kräver att dess användare agerar moraliskt. Närmare bestämt henne Hippokratisk licens läggs till i MIT-öppen källkodslicens en klausul som säger: 

"Programvaran får inte användas av individer, företag, regeringar eller andra grupper för system eller aktiviteter som aktivt och medvetet äventyrar, skadar eller på annat sätt hotar det fysiska, mentala, ekonomiska eller allmänna välbefinnandet för underprivilegierade individer eller grupper i kränkning av FN:s allmänna förklaring om de mänskliga rättigheterna."

Låter bra, men det är inte öppen källkod. Du förstår, öppen källkod är i och för sig en etisk position. Dess etik finns i Free Software Foundations (FSF)'s Fyra grundläggande friheter. Detta är grunden för alla öppen källkodslicenser och deras kärnfilosofi. Som juridikexpert i öppen källkod och juridikprofessor i Columbia, Eben Moglen, sa då att etiska licenser inte kan vara fri programvara eller licenser med öppen källkod: 

"Frihet noll, rätten att köra programmet för vilket syfte som helst, kommer först i de fyra friheterna eftersom om användare inte har den rätten med avseende på datorprogram som de kör, har de i slutändan inga rättigheter i dessa program alls. Ansträngningar att ge tillstånd endast för god användning, eller att förbjuda dåliga sådana i licensgivarens ögon, bryter mot kravet att skydda noll frihet." 

Med andra ord, om du av någon anledning inte kan dela din kod, är din kod inte riktigt öppen källkod. 

Ett annat mer pragmatiskt argument om att förbjuda en grupp från att använda programvara med öppen källkod är att blockering på något som en IP-adress är en mycket bred pensel. Som Florian Roth, säkerhetsföretag Nextron Systems' Forskningschef, som övervägde "inaktivera mina gratisverktyg på system med vissa språk- och tidszonsinställningar”, bestämde sig till slut att inte göra det. Varför? För genom att göra det, "vi skulle också inaktivera verktygen på system för kritiker och fritänkare som fördömer deras regeringars handlingar.” 

Tyvärr är det inte bara människor som försöker använda öppen källkod för vad de ser som ett högre etiskt syfte som orsakar problem för programvara med öppen källkod. 

Tidigare i år saboterade JavaScript-utvecklaren Marak Squires medvetet sina obskyra, men livsviktiga Javascript-bibliotek med öppen källkod 'colors.js' och 'faker.js'. Resultatet? Tiotusentals JavaScript-program sprängdes.

Varför? Det är fortfarande inte helt klart, men i ett sedan raderat GitHub-inlägg skrev Squires, "Respektfullt, Jag kommer inte längre att stödja Fortune 500s (och andra mindre företag) med mitt fria arbete. Det finns inte mycket annat att säga. Ta det här som en möjlighet att skicka mig ett sexsiffrigt årskontrakt eller dela upp projektet och få någon annan att arbeta med det." Som du kanske föreställer dig fungerade inte detta försök att utpressa sig till en lönecheck så bra för honom. 

Och så finns det människor som medvetet lägger in skadlig kod i sin öppen källkod för skojs skull och för att tjäna pengar. Till exempel säkerhetsföretaget DevOps JFrog upptäckte 17 nya skadliga JavaScript-paket i NPM-förvaret som medvetet attackerar och stjäl en användares Discord-tokens. Dessa kan sedan användas på Discord kommunikation och digital distributionsplattform.

Förutom att skapa nya skadliga program med öppen källkod som ser oskyldiga och hjälpsamma ut, tar andra angripare gammal, övergiven programvara och skriver om dem för att inkludera bakdörrar som stjäl kryptomynt. Ett sådant program var event-stream. Den hade skadlig kod insatt i den för att stjäla bitcoin-plånböcker och överföra deras saldon till en Kuala Lumpur-server. Det har varit flera liknande episoder genom åren.

Med varje sådant drag slits tron ​​på programvara med öppen källkod ner. Eftersom öppen källkod är helt avgörande för den moderna världen är detta en usel trend. 

Vad kan vi göra åt det? Tja, för en sak bör vi verkligen överväga mycket noggrant när, om någonsin, vi bör blockera användningen av öppen källkod. 

Mer praktiskt måste vi börja anta användningen av Linux Foundation Utbyte av mjukvarupaket (SPDX) och Software Bill of Materials (SBOM). Tillsammans kommer dessa att berätta exakt vilken kod vi använder i våra program och var den kommer ifrån. Då kommer vi att vara mycket mer kapabla att fatta välgrundade beslut.

Idag använder människor alltför ofta öppen källkod utan att veta exakt vad de kör eller kolla efter problem. De antar att allt är bra med det. Det har aldrig varit ett smart antagande. Idag är det rent av dumt. 

Även med alla dessa senaste förändringar är öppen källkod fortfarande bättre och säkrare än de proprietära programvarualternativen. Men vi måste kontrollera och verifiera koden istället för att blint lita på den. Det är det enda smarta att göra framöver.

Relaterade berättelser:



Källa