Kai kurie kūrėjai užteršia atvirojo kodo programinę įrangą

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

Getty Images

Vienas nuostabiausių atvirojo kodo dalykų yra ne tai, kad jis sukuria puikią programinę įrangą. Taip yra todėl, kad tiek daug kūrėjų atideda savo ego, kad su kitų pagalba sukurtų puikias programas. Tačiau dabar saujelė programuotojų savo rūpesčius iškelia aukščiau už daugybės naudos ir potencialiai sugriaunančią atvirojo kodo programinę įrangą visiems.

Pavyzdžiui, „JavaScript“ paketų tvarkyklės prižiūrėtojas „RIAEvangelist“, Brandonas Nozaki Milleris, parašė ir paskelbė atvirojo kodo npm šaltinio kodo paketą, pavadintą peacenotwar. Tai mažai ką padarė, tik išspausdino pranešimą, kad būtų ramu staliniams kompiuteriams. Kol kas tai nekenksminga. 

Tada Milleris į paketą įterpė kenkėjišką kodą, kad perrašytų vartotojų failų sistemas, jei jų kompiuteris turėjo Rusijos ar Baltarusijos IP adresą. Tada jis pridėjo tai kaip priklausomybę prie savo populiarumo mazgas-ipc programa ir momentinis chaosas! Daugybė serverių ir kompiuterių sugedo, kai buvo atnaujintas iki naujausio kodo, o tada jų sistemų diskai buvo ištrinti. 

Millerio gynyba“,Visa tai yra vieša, dokumentuota, licencijuota ir atviro kodo“, neatlaiko. 

Liran Tal, Snykas tyrėjas, atskleidęs problemą, sakė: „Net jei kai kurie tyčinis ir pavojingas veiksmas [yra] suvokiamas kaip teisėtas protesto veiksmas, kaip tai atsiliepia būsimai prižiūrėtojo reputacijai ir dalyvauti kūrėjų bendruomenėje? Ar kada nors vėl bus patikėta šiam prižiūrėtojui, kad jis neatsižvelgs į būsimus veiksmus tokiuose ar net agresyvesniuose projektuose, kuriuose dalyvauja? 

Milleris nėra atsitiktinis švaistiklis. Jis sukūrė daug gero kodo, pavyzdžiui, node-ipc ir Mazgo HTTP serveris. Tačiau ar galite pasitikėti, kad jo kodas nėra kenkėjiškas? Nors jis tai apibūdina kaip „ne kenkėjiška programa, [bet] protesto programa, kuri yra visiškai dokumentuota“, – nuodingai nesutinka kiti. 

Kaip rašė vienas „GitHub“ programuotojas: „Tai, kas nutiks, yra tai, kad Vakarų korporacijų saugumo komandos, neturinčios visiškai nieko bendra su Rusija ar politika, pradės matyti nemokama ir atvirojo kodo programinė įranga kaip būdas tiekimo grandinės atakoms (o tai visiškai yra) ir tiesiog pradėkite drausti nemokamą atvirojo kodo programinę įrangą – visą nemokamą ir atvirojo kodo programinę įrangą – savo įmonėse. 

Kaip rašė kitas „GitHub“ kūrėjas su rankena nm17: „The atvirojo kodo pasitikėjimo faktorius, kuris buvo pagrįstas gera kūrėjų valia, dabar praktiškai nebėra, o dabar vis daugiau žmonių supranta, kad vieną dieną jų biblioteka / programa gali būti panaudota daryti / pasakyti bet ką, ką galvoja koks nors atsitiktinis kūrėjas internete. buvo teisingas dalykas, kurį jie padarė“.

Abu pateikia pagrįstus taškus. Kai negalite naudoti šaltinio kodo, nebent sutinkate su jo kūrėjo politine pozicija, kaip galite jį naudoti užtikrintai? 

