JA_NPM

NPM-casestudie om oversvømmelse: “Nede i kaninhullet på jagt efter en kop te”

At Xygeni, har vi i løbet af det seneste år haft travlt med at implementere et omfattende system, der overvåger offentlige open source-pakkeregistre for mistænkelig aktivitet eller iboende ondsindet kode.

Denne infrastruktur giver os mulighed for at analysere alle pakker, der udgives dagligt, i realtid. Den giver os også mulighed for at overvåge unormal brugeradfærd.

Selvom tilstedeværelsen af ​​skadelig kode i pakkeregistre er velkendt, er der andre mærkelige eller usædvanlige adfærdsmønstre, som fuldstændig går ubemærket hen hos de almindelige brugere af disse registre. Selv for dem af os, der holder nøje øje med dem, er det ikke let at finde en årsag eller forklaring på sådan adfærd.

Det, der kendetegner Xygeni-teamet, er vores vedholdenhed, når vi står over for et problem, så vi har dykket dybere ned i dette.

Det hele startede med en statistikstigning

Som jeg nævnte tidligere, overvåger vi som en del af vores infrastruktur mange aktivitetsmålinger i offentlige open source-pakkeregistre.

I de sidste dage af marts slog min arbejdskollega Carmen alarm. Vi begyndte at observere en betydelig afvigelse i antallet af pakker offentliggjort på NPM. Efter en indledende gennemgang fandt vi ud af, at denne afvigelse primært skyldtes et relativt lille antal brugere, hvis pakkeudgivelsesrate pludselig var steget voldsomt.

Dette fik os til at gennemgå vores proces og dens tilhørende data på platformen. Heldigvis viste vores gennemgang, at dataene syntes at være korrekte, men dette var også noget forvirrende!

Ved nærmere undersøgelse fandt vi, at disse pakker havde flere fællestræk:

  • Udgiverne var nyoprettede brugere, højst en eller to måneder gamle.
  • Pakkerne havde tilsyneladende tilfældige navne, sandsynligvis genereret ved hjælp af en ordbog. Vi kan finde pakkenavne med mærkelige navne som f. enormous_mite-smiletea, erick-mangut94-sukiwir, exotic_reptile-appteadev or obvious_tuna-appteadevVi vil inkludere et bilag med nogle eksempler på de aktiver, vi har fundet.
  • Indholdet af disse pakker var meget ens, ofte det samme.

I denne sammenhæng observerede vi, at en af ​​pakkerne indeholdt et Python-script, muligvis ved et uheld, som tilsyneladende bruges til at udgive pakkerne automatisk.

NPM

At udrede nettet

Udgivelsesaktiviteten for nogle af disse udgivere i den seneste måned er blevet udført i henhold til følgende tidslinjediagram:

 

npm-angreb

Her er den fulde statistik relateret til denne begivenhed, som vi kan dele:

npm-tjek

Intet relevant fremkom i den individuelle gennemgang af nogle af pakkerne tilknyttet disse brugere. Dette fik os til at analysere det samlede billede af dem alle og søge efter mønstre, der kunne give spor om denne succes.

Vi har trods alt en god håndfuld pakker at analysere:

npm-angreb 2

Dette er de vigtigste punkter, vi kan fremhæve fra analysen:

  • Mange af NPM-pakkerne er indbyrdes forbundne. Nogle refereres til som afhængigheder af andre.
  • Selvom det er mærkelige pakker, og sandsynligvis ingen kender til deres eksistens, har nogle mange ugentlige downloads. Det er svært at acceptere, at en normal bruger måske ønsker at downloade pakker som 0mc03esisd
  • Nogle har tilknyttede arkiver. Nogle gange ser ejerne af disse arkiver ud til at være dummy-konti, ligesom dem på npm.

Bemærk: Brugere uploader yderligere pakker i bølger, så de angivne data kan variere en smule.

npm-angreb 2

Dette er et eksempel på et af de relaterede arkiver. Det indeholder koden til nogle af de udgivne pakker. Også nogle andre filer, som f.eks. en te.yaml fil.

Møde med skuespilleren/skuespillerne

