Checklist Sécurité APM : 8 points à vérifier avant de publier

Checklist Sécurité APM : 8 points à vérifier avant de publier

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

La checklist sécurité pour les packages npm : ce que tout développeur doit vérifier avant publication

Publier un package open source sur npm, c’est exposer son code à des milliers d’utilisateurs. Dans cet espace, les attaques se multiplient. Le traditionnel « ça marche sur ma machine » ne suffit plus.

Voici les points essentiels à vérifier avant de rendre votre package public.

Pourquoi la sécurité doit primer avant la publication

Un package npm peut circuler dans des centaines de projets et s’exécuter dans des chaînes de build très sensibles. Cette portée en fait une cible de choix pour les attaquants. Heureusement, la plupart des risques peuvent être évités avec des méthodes simples et des outils adaptés.

Les 12 vecteurs d’attaque les plus courants sur npm

1. Prise de contrôle du compte et publication malveillante

Un attaquant qui obtient vos identifiants npm peut publier une version modifiée de votre package. Le code malveillant se propage alors automatiquement.

Comment s’en protéger :

  • Activez la 2FA sur votre compte npm
  • Utilisez des tokens d’accès limités plutôt que votre mot de passe principal
  • Mettez en place une approbation manuelle pour les publications sensibles
  • Surveillez régulièrement les logs de publication

2. Hooks de cycle de vie : le risque d’exécution au moment de l’installation

Les hooks comme preinstall et postinstall permettent d’exécuter du code dès l’installation. Un attaquant peut en profiter pour injecter du code malveillant avant même que votre package se lade.

Stratégie de défense :

  • Vérifiez tous les hooks présents dans votre package.json
  • Demandez-vous si vous vraiment besoin d’exécution de code à l’installation
  • Si nécessaire, gardez ces hooks simples et transparents
  • Privilégiez des alternatives exécutées au moment du build

3. Vers npm auto-réplicateurs

Un package peut modifier des paquets voisins dans node_modules et se spreader comme un ver.

Protection :

  • N’élevez jamais la date de modification sur des fichiers appartenant à d’autres packages
  • Ne touchez pas aux codes des autres paquets
  • Isolez vos dépendances
  • Utilisez npm audit et les outils de scan de dépendances chaque fois

4. Attaques sur l’identité dans les pipelines CI/CD

Les tokens de déploiement et les accès aux registres sont des valeurs que les attaquants cherchent à obtenir. Une fois dans le build, ils peuvent utiliser ces identifiants avec des privilèges élevés.

Défense en profondeur :

  • Utilisez des credentials sc

5. Smuggling de dépendances depuis Git

Les dépendances installées directement depuis un Git repo peuvent contourre la sécurité du registre npm. Un attaquant peut créer une version malveillante et trick un utilisateur à l’install depuis un Git service.

Contre-mesures :

  • Pin vos dépendances à version du registre npm
  • Vérifiez les commit hash si vous devez utiliser Git dépendances
  • Ne jamais utiliser latest ou des branch de repos non vertrauenswürdigen
  • Documentez la raison de chaque Git dépendance

6. Dépendances dynamiques remotes

Un package peut fetch et exécuter code à runtime. Ce surface d’attaque est invisible et dangereux.

Best practice :

  • Déclarez toutes les dépendances statique dans package.json
  • N’utilisez jamais fetch + exécute code dynamique
  • Utilisez static analysis pour détecter dynamic requires
  • Si besoin de runtime flexibilité, év vermieden code execution

7. Phishing infrastructure in plain sight

Un package peut abuseen die host en CDN de npm et host phishing pages. A package may look legit while silently redirecting to fake login pages.

Protection :

  • Be transparent about ce que package tut

8. Harvesting de secrets

Un package malveillant peut read .env files, extract API keys et harvest secrets pendant l’installation.

Hardening :

  • Ne pas commit secrets dans version control
  • Utilisez secret management systems
  • Least privilege pour credentials
  • Audit ce que votre package accesses umwelt data
  • Never log sensitive information

9. Exfiltration et channels versteckt

Stolen data benötigt a St

10. Persistence et anti-forensics

Advanced attacks et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et et

11. Obfuscation et packaging de payload

12. Package naming abuse

Préparation avant la publication : la checklist

Checklist sécurité :

  • [ ] 2FA activée sur le compte npm
  • [ ] Pas de secrets dans package.json ou au code
  • [ ] Hooks de cycle de vie minimales et justifiées
  • [ ] Aucun code dynamique chargé à l’installation
  • [ ] Aucun changement sur node_modules
  • [ ] Toutes dépendances pinées au registre npm
  • [ ] Aucun network call externe non erklärt
  • [ ] Code readable et sans obfuscation
  • [ ] Scan avec scanner comme socket.dev ou Snyk
  • [ ] Review par un développeur avec awareness de la sécurité
  • [ ] Log de la publish action préparé

Checklist process :

  • [ ] Changelog documentiert
  • [ ] Security policy définie
  • [ ] Maintainer contact information

12. Typosquatting et abus de nommage

Protection :

  • Registriert common misspelling de votre package name
  • Utilisez namespaced packages pour less collision risk
  • Documentez votre official package name
  • Monitor copycat packages
  • Report an

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

12. Typosquatting et abus de nommage

1. Prise de contrôle du compte et publication malveillante

Protection :

  • 2FA enabled on npm account
  • Granular access tokens
  • Publish approvals
  • M

1. Prise de contrôle du compte et puis

Read in other languages:

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