Milerio širdis gali būti tinkamoje vietoje – Slava Ukraini! — bet ar atvirojo kodo programinė įranga, užkrėsta kenksmingu kroviniu, yra tinkamas būdas apsaugoti Rusijos invaziją į Ukrainą? Ne, tai nėra. 

Atvirojo kodo metodas veikia tik todėl, kad pasitikime vieni kitais. Kai šis pasitikėjimas nutrūksta, nesvarbu dėl kokios priežasties, tada pažeidžiama pagrindinė atvirojo kodo sistema. Kaip sakė Gregas Kroah-Hartmanas, stabilios šakos „Linux“ branduolio prižiūrėtojas, kai Minesotos universiteto studentai 2021 m. tyčia bandė įterpti blogą kodą į „Linux“ branduolį eksperimentui, sakė: „Jie daro tyčinį kenkėjišką elgesį ir nėra priimtina ir visiškai neetiška“.

Žmonės jau seniai įrodinėja, kad atvirasis kodas turėtų apimti ir etikos nuostatas. Pavyzdžiui, 2009 m Bendrosios viešosios licencijos (eGPL) išimtis, peržiūra GPLv2, bandė uždrausti „išimtis“, pvz., karinius naudotojus ir tiekėjus, naudoti savo kodą. Nepavyko. Kitos licencijos, pvz JSON licencija su saldžiai naiviu „programinė įranga turi būti naudojama gėriui, o ne blogiui“ sąlyga vis dar egzistuoja, bet niekas jos nevykdo.  

Visai neseniai aktyvistė ir programinės įrangos kūrėja Coraline Ada Ehmke pristatė atvirojo kodo licenciją, pagal kurią jos vartotojai turi elgtis moraliai. Tiksliau, ji Hipokrato licencija pridėta prie MIT atvirojo kodo licencija punktas, kuriame nurodyta: 

„Programinės įrangos negali naudoti asmenys, korporacijos, vyriausybės ar kitos grupės sistemoms ar veiklai, kuri aktyviai ir sąmoningai kelia pavojų, kenkia ar kitaip kelia grėsmę nepasiturinčių asmenų ar grupių fizinei, psichinei, ekonominei ar bendrai gerovei. Jungtinių Tautų Visuotinės žmogaus teisių deklaracijos pažeidimas“.

Skamba gerai, bet tai nėra atvirojo kodo. Matote, atvirasis kodas pats savaime yra etiška pozicija. Jos etika yra nurodyta Laisvosios programinės įrangos fondas (FSF)'s Keturios esminės laisvės. Tai yra visų atvirojo kodo licencijų ir jų pagrindinės filosofijos pagrindas. Kaip atvirojo kodo teisės ekspertas ir Kolumbijos teisės profesorius Ebenas Moglenas sakė, kad etinės licencijos negali būti nemokama programinė įranga arba atvirojo kodo licencijos: 

"Laisvės nulis, teisė paleisti programą bet kokiam tikslui, yra pirmoje vietoje pagal keturias laisves, nes jei vartotojai neturi šios teisės jų paleistų kompiuterių programų atžvilgiu, jie galiausiai neturi jokių teisių į tas programas. Pastangos duoti leidimą tik geriems tikslams arba uždrausti blogus, licencijos išdavėjo akimis, pažeidžia reikalavimą apsaugoti nulinę laisvę. 

Kitaip tariant, jei dėl kokios nors priežasties negalite bendrinti savo kodo, jūsų kodas tikrai nėra atvirojo kodo. 

Kitas pragmatiškesnis argumentas dėl draudimo vienai grupei naudoti atvirojo kodo programinę įrangą yra tai, kad blokuoti kažką, pavyzdžiui, IP adresą, yra labai platus šepetys. Kaip Florianas Rothas, saugos įmonė Nextron sistemos„Tyrimo vadovas, manęs,išjungiau nemokamus įrankius sistemose su tam tikrais kalbos ir laiko juostos nustatymais“, – galiausiai nusprendė to nedaryti. Kodėl? Nes tai darydami „taip pat išjungtume įrankius kritikų ir laisvamanių sistemose kurios smerkia savo vyriausybių veiksmus“. 

