APM Security Audit Checklist: Wat Elke Developer Moet Checken Voor Publicatie

APM Security Audit Checklist: Wat Elke Developer Moet Checken Voor Publicatie

Mei 20, 2026 npm security package management supply chain security developer best practices ci/cd security code review malware prevention open source security

De APM Security Checklist die elke ontwikkelaar nodig heeft vóór publicatie

Als je open-source pakketten bouwt of code distribueert via npm, werk je in een omgeving waar de afgelopen jaren opvallend slimme én gevaarlijke aanvallen zijn uitgevoerd. De aanvalsvectoren rond pakketrepositories zijn sterk geëvolueerd. “Het werkt op mijn machine” is tegenwoordig geen acceptabele controle meer.

Laten we kijken naar de belangrijkste beveiligingsaspecten die een verantwoordelijke maintainer onderscheiden van iemand die pas achteraf lessen leert.

Waarom een security review vóór publicatie essentieel is

Het npm-ecosysteem is zowel een van de grootste krachten als een van de kwetsbaarste schakels in JavaScript. Eén pakket kan terechtkomen in duizenden applicaties en build-pipelines. Dat bereik maakt pakketten aantrekkelijk voor aanvallers — niet alleen om credentials te stelen, maar ook om zich te nestelen in CI/CD-omgevingen waar ze met hoge rechten kunnen uitvoeren.

Het goede nieuws? De meeste aanvallen zijn te voorkomen met discipline en de juiste tools.

De 12 grootste aanvalsvectoren in npm-pakketten

1. Accountovername en een kwaadaardige publish

Stel: je npm-account wordt overgenomen. Een aanvaller publiceert een versie met een backdoor. Iedereen die het pakket installeert, krijgt de schadelijke code automatisch binnen.

Hoe je dit voorkomt:

  • Schakel 2FA in op je npm-account
  • Gebruik gerichte access tokens in plaats van je hoofdwachtwoord
  • Zet publish approvals aan voor gevoelige pakketten
  • Monitor publicatielogs voortdurend

2. Lifecycle hooks: installatie als code-executie

npm ondersteunt hooks zoals preinstall en postinstall. Een aanvaller die een pakket beheerst kan zo code draaien vóór de eigenlijke installatie begint.

Hoe je dit beperkt:

  • Controleer alle lifecycle hooks in je package.json
  • Vraag je af of je die code-executie écht nodig hebt
  • Houd hooks zo klein en transparant mogelijk
  • Gebruik liever alternatieven op build-tijd

3. Zelfreplicerende npm-wormen

Sommige aanvallen laten een pakket andere pakketten in node_modules beïnvloeden. Zo verspreidt de malware zich door de dependency tree.

Hoe je je beschermt:

  • Wijzig nooit bestanden tijdens installatie
  • Raak geen andere pakketten aan
  • Houd afhankelijkheden geïsoleerd
  • Gebruik npm audit en dependency scanning regelmatig

4. Aanvallen via de CI/CD identity layer

Een pakket dat in je build-pipeline terechtkomt, krijgt toegang tot deployment tokens, registry access en GitHub tokens.

Verdediging in de diepte:

  • Gebruik zo beperkt mogelijke credentials voor elke stap
  • Roteer tokens regelmatig
  • Hardcode nooit credentials in package.json scripts
  • Overweeg OpenID Connect voor authenticatie
  • Beperk wie toegang heeft tot publish secrets

5. Git-gebaseerde dependency smuggling

Wanneer je afhankelijkheden rechtstreeks uit Git-repositories installeert, omzeil je de controles van de npm registry. Een aanvaller kan een kwaadaardige fork aanbieden.

Wat je kunt doen:

  • Pin dependencies aan registry-versies in plaats van Git-repos
  • Verifieer commit hashes als je Git-dependencies gebruikt
  • Vermijd latest of branch-references van onbetrouwbare repos
  • Leg uit waarom een Git-dependency nodig is

6. Dynamische dependencies op afstand

Sommige pakketten halen code dynamisch op en voeren die tijdens run-time uit. Zo wordt het pakket een loader voor mogelijk kwaadaardige payloads.

Best practices:

  • Declareer alle dependencies statisch in package.json
  • Haal nooit code dynamisch op en executeer die
  • Gebruik static analysis om dynamic requires te detecteren
  • Ontwerp runtime-flexibiliteit zonder code-executie

7. Phishing-infrastructuur in het zicht

Een pakket kan legitiem lijken,同时 terwijl het op een webpagina redirect naar een phishingsite. Zo misbruikt de<|eos|>

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB HU IT FR ES DE DA ZH-HANS EN