APM Security Audit: Tjeklisten udviklere glemmer før go-live
Sikkerhedstjekliste til npm-pakker: Hvad enhver udvikler bør gennemgå før publicering
At udgive open source-pakker til npm er ikke bare et spørgsmål om at få dem til at fungere. Det handler også om at tænke på sikkerhed – især efter flere alvorlige angreb er sket gennem netop denne platform i løbet af det sidste år.
Når en pakke bliver brugt af tusindvis af projekter, kan selv en lille svaghed få store konsekvenser. Derfor er det vigtigt at tjekke tingene grundigt, før man trykker på "publish".
Hvorfor sikkerhed skal tænkes ind før udgivelse
npm er et af de mest udbredte værktøjer i JavaScript-verdenen. En pakke kan hurtigt ende i mange builds og produktionsmiljøer. Det gør den til et oplagt mål for angreb, hvor målet ikke bare er at stjæle data, men også at få adgang til CI/CD-systemer med høje privilegier.
Heldigvis kan de fleste risici undgås med de rigtige vaner og værktøjer.
De 12 største sikkerhedsrisici ved npm-pakker i dag
1. Kompromitterede konti og ondsindede udgivelser
Hvis en angriber får adgang til dit npm-konto, kan han udgive en ny version af din pakke med skadelig kode. Det sker ofte uden at du opdager det – og brugerne installerer den automatisk.
Sådan beskytter du dig:
- Slå 2FA til på din npm-konto
- Brug tokens med begrænset adgang i stedet for hovedpasswordet
- Aktivér godkendelse før udgivelse for vigtige pakker
- Hold øje med udgivelsesloggen
2. Livscyklus-hooks: Kode der kører ved installation
npm tillader hooks som preinstall og postinstall. En angriber kan bruge disse til at køre kode allerede ved installation – før din egentlige pakke engang er indlæst.
Sådan undgår du problemet:
- Gennemgå alle hooks i din package.json
- Overvej om du virkelig behøver kode, der kører ved installation
- Hold hooks så korte og klar som muligt
- Brug eventuelt build-time-løsninger i stedet
3. Selvudbredende npm-worme
En pakke kan blive misbrugt til at ændre filer i andre pakker i node_modules. Det spreder sig som en orm og kan nå langt ind i et dependency tree.
Sådan beskytter yourself:
- Undgå at ændre filer udenfor din egen pakke
- Rør ikke ved andre pakker i
node_modules - Hold dine dependencies isolerede
- Kør npm audit og andre scanninger regelmæssigt
4. Angreb via CI/CD-identiteter
En pakke kan indgå i en build-pipeline og få adgang til tokens og secrets, der ligger der. Attributter der og network