Deja, atvirojo kodo programinei įrangai problemų kelia ne tik žmonės, bandantys naudoti atvirąjį kodą tam, ką jie laiko aukštesniu etiniu tikslu. 

Anksčiau šiais metais „JavaScript“ kūrėjas Marakas Squiresas sąmoningai sabotavo savo neaiškias, bet gyvybiškai svarbias atvirojo kodo „Javascript“ bibliotekas „colors.js“ ir „faker.js“. Rezultatas? Dešimtys tūkstančių „JavaScript“ programų sprogo.

Kodėl? Tai vis dar nėra visiškai aišku, bet nuo tada ištrintame GitHub įraše Squires rašė: „Pagarbiai, Nebesiimu palaikyti Fortune 500s ( ir kitos mažesnės įmonės ) su mano nemokamu darbu. Nėra daug ką daugiau pasakyti. Pasinaudokite šia galimybe atsiųsti man šešiaženklę metinę sutartį arba perkelkite projektą ir paprašykite, kad kas nors kitas dirbtų su juo. Kaip galite įsivaizduoti, šis bandymas šantažuoti kelią į atlyginimą jam nepasiteisino. 

Ir tada yra žmonių, kurie tyčia įtraukia kenkėjiškas programas į savo atvirojo kodo kodą, siekdami linksmybių ir pelno. Pavyzdžiui, apsaugos įmonė „DevOps“. JFrog NPM saugykloje aptiko 17 naujų „JavaScript“ kenkėjiškų paketų, kurie tyčia atakuoja ir vagia vartotojo „Discord“ prieigos raktus. Tada jie gali būti naudojami ant Discord ryšių ir skaitmeninio platinimo platforma.

Be to, kad kuria naujas kenkėjiškas atvirojo kodo programas, kurios atrodo nekaltos ir naudingos, kiti užpuolikai ima seną, apleistą programinę įrangą ir perrašo ją, kad įtrauktų kriptovaliutų vagysčių užpakalines duris. Viena iš tokių programų buvo renginių srautas. Į jį buvo įdėtas kenkėjiškas kodas, skirtas pavogti bitkoinų pinigines ir pervesti jų likučius į Kvala Lumpūro serverį. Bėgant metams buvo keli panašūs epizodai.

Su kiekvienu tokiu žingsniu tikėjimas atvirojo kodo programine įranga nyksta. Kadangi atvirasis kodas yra gyvybiškai svarbus šiuolaikiniam pasauliui, tai yra niūri tendencija. 

Ką galime dėl to padaryti? Na, pirmiausia turėtume labai atidžiai apsvarstyti, kada, jei kada nors, turėtume blokuoti atvirojo kodo naudojimą. 

Praktiškai turime pradėti naudoti Linux fondas Programinės įrangos paketo duomenų mainai (SPDX) ir Programinės įrangos medžiagų sąrašas (SBOM). Kartu jie tiksliai nurodys, kokį kodą naudojame savo programose ir iš kur jis gaunamas. Tada galėsime daug geriau priimti pagrįstus sprendimus.

Šiandien žmonės dažnai naudoja atvirojo kodo kodą tiksliai nežinodami, ką naudoja, ir netikrindami, ar nėra problemų. Jie mano, kad viskas gerai. Tai niekada nebuvo protinga prielaida. Šiandien tai visiškai kvaila. 

Net ir atlikus visus šiuos naujausius pakeitimus, atvirasis kodas vis dar yra geresnis ir saugesnis nei juodosios dėžės patentuotos programinės įrangos alternatyvos. Tačiau turime patikrinti ir patvirtinti kodą, o ne aklai juo pasitikėti. Tai vienintelis protingas dalykas, kurį reikia padaryti ateityje.

Susijusios istorijos:



Šaltinis