Sommige ontwikkelaars vervuilen open-source software

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

Getty Images

Een van de meest verbazingwekkende dingen van open-source is niet dat het geweldige software produceert. Het is dat zoveel ontwikkelaars hun ego aan de kant zetten om geweldige programma's te maken met de hulp van anderen. Nu stelt een handjevol programmeurs echter hun eigen zorgen boven het welzijn van velen en maakt open-sourcesoftware mogelijk kapot voor iedereen.

Bijvoorbeeld, JavaScript's pakketbeheerder-onderhouder RIAEvangelist, Brandon Nozaki Miller, schreef en publiceerde een open-code npm-broncodepakket met de naam peacenotwar. Het deed weinig anders dan een bericht voor vrede op desktops afdrukken. Tot nu toe zo onschuldig. 

Miller plaatste vervolgens kwaadaardige code in het pakket om de bestandssystemen van gebruikers te overschrijven als hun computer een Russisch of Wit-Rusland IP-adres had. Hij voegde het vervolgens als een afhankelijkheid toe aan zijn populaire knooppunt-ipc programma en instant chaos! Talloze servers en pc's gingen uit toen ze updaten naar de nieuwste code en vervolgens werden de schijven van hun systemen gewist. 

Millers verdediging, “Dit is allemaal openbaar, gedocumenteerd, gelicentieerd en open source”, houdt niet op. 

Liran Tal, de Snyk onderzoeker die het probleem aan het licht bracht, zei: “Zelfs als de opzettelijke en gevaarlijke daad door sommigen wordt gezien als een legitieme daad van protest, hoe reflecteert dat op de toekomstige reputatie van de onderhouder en aandeel in de gemeenschap van ontwikkelaars? Zou deze onderhouder ooit weer worden vertrouwd om geen vervolg te geven aan toekomstige handelingen in dergelijke of zelfs agressievere acties voor projecten waaraan ze deelnemen? 

Miller is geen willekeurige zwerver. Hij heeft veel goede code geproduceerd, zoals node-ipc, en Knooppunt HTTP-server. Maar kun je erop vertrouwen dat zijn code niet kwaadaardig is? Terwijl hij het omschrijft als "geen malware, [maar] protestware die volledig gedocumenteerd is”, zijn anderen venijnig oneens. 

Zoals een GitHub-programmeur schreef: “Wat hiermee gaat gebeuren, is dat beveiligingsteams in westerse bedrijven die absoluut niets met Rusland of de politiek te maken hebben, gratis en open-source software als middel voor aanvallen op de toeleveringsketen (wat dit helemaal is) en begin gewoon met het verbieden van gratis en open-source software – alle gratis en open-source software – binnen hun bedrijven.” 

Zoals een andere GitHub-ontwikkelaar met het handvat nm17 schreef: “The vertrouwensfactor van open source, dat was gebaseerd op de goede wil van de ontwikkelaars, is nu praktisch verdwenen, en nu realiseren steeds meer mensen zich dat hun bibliotheek/applicatie op een dag mogelijk kan worden misbruikt om te doen/zeggen wat een willekeurige ontwikkelaar op internet dacht ' was het juiste wat ze deden.'”

Beide maken geldige punten. Als je de broncode alleen kunt gebruiken als je het eens bent met het politieke standpunt van de maker, hoe kun je die dan met vertrouwen gebruiken? 

Millers hart zit misschien op de juiste plaats - Slava Ukraini! - maar is open-source software die is geïnfecteerd met een kwaadaardige payload de juiste manier om de Russische invasie van Oekraïne te beschermen? Nee dat is het niet. 

De open-sourcemethode werkt alleen omdat we elkaar vertrouwen. Wanneer dat vertrouwen wordt geschonden, om welke reden dan ook, is het fundamentele raamwerk van open source verbroken. Zoals Greg Kroah-Hartman, de Linux-kernelbeheerder voor de stable branch, zei toen studenten van de Universiteit van Minnesota opzettelijk probeerden slechte code in de Linux-kernel in te voegen voor een experiment in 2021, zei: “Wat ze doen is opzettelijk kwaadaardig gedrag en is niet acceptabel en totaal onethisch.”

Mensen hebben lang betoogd dat open-source ook ethische bepalingen zou moeten bevatten. Bijvoorbeeld die van 2009 Uitzondering General Public License (eGPL), een herziening van de GPLv2, probeerde "uitzonderingen", zoals militaire gebruikers en leveranciers, te verbieden zijn code te gebruiken. Het is mislukt. Andere licenties zoals de JSON-licentie met zijn lieflijk naïeve "de software zal worden gebruikt voor het goede, niet voor het kwade" clausule bestaat nog steeds, maar niemand dwingt het af.  

Meer recent introduceerde activiste en softwareontwikkelaar Coraline Ada Ehmke een open-sourcelicentie die vereist dat gebruikers moreel handelen. Specifiek, haar Hippocratische vergunning toegevoegd MIT open-source licentie een clausule waarin staat: 

“De software mag niet worden gebruikt door individuen, bedrijven, overheden of andere groepen voor systemen of activiteiten die actief en bewust het fysieke, mentale, economische of algemene welzijn van kansarme individuen of groepen in gevaar brengen, schade toebrengen of anderszins bedreigen. schending van de Universele Verklaring van de Rechten van de Mens van de Verenigde Naties.”

