Niektórzy programiści zanieczyszczają oprogramowanie typu open source

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

Getty Images

Jedną z najbardziej niesamowitych rzeczy w open source nie jest to, że tworzy świetne oprogramowanie. Chodzi o to, że tak wielu programistów odkłada swoje ego na bok, aby tworzyć wspaniałe programy z pomocą innych. Teraz jednak garstka programistów przedkłada własne obawy nad dobro wielu i potencjalnie niszczy oprogramowanie typu open source dla wszystkich.

Na przykład, opiekun menedżera pakietów JavaScript, RIAEvangelist, Brandon Nozaki Miller, napisał i opublikował pakiet z kodem źródłowym npm o otwartym kodzie o nazwie peacenotwar. Zrobił niewiele poza wydrukowaniem wiadomości o pokoju na komputerach stacjonarnych. Jak dotąd tak nieszkodliwe. 

Następnie Miller umieścił w pakiecie złośliwy kod, aby nadpisać systemy plików użytkowników, jeśli ich komputer miał adres IP z Rosji lub Białorusi. Następnie dodał to jako zależność do swojego popularnego węzeł-ipc program i natychmiastowy chaos! Wiele serwerów i komputerów PC uległo awarii podczas aktualizacji do najnowszego kodu, a następnie ich systemy zostały usunięte z dysków. 

Obrona Millera, „To wszystko jest publiczne, udokumentowane, licencjonowane i otwarte”, nie wytrzymuje. 

Liran Tal, snyk badacz, który odkrył problem, powiedział: „Nawet jeśli celowy i niebezpieczny czyn [jest] postrzegany przez niektórych jako uzasadniony akt protestu, jak to przekłada się na przyszłą reputację opiekuna? i udział w społeczności deweloperów? Czy kiedykolwiek można by zaufać temu opiekunowi, że nie będzie kontynuował przyszłych działań w takich lub nawet bardziej agresywnych akcjach dla jakichkolwiek projektów, w których uczestniczy?” 

Miller nie jest przypadkowym wariatem. Stworzył dużo dobrego kodu, takiego jak node-ipc, i Serwer HTTP węzła. Ale czy możesz ufać, że którykolwiek z jego kodu nie jest złośliwy? Chociaż opisuje to jako „nie złośliwe oprogramowanie, [ale] protestware, które jest w pełni udokumentowane”, inni jadowicie się z tym nie zgadzają. 

Jak napisał jeden z programistów GitHub: „To, co się z tym stanie, to to, że zespoły bezpieczeństwa w zachodnich korporacjach, które nie mają absolutnie nic wspólnego z Rosją lub polityką, zaczną dostrzegać darmowe oprogramowanie o otwartym kodzie źródłowym jako droga do ataków w łańcuchu dostaw (co to całkowicie jest) i po prostu zacznij zakazywać bezpłatnego oprogramowania o otwartym kodzie źródłowym — całego wolnego i otwartego oprogramowania — w swoich firmach”. 

Jak napisał inny programista GitHub z uchwytem nm17: „The współczynnik zaufania open source, który był oparty na dobrej woli programistów, teraz praktycznie zniknął, a teraz coraz więcej osób zdaje sobie sprawę, że pewnego dnia ich biblioteka/aplikacja może zostać wykorzystana do zrobienia/powiedzenia tego, co pomyśli jakiś przypadkowy programista w Internecie ” było właściwą rzeczą, którą zrobili”.

Oba stanowią ważne punkty. Skoro nie możesz używać kodu źródłowego, jeśli nie zgadzasz się z politycznym stanowiskiem jego twórcy, jak możesz z niego korzystać z pewnością? 

Serce Millera może być we właściwym miejscu — Slava Ukraini! — ale czy oprogramowanie typu open source zainfekowane złośliwym ładunkiem jest właściwym sposobem ochrony inwazji Rosji na Ukrainę? Nie, nie jest. 

Metoda open source działa tylko dlatego, że ufamy sobie nawzajem. Kiedy to zaufanie zostaje zerwane, bez względu na przyczynę, wtedy podstawowa struktura oprogramowania open source zostaje zerwana. Jak powiedział Greg Kroah-Hartman, opiekun jądra Linuksa dla stabilnej gałęzi, kiedy studenci z University of Minnesota celowo próbowali wstawić zły kod do jądra Linuksa na potrzeby eksperymentu w 2021 roku, powiedział: „To, co robią, to celowe złośliwe zachowanie i jest niedopuszczalne i całkowicie nieetyczne”.

Ludzie od dawna argumentowali, że open source powinno zawierać również przepisy etyczne. Na przykład 2009 Wyjątek Powszechna Licencja Publiczna (eGPL), rewizja GPLv2, próbował zabronić „wyjątkom”, takim jak użytkownicy wojskowi i dostawcy, używania jego kodu. Nie powiodło się. Inne licencje, takie jak Licencja JSON z jego słodko naiwną klauzulą ​​„oprogramowanie powinno być używane w dobrym, a nie złym” wciąż istniejącą, ale nikt jej nie egzekwuje.  

Niedawno aktywistka i programistka Coraline Ada Ehmke wprowadziła licencję open source, która wymaga od użytkowników moralnego postępowania. W szczególności jej Licencja Hipokratesa dodane do Licencja MIT typu open source klauzula stwierdzająca: 