Om dette er et enkelt forfatters eller flere samarbejdspartneres arbejde, er vanskeligt at afgøre. Vi har dog nogle beviser, der indsnævrer oprindelsen af ​​denne aktivitet:

  • Sprog: Visse kommentarer i koden er på indonesisk.
npm-angreb 3
  • Placering: Visse ejere af de tilknyttede arkiver angiver deres placering i Indonesien.
  • Den placering, som vi kan identificere via aktivitetsmetadataene på GitHub, peger også på Indonesien.
NPM_JA

Klokken fem te

Da Indonesien var en britisk koloni, ville det passe perfekt her at drikke te. Men i dette tilfælde er det en ret speciel slags te.

Kan du huske te.yaml filer vi så i starten? Dengang viste vi ikke deres indhold, men det så sådan ud:

npm-angreb 4

Disse filer ser ud til at være relateret til Te-protokolMen hvad er det egentlig? Vi nåede frem https://tea.xyz/blog/250k-grant-for-open-source-developers, der taler om formålet:

Tea ryster den digitale verden ved at adressere det langvarige problem med utilstrækkelig kompensation til open source-udviklere. Det er mere presserende end nogensinde at løse dette problem, og derfor har vi besluttet at uddele 250 dollars i tilskud forud for lanceringen af ​​protokollen. Denne indledende fase har til formål at støtte vedligeholdere af open source-projekter, der har en væsentlig indflydelse på open source-softwareøkosystemet og en teaRank på over 30 foran tea Protocol Incentivized Testnet.

Ifølge te-protokollens dokumenter: 

"For at et projekt kan blive registreret i tea-protokollen, kræver det en tea.yaml-fil, der fungerer som projektets vedtægter og styrer antallet af bidragydere og antallet af stemmer, der kræves for at udføre bestemte handlinger."

 

Efter at have tilgået te-netværket forsøgte vi at finde en af ​​de pakker, som vi har mistanke om, får sit omdømme oppustet. Vi fandt den:

Det synes at forklare, hvad der foregår her: Visse brugere puster deres open source-projekter op med fiktiv popularitet for at kapre teaRank og få de fordele, som teforeningen tilbyder. Penge er trods alt den ældste drivkraft, sammen med sex. 

Konklusion og sidste tanker

Selvom der ikke er fundet tegn på ondsindet kode i disse NPM-pakker, og de sandsynligvis ikke havde til hensigt, at nogen skulle bruge dem, kan de potentielt overtræde flere servicevilkår (TOS) for NPM, GitHub eller tea association. Dette falder dog uden for vores arbejdsområde (de er dog blevet underrettet, og de handlinger, de finder passende, vil blive taget). Misbrug af disse platforme vil påvirke os og vores organisationer på en eller anden måde.

Det er klart, at enhver tilsyneladende harmløs open source-pakke kan indeholde adfærd, der er vanskelig at forstå uden fuld kontekstuel information.

Som udvikler finder jeg det udfordrende manuelt at kontrollere alle de open source-pakker, der bruges i de applikationer, vi udvikler og vedligeholder, med en vis grad af sikkerhed. Uden hjælp fra et værktøj, der automatiserer denne kontrol, kunne opgaven forbruge utallige timer af vores teams.

Der er altid muligheden for at se den anden vej og stole på, at open source-verdenen er sikre steder. Heldigvis tror jeg, at denne tankegang ikke er særlig udbredt i dag; denne sag har været praktisk talt harmløs, men vi oplevede for nylig en langt mere alvorlig hændelse med XZ bagdør, og det har ikke været den eneste ene.

Hvis du har læst så langt, håber jeg, at du har nydt alle detaljerne i denne kuriøse begivenhed. Glem ikke at bruge et par minutter på at gennemgå, hvad Xygeni kan bidrage med til sikkerheden i din organisation.

Bilag: Liste over relaterede aktiver, der skal inkluderes i den endelige artikel

NPM mere relevante brugere baseret på antallet af publicerede pakker: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Et lille udpluk af deres relaterede pakker: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Nogle af de relaterede GitHub-arkiver, der indeholder tea.yml-filer:

sca-tools-software-kompositionsanalyseværktøjer
Prioriter, afhjælp og sørg for dine softwarerisici
Få din gratis konto.
Der kræves ikke noget kreditkort.

Sikr din softwareudvikling og -levering

med Xygeni-produktsuite