JA_NPM

NPM-casestudie om flom: «Ned i kaninhullet på jakt etter en tekopp»

At Xygeni, har vi vært travelt opptatt det siste året med å implementere et omfattende system som overvåker offentlige pakkeregistre med åpen kildekode for mistenkelig aktivitet eller iboende skadelig kode.

Denne infrastrukturen lar oss analysere alle pakkene som publiseres daglig i sanntid. Den lar oss også overvåke unormal brukeratferd.

Selv om tilstedeværelsen av skadelig kode i pakkeregistre er velkjent, finnes det andre merkelige eller uvanlige atferder som går helt ubemerket hen av de vanlige brukerne av disse registrene. Selv for de av oss som følger nøye med på dem, er det ikke lett å finne en grunn eller forklaring på slik atferd.

Det som kjennetegner Xygeni-teamet er vår utholdenhet når vi står overfor et problem, så vi har gått dypere inn i dette.

Det hele startet med en statistikktopp

Som jeg nevnte tidligere, overvåker vi som en del av infrastrukturen vår mange aktivitetsmålinger i offentlige pakkeregistre med åpen kildekode.

I de siste dagene av mars slo arbeidskollegaen min Carmen alarm. Vi begynte å observere et betydelig avvik i antall pakker publisert på NPM. Etter en innledende gjennomgang fant vi ut at dette avviket hovedsakelig skyldtes et relativt lite antall brukere hvis pakkepubliseringsrate plutselig hadde skutt i været.

Dette fikk oss til å gjennomgå prosessen vår og tilhørende data i plattformen. Heldigvis konkluderte gjennomgangen vår med at dataene så ut til å være korrekte, men dette var også noe forvirrende!

Ved nærmere undersøkelse fant vi ut at disse pakkene hadde flere fellestrekk:

  • Utgiverne var nyopprettede brukere, ikke mer enn én eller to måneder gamle på det meste.
  • Pakkene hadde tilsynelatende tilfeldige navn, sannsynligvis generert ved hjelp av en ordbok. Vi kan finne pakkenavn med merkelige navn som enormous_mite-smiletea, erick-mangut94-sukiwir, exotic_reptile-appteadev or opplagt_tuna-appteadevVi vil legge ved et vedlegg med noen eksempler på ressursene vi har funnet.
  • Innholdet i disse pakkene var veldig likt, ofte det samme.

I denne sammenhengen observerte vi at en av pakkene inneholdt et Python-skript, muligens ved et uhell, som ser ut til å bli brukt til å publisere pakkene automatisk.

NPM

Å nøste opp nettet

Publikasjonsaktiviteten for noen av disse forlagene den siste måneden har blitt utført i henhold til følgende tidslinjediagram:

 

npm-angrep

Her er den fullstendige statistikken knyttet til denne hendelsen som vi kan dele:

npm-sjekk

Ingenting relevant fremkom fra den individuelle gjennomgangen av noen av pakkene knyttet til disse brukerne. Dette førte til at vi analyserte helhetsbildet av dem alle, og lette etter mønstre som kunne gi ledetråder til denne suksessen.

Tross alt har vi en god håndfull pakker å analysere:

npm-angrep 2

Dette er hovedpunktene vi kan trekke frem fra analysen:

  • Mange av NPM-pakkene er sammenhengende. Noen refereres til som avhengigheter av andre.
  • Til tross for at det er merkelige pakker, og sannsynligvis ingen vet om deres eksistens, har noen mange ukentlige nedlastinger. Det er vanskelig å akseptere at en vanlig bruker kanskje vil laste ned pakker som 0mc03esisd. 
  • Noen har tilknyttede repositorier. Noen ganger ser det ut som om eierne av disse repositoriene er dummy-kontoer, lik de på npm.

Merk: Brukere laster opp tilleggspakker i bølger, så de oppgitte dataene kan variere noe.

npm-angrep 2

Dette er et eksempel på et av de relaterte arkivene. Det inneholder koden til noen av de publiserte pakkene. Også noen andre filer, som en te.yaml filen.

Møte med skuespilleren(e)

Om dette er arbeidet til én enkelt forfatter eller flere samarbeidspartnere er vanskelig å avgjøre. Vi har imidlertid noen bevis som snevrer inn opprinnelsen til denne aktiviteten:

  • Språk: Enkelte kommentarer i koden er på indonesisk.