Klinkt goed, maar het is geen open source. Zie je, open-source is op zichzelf een ethische positie. De ethiek is vervat in de Free Software Foundation (FSF)'s Vier essentiële vrijheden. Dit is de basis voor alle open-sourcelicenties en hun kernfilosofie. Zoals open-source juridisch expert en Columbia-professor Eben Moglen destijds zei dat ethische licenties geen vrije software of open-source licenties kunnen zijn: 

"Vrijheid nul, het recht om het programma voor welk doel dan ook uit te voeren, komt op de eerste plaats in de vier vrijheden, want als gebruikers dat recht niet hebben met betrekking tot de computerprogramma's die ze uitvoeren, hebben ze uiteindelijk helemaal geen rechten op die programma's. Pogingen om alleen toestemming te geven voor goed gebruik, of om in de ogen van de licentiegever slechte te verbieden, schenden de vereiste om vrijheid nul te beschermen.” 

Met andere woorden, als u uw code om welke reden dan ook niet kunt delen, is uw code niet echt open-source. 

Een ander, meer pragmatisch argument over het verbieden van één groep om open-source software te gebruiken, is dat het blokkeren van bijvoorbeeld een IP-adres erg breed is. Zoals Florian Roth, beveiligingsbedrijf Nextron-systemen' Hoofd Onderzoek, die overwoog “mijn gratis tools op systemen uitschakelen met bepaalde taal- en tijdzone-instellingen”, besloot uiteindelijk om dat niet te doen. Waarom? Want door dat te doen, “we zouden ook de tools uitschakelen op systemen van critici en vrijdenkers die de acties van hun regeringen veroordelen.” 

Helaas zijn het niet alleen mensen die open-source proberen te gebruiken voor wat zij zien als een hoger ethisch doel dat problemen veroorzaakt voor open-source software. 

Eerder dit jaar saboteerde JavaScript-ontwikkelaar Marak Squires opzettelijk zijn obscure, maar uiterst belangrijke open-source Javascript-bibliotheken 'colors.js' en 'faker.js'. Het resultaat? Tienduizenden JavaScript-programma's ontploften.

Waarom? Het is nog steeds niet helemaal duidelijk, maar in een sindsdien verwijderde GitHub-post schreef Squires: "Met alle respect, Ik ga de Fortune 500's niet langer ondersteunen ( en andere kleinere bedrijven ) met mijn vrije werk. Er is niet veel anders te zeggen. Grijp deze kans aan om me een jaarcontract van zes cijfers te sturen of het project te splitsen en iemand anders eraan te laten werken. Zoals je je misschien kunt voorstellen, pakte deze poging om zijn salaris te chanteren niet zo goed uit voor hem. 

En dan zijn er mensen die opzettelijk malware in hun open-sourcecode stoppen voor de lol en om winst te maken. Bijvoorbeeld het beveiligingsbedrijf DevOps Jkikker ontdekte 17 nieuwe kwaadaardige JavaScript-pakketten in de NPM-repository die opzettelijk de Discord-tokens van een gebruiker aanvallen en stelen. Deze kunnen dan gebruikt worden op de Discord communicatie- en digitaal distributieplatform.

Naast het creëren van nieuwe kwaadaardige open-sourceprogramma's die er onschuldig en nuttig uitzien, gebruiken andere aanvallers oude, verlaten software en herschrijven ze om cryptomunten te stelen. Een van die programma's was event-stream. Er was kwaadaardige code ingevoegd om bitcoin-portemonnees te stelen en hun saldo over te dragen naar een server in Kuala Lumpur. Er zijn in de loop der jaren verschillende soortgelijke afleveringen geweest.

Met elke dergelijke beweging wordt het vertrouwen in open-source software versleten. Aangezien open-source absoluut essentieel is voor de moderne wereld, is dit een belabberde trend. 

Wat kunnen we eraan doen? Welnu, ten eerste moeten we heel goed overwegen wanneer we het gebruik van open-sourcecode zouden moeten blokkeren, als we dat ooit zouden doen. 

Meer praktisch, we moeten beginnen met het adopteren van het gebruik van van de Linux Foundation Softwarepakket gegevensuitwisseling (SPDX) en Software Stuklijst (SBOM). Samen zullen deze ons precies vertellen welke code we in onze programma's gebruiken en waar deze vandaan komt. Dan zullen we veel beter in staat zijn om weloverwogen beslissingen te nemen.

Tegenwoordig gebruiken mensen maar al te vaak open-sourcecode zonder precies te weten wat ze gebruiken of om het op problemen te controleren. Ze gaan ervan uit dat alles goed is. Dat is nooit een slimme aanname geweest. Tegenwoordig is het ronduit dwaas. 

Zelfs met al deze recente veranderingen is open-source nog steeds beter en veiliger dan de propriëtaire software-alternatieven van de black-box. Maar we moeten de code controleren en verifiëren in plaats van er blindelings op te vertrouwen. Het is het enige verstandige om in de toekomst te doen.

Gerelateerde verhalen:



bron