Utvecklare med öppen källkod korrumperar ofta använda bibliotek, vilket påverkar massor av projekt

0
151

En utvecklare verkar medvetet ha korrumperat ett par öppen källkodsbibliotek på GitHub och programvaruregistret npm — “faker.js” och “colors.js” — som tusentals användare är beroende av, vilket gör att alla projekt som innehåller dessa bibliotek värdelösa, som rapporterats av Bleeping Computer. Även om det ser ut som att color.js har uppdaterats till en fungerande version, verkar faker.js fortfarande vara påverkad, men problemet kan lösas genom att nedgradera till en tidigare version (5.5.3).

De saboterade versionerna få applikationer att mata ut konstiga bokstäver och symboler i oändlighet

Bleeping Computer upptäckte att utvecklaren av dessa två bibliotek, Marak Squires, introducerade en malign commit (en filrevision på GitHub) till colors.js som lägger till “en ny amerikansk flaggmodul” samt rullade ut version 6.6.6 av faker .js, som utlöser samma destruktiva händelseförlopp. De saboterade versionerna gör att program oändligt matar ut konstiga bokstäver och symboler, som börjar med tre rader text som lyder “LIBERTY LIBERTY LIBERTY.”

Ännu mer märkligt, faker.js Readme-filen har också ändrats till “Vad hände egentligen med Aaron Swartz?” Swartz var en framstående utvecklare som hjälpte till att etablera Creative Commons, RSS och Reddit. 2011 åtalades Swartz för att ha stulit dokument från den akademiska databasen JSTOR i syfte att göra dem fria att komma åt, och begick senare självmord 2013. Squires omnämnande av Swartz skulle potentiellt kunna hänvisa till konspirationsteorier kring hans död.

Som påpekat av Bleeping Computer, vände sig ett antal användare – inklusive några som arbetar med Amazons Cloud Development Kit – till GitHubs felspårningssystem för att uttrycka sin oro över problemet. Och eftersom faker.js ser nästan 2,5 miljoner nedladdningar per vecka på npm, och color.js får cirka 22,4 miljoner nedladdningar per vecka, är effekterna av korruptionen sannolikt långtgående. För sammanhanget genererar faker.js falska data för demos, color.js lägger till färger till javascript-konsoler.

Som svar på problemet publicerade Squires en uppdatering på GitHub för att lösa “zalgo-problemet”, som hänvisar till den glitchy text som de korrupta filerna producerar. “Det har kommit till vår kännedom att det finns en zalgo-bugg i versionen av v1.4.44-liberty-2 av färger,” skriver Squires på ett förmodligen sarkastiskt sätt. “Snälla vet att vi arbetar just nu för att fixa situationen och kommer att ha en lösning inom kort.”

Två dagar efter att ha skickat den korrupta uppdateringen till faker.js skickade Squires senare ut en tweet och noterade att han har stängts av från GitHub, trots att han lagrat hundratals projekt på sajten. Att döma av ändringsloggen på både faker.js och colors.js ser det dock ut som att hans avstängning redan har hävts. Squires introducerade faker.js commit den 4 januari, blev bannlyst den 6 januari och introducerade inte “liberty”-versionen av colors.js förrän den 7 januari. Det är oklart om Squires konto har förbjudits igen. The Verge kontaktade GitHub med en begäran om kommentar men hörde inte av sig direkt.

Historien slutar dock inte där. Bleeping Computer grävde upp ett av Squires inlägg på GitHub från november 2020, där han förklarar att han inte längre vill arbeta gratis. “Respektfullt kommer jag inte längre att stödja Fortune 500s (och andra mindre företag) med mitt gratisarbete”, säger han. “Ta det här som en möjlighet att skicka mig ett sexsiffrigt årskontrakt eller dela projektet och få någon annan att arbeta med det.”

Squires djärva drag uppmärksammar moralen – och finansiellt — dilemma med öppen källkodsutveckling, vilket troligen var målet för hans handlingar. Ett enormt antal webbplatser, mjukvara och appar förlitar sig på utvecklare med öppen källkod för att skapa viktiga verktyg och komponenter – helt gratis. Det är samma problem som resulterar i att oavlönade utvecklare arbetar outtröttligt för att åtgärda säkerhetsproblemen i sin programvara med öppen källkod, som Heartbleed-skrämseln 2014 som påverkade OpenSSL och den nyare Log4Shell-sårbarheten som hittades i log4j som gjorde att frivilliga försökte lösa.