APM-sjekklisten som stopper sikkerhetshull før lansering
Sikkerhetsgjennomgang før du publiserer npm-pakker
Når du legger ut åpne kildekodepakker på npm, spiller du i samme liga som både de mest kreative og farligste angrepene vi har sett det siste året. Angrepsoverflaten mot pakke-repositorier har endret seg kraftig, og det holder ikke lenger med en "det funker på min maskin"-bekreftelse.
Her er de viktigste sikkerhetstiltakene som skiller seriøse vedlikeholdere fra de som må lære på den harde måten.
Hvorfor du bør gjøre en sikkerhetskontroll før publisering
npm-økosystemet er både JavaScripts største styrke og en av de mest utsatte angrepsoverflatene. Én enkelt pakke kan ende opp i tusenvis av applikasjoner og byggesystemer. Denne rekkevidden gjør pakkene attraktive mål – ikke bare for å stjele legitimasjon, men også for å få fotfeste i CI/CD-miljøer der koden kjører med høyere rettigheter.
Det positive er at de fleste angrepene lar seg unngå med disiplin og riktige verktøy.
12 vanlige angrepsmetoder mot npm-pakker
1. Kontoovertakelse og ondsinnede publiseringer
Dette er marerittscenariet: Noen får tak i npm-kontoen din og publiserer en manipulert versjon av pakken din. Brukerne installerer den automatisk, og den ondsinnede koden kjører i produksjon.
Slik beskytter du deg:
- Slå på 2FA på npm-kontoen din
- Bruk begrensede tilgangstokens i stedet for hovedpassordet
- Innfør godkjenningsprosess før publisering av følsomme pakker
- Følg med på publiseringsloggene
2. Installasjonshooker som kjører kode
npm tillater preinstall og postinstall-hooker. En angriper som har kontroll over pakken, kan dermed kjøre kode allerede ved installasjon – før pakken din har lastet inn noen ting.
Slik hindrer du det:
- Gå gjennom alle installasjonshooker i package.json
- Vurder om du virkelig trenger kodekjøring ved installasjon
- Hvis du må bruke hooker, gjør de så enkle og transparente som mulig
- Se etter alternativer som kjører under bygging i stedet
3. Selv-reproduserende npm-ormer
En pakke som sprer seg til andre pakker i node_modules kan bli et orm-løp – koden muterer andre pakker og lagrer seg på tvers av avhengighetstrærne.
For å beskytte mot dette:
- Unngå å endre filsystemet under installasjon
- Rør ikke andre pakkers kode
- Hold avhengighetene isolert
- Bruk npm audit og avhengighetsskannere jevnlig
4. Angrep mot CI/CD-miljøet
Dine CI/CD-systemer har legitimasjon – deploy-tokens, registry-rettigheter og GitHub-tokens. Hvis en pakke kommer i byggesystemet, får angriperen tilgang til hele disse rettighetene.
Bedre beskyttelse:
- Bruk minimalt og begrenset legitimasjon per steg
- Roter tokens ofte
- Hardkod aldri kredentialer i scripts
- Vurder OpenID Connect for publisering
- Kontroller hvem har tilgang til publiseringshemmelighetene
5. Avhengigheter fra Git
Når du installerer avhengigheter direk