Npm (Node Packet Manager) er et pakkehåndterings-system for Javascript, og standardløsningen for pakkeadministrasjon for Node.js (et kjøremiljø for Javascript utenfor nettleseren). Svært mange som lager Javascript- og Node.js-applikasjoner bruker Npm til å inkludere pakker og biblioteker som er laget av andre i sine egne prosjekter – i stedet for å utvikle alt selv.
Sikkerhetsteamet ved Npm advarer nå mot at kun 9,27 prosent av alle som vedlikeholder Javascript-biblioteker på Npm bruker tofaktor-autentisering (2FA). Det skriver Zdnet.
Selv om det finnes andre løsninger for pakkehåndtering (som Yarn), er Npm med sine mer enn 350.000 indekserte biblioteker verdens absolutt største. Det gjør Npm til et attraktivt mål for såkalte leveransekjede-angrep («supply chain attacks»), hvor en angriper får tilgang til Npm-kontoen til en utvikler og på den måten klarer å plante ondsinnet kode i noen av bibliotekene som ligger på Npm. Siden disse bibliotekene gjerne brukes av veldig mange, kan konsekvensene bli store.
Det vært flere eksempler på leveransekjede-angrep mot Npm-biblioteker, for eksempel i fjor da noen plantet en bakdør i npm-biblioteket electron-native-notify, og på den måten indirekte klarte å infisere en kryptovaluta-app som brukte dette biblioteket. Eller i 2018, da en angriper klarte å legge inn ondsinnet kode i ESLint-biblioteket, kode som var laget for å stjele innloggingsinformasjon fra andre brukere på Npm.
Microsoft-eide Github overtar Npm
En undersøkelse gjort av universitetet i Darmstadt i Tyskland i fjor viser at veldig mange av Npm-pakkene er tett sammenvevd med hverandre, faktisk i så stor grad at hvis noen får kontroll over 20 «high profile» brukerkontoer på Npm så kan de plante ondsinnet kode som blir brukt av halvparten av Npm-økosystemet, skriver Zdnet. Ifølge forskerne ved Darmstadt-universitetet har en gjennomsnittlig Npm-pakke hele 79 avhengigheter – det vil si at de benytter seg av 79 andre pakker.
Tips: I forbindelse med Npm@6 som kom i 2018, introduserte Npm et nytt verktøy for å sjekke alle avhengighetene i egne prosjekter for kjente sårbarheter og sikkerhetshull. Ved å kjøre npm audit får du beskjed om eventuelle sårbarheter, og har mulighet til å kjøre npm audit fix for å automatisk oppdatere de aktuelle pakkene til versjoner uten sårbarheter.