npm-angrep 3
  • Sted: Enkelte eiere av de tilknyttede arkivene oppgir sin plassering i Indonesia.
  • Stedet vi kan identifisere gjennom aktivitetsmetadataene på GitHub peker også til Indonesia.
NPM_JA

Klokken fem-te

Siden Indonesia var en britisk koloni, ville det passet perfekt her for å drikke te. Men i dette tilfellet er det en ganske spesiell type te.

Husker du te.yaml filene vi så i begynnelsen? Den gangen viste vi ikke innholdet deres, men det så slik ut:

npm-angrep 4

Disse filene ser ut til å være relatert til Te-protokollMen hva er det egentlig? Vi nådde frem https://tea.xyz/blog/250k-grant-for-open-source-developers, som snakker om formålet:

Tea ryster opp i den digitale verden ved å ta tak i det langvarige problemet med utilstrekkelig kompensasjon for utviklere av åpen kildekode. Å løse dette problemet er mer presserende enn noensinne, og det er derfor vi har besluttet å bevilge 250 000 dollar i tilskudd før lanseringen av protokollen. Denne innledende fasen tar sikte på å støtte vedlikeholdere av åpen kildekode-prosjekter som har en vesentlig innvirkning på økosystemet for åpen kildekode-programvare og en teaRank på over 30 foran tea Protocol Incentivized Testnet.

I følge dokumentene for teprotokollen: 

«For at et prosjekt skal kunne registreres i tea-protokollen, kreves det en tea.yaml-fil som fungerer som prosjektets vedtekter for å regulere antall bidragsytere og antall stemmer som kreves for å utføre visse handlinger.»

 

Etter å ha åpnet tea-nettverket prøvde vi å finne en av pakkene som vi mistenker får ryktet sitt blåst opp. Vi fant den:

Det ser ut til å forklare hva som skjer her: Enkelte brukere blåser opp sine åpen kildekode-prosjekter med fiktiv popularitet for å kapre teaRank og få fordelene som teforeningen tilbyr. Tross alt er penger den eldste drivkraften, sammen med sex. 

Konklusjon og siste tanker

Selv om det ikke er funnet bevis for ondsinnet kode i disse NPM-pakkene, og de sannsynligvis ikke hadde til hensikt at noen skulle bruke dem, kan de potensielt bryte flere tjenestevilkår (TOS) for NPM, GitHub eller tea association. Dette faller imidlertid utenfor omfanget av vårt arbeid (de har imidlertid blitt varslet, og de tiltakene de anser som passende vil bli iverksatt). Misbruk av disse plattformene vil påvirke oss og våre organisasjoner på en eller annen måte.

Det som er klart er at enhver tilsynelatende uskyldig åpen kildekode-pakke kan inneholde atferd som er vanskelig å forstå uten full kontekstuell informasjon.

Som utvikler synes jeg det er utfordrende å manuelt kontrollere alle pakkene med åpen kildekode som brukes i applikasjonene vi utvikler og vedlikeholder med en viss grad av sikkerhet. Uten hjelp fra et verktøy som automatiserer denne kontrollen, kan oppgaven ta utallige timer av teamene våre.

Det finnes alltid muligheten til å se en annen vei, og stole på at åpen kildekode-verdenen er trygge steder. Heldigvis tror jeg ikke denne tankegangen er veldig utbredt i dag; denne saken har vært praktisk talt ufarlig, men vi opplevde nylig en mye mer alvorlig hendelse med XZ bakdør, og det har ikke vært den eneste.

Hvis du har lest så langt, håper jeg du har nytt alle detaljene i denne kuriøse hendelsen. Ikke glem å bruke noen minutter på å se på hva Xygeni kan bidra med til sikkerheten i organisasjonen din.

Vedlegg: List opp relaterte ressurser som skal inkluderes i den endelige artikkelen

NPM mer relevante brukere basert på antall publiserte pakker: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Et lite utvalg av deres relaterte pakker: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Noen av de relaterte GitHub-repositoriene som inneholder tea.yml-filer:

sca-tools-programvare-verktøy for komposisjonsanalyse
Prioriter, utbedre og sikre programvarerisikoene dine
Få din gratis konto.
Ingen kredittkort kreves.

Sikre programvareutviklingen og -leveringen din

med Xygeni-produktpakken