„Oprogramowanie nie może być wykorzystywane przez osoby fizyczne, korporacje, rządy lub inne grupy do systemów lub działań, które aktywnie i świadomie zagrażają, szkodzą lub w inny sposób zagrażają fizycznemu, psychicznemu, ekonomicznemu lub ogólnemu dobru osób lub grup znajdujących się w niekorzystnej sytuacji naruszenie Powszechnej Deklaracji Praw Człowieka ONZ”.

Brzmi dobrze, ale to nie jest open source. Widzisz, open source jest samo w sobie pozycją etyczną. Jej etyka zawarta jest w Fundacja Wolnego Oprogramowania (FSF)„s Cztery podstawowe wolności. Jest to podstawa wszystkich licencji open-source i ich podstawowej filozofii. Jako ekspert prawny open source i profesor prawa Columbia Eben Moglen powiedział wówczas, że licencje etyczne nie mogą być wolnym oprogramowaniem ani licencjami open source: 

"Wolność zero, prawo do uruchamiania programu w dowolnym celu, znajduje się na pierwszym miejscu w czterech wolnościach, ponieważ jeśli użytkownicy nie mają tego prawa w odniesieniu do uruchamianych przez siebie programów komputerowych, ostatecznie nie mają żadnych praw do tych programów. Wysiłki zmierzające do udzielenia zgody tylko na dobre cele lub zakazania złych w oczach licencjodawcy naruszają wymóg ochrony wolności zero”. 

Innymi słowy, jeśli nie możesz udostępnić swojego kodu z jakiegokolwiek powodu, twój kod nie jest naprawdę open-source. 

Innym bardziej pragmatycznym argumentem za zabranianiem jednej grupie korzystania z oprogramowania typu open source jest to, że blokowanie czegoś takiego jak adres IP jest bardzo szerokim pędzlem. Jako Florian Roth, firma ochroniarska Systemy Nextron' Kierownik Działu Badań, który rozważył “wyłączanie moich darmowych narzędzi w systemach z pewnymi ustawieniami języka i strefy czasowej”, w końcu zdecydował się tego nie robić. Czemu? Ponieważ robiąc to, „wyłączylibyśmy również narzędzia w systemach krytyków i wolnomyślicieli które potępiają działania ich rządów”. 

Niestety, nie tylko ludzie próbujący używać open source do tego, co uważają za wyższy cel etyczny, powodują problemy dla oprogramowania open source. 

Na początku tego roku programista JavaScript Marak Squires celowo sabotował swoje niejasne, ale niezwykle ważne biblioteki JavaScript „colors.js” i „faker.js”. Wynik? Wybuchły dziesiątki tysięcy programów JavaScript.

Czemu? Nadal nie jest to do końca jasne, ale w usuniętym poście na GitHubie Squires napisał: „Z poważaniem, Nie zamierzam już wspierać Fortune 500s ( i inne mniejsze firmy ) z moją bezpłatną pracą. Nie ma wiele więcej do powiedzenia. Potraktuj to jako okazję do wysłania mi sześciocyfrowego rocznego kontraktu lub rozwidlenia projektu i zlecenia pracy komuś innemu”. Jak możesz sobie wyobrazić, ta próba szantażowania jego drogi do wypłaty nie wyszła mu tak dobrze. 

Są też ludzie, którzy celowo umieszczają złośliwe oprogramowanie w swoim kodzie open source dla zabawy i zysku. Na przykład firma zajmująca się bezpieczeństwem DevOps JŻaba odkrył 17 nowych złośliwych pakietów JavaScript w repozytorium NPM, które celowo atakują i kradną tokeny Discord użytkownika. Można ich następnie użyć na Discord komunikacja i platforma dystrybucji cyfrowej.

Oprócz tworzenia nowych złośliwych programów o otwartym kodzie źródłowym, które wyglądają niewinnie i pomocne, inni napastnicy biorą stare, porzucone oprogramowanie i przepisują je tak, aby zawierały backdoory do kradzieży kryptowalut. Jednym z takich programów był strumień wydarzeń. Zawierał złośliwy kod w celu kradzieży portfeli bitcoin i przeniesienia ich salda na serwer w Kuala Lumpur. Na przestrzeni lat było kilka podobnych epizodów.

Z każdym takim ruchem traci się wiarę w oprogramowanie typu open source. Ponieważ open-source jest absolutnie niezbędne dla współczesnego świata, jest to kiepski trend. 

Co możemy z tym zrobić? Cóż, po pierwsze, powinniśmy naprawdę bardzo dokładnie rozważyć, kiedy, jeśli w ogóle, powinniśmy zablokować użycie kodu o otwartym kodzie źródłowym. 

Bardziej praktycznie, musimy zacząć przyjmować użycie Fundacja Linuksa Wymiana danych pakietu oprogramowania (SPDX) i Zestawienie komponentów oprogramowania (SBOM). Razem powiedzą nam one dokładnie, jakiego kodu używamy w naszych programach i skąd on pochodzi. Wtedy będziemy znacznie bardziej w stanie podejmować świadome decyzje.

Dzisiaj bardzo często ludzie używają kodu open source, nie wiedząc dokładnie, na czym polegają, ani nie sprawdzając go pod kątem problemów. Zakładają, że wszystko z tym w porządku. To nigdy nie było mądre założenie. Dziś to po prostu głupie. 

Nawet przy tych wszystkich ostatnich zmianach oprogramowanie typu open source jest nadal lepsze i bezpieczniejsze niż alternatywy dla zastrzeżonego oprogramowania z czarnej skrzynki. Ale musimy sprawdzić i zweryfikować kod, zamiast ślepo mu ufać. To jedyna mądra rzecz, jaką można zrobić w przyszłości.

Powiązane historie:



Źródło