Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
safe-npm — Installer en toute sécurité des paquets NPM | Kitploit
Outils/GitHubGitHub/kevinslin/safe-npm
Utilitaires GénérauxAnalyse des VulnérabilitésScripting et AutomatisationDevSecOpsSécurité de la Chaîne Logistique
GitHubkevinslin/safe-npm

safe-npm

Installer en toute sécurité des paquets NPM

Voir le dépôt
19394il y a 9 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

safe-npm

Un installateur npm axé sur la sécurité qui protège vos projets contre les paquets récemment compromis.

Pourquoi cela existe-t-il ?

Les attaques sur la chaîne d'approvisionnement des paquets npm constituent une menace croissante. Les attaquants compromettent parfois des paquets légitimes en :

  • Volant les identifiants des mainteneurs
  • Publiant des mises à jour malveillantes de paquets populaires
  • Prenant le contrôle de paquets abandonnés

Ces attaques se produisent souvent soudainement — un paquet qui était sûr hier peut être compromis aujourd'hui. safe-npm vous protège en n'installant que les versions de paquets qui ont été disponibles publiquement pendant une durée minimale (90 jours par défaut). Cela donne à la communauté de sécurité le temps de découvrir et de signaler les versions malveillantes avant qu'elles n'atteignent votre projet.

Comment ça fonctionne

Lorsque vous exécutez safe-npm install, il :

  1. Lit vos dépendances depuis package.json ou les arguments de la ligne de commande
  2. Interroge le registre npm pour trouver toutes les versions disponibles
  3. Filtre les versions publiées plus récemment que votre seuil d'âge minimum
  4. Sélectionne la version la plus récente qui répond à la fois à vos exigences semver et à vos exigences d'âge
  5. Installe les versions sûres en utilisant npm

Par exemple, si vous spécifiez react@^18 et qu'un [email protected] malveillant a été publié hier, safe-npm installera à la place la version la plus récente qui a au moins 90 jours.

Télécharger l’outil

Installation

Installer depuis npm (recommandé)

root@kitploit:~
# Install globally
npm install -g @dendronhq/safe-npm

# Now you can use it anywhere
safe-npm install

Compiler à partir des sources

root@kitploit:~
# Clone and build
git clone <repository-url>
cd safe-npm
npm install
npm run build

# Link the binary globally
npm link

Utilisation de base

Installer les dépendances depuis package.json

root@kitploit:~
# Use the minimum age of 90 days (default)
safe-npm install

# Or specify your own minimum age
safe-npm install --min-age-days 120

Installer des paquets spécifiques

root@kitploit:~
# Install packages directly with version constraints
safe-npm install react@^18 lodash@^4.17.0

# These will be filtered to only use versions at least 90 days old
safe-npm install express --min-age-days 60

Exécution à blanc pour voir ce qui serait installé

root@kitploit:~
# Preview which versions would be installed without actually installing
safe-npm install --dry-run

Options de configuration

--min-age-days <n>

Valeur par défaut : 90

Le nombre minimum de jours pendant lesquels une version de paquet doit avoir été publiée avant de pouvoir être installée.

Exemple : --min-age-days 120 exige que les paquets aient au moins 4 mois.

Quand ajuster :

  • Augmentez pour une sécurité maximale (par exemple, 180 jours pour les systèmes de production critiques)
  • Diminuez si vous avez besoin de fonctionnalités plus récentes et acceptez un risque légèrement accru (par exemple, 30 jours)

--ignore <pkg1,pkg2>

Une liste séparée par des virgules de paquets qui contournent l'exigence d'âge. Ces paquets respecteront toujours les plages semver mais ignoreront l'âge minimum.

Exemple : --ignore typescript,@types/node

Quand utiliser :

  • Paquets à évolution rapide auxquels vous faites confiance (comme TypeScript ou les outils de build)
  • Paquets internes de votre organisation
  • Paquets pour lesquels vous avez besoin des dernières fonctionnalités de toute urgence

--strict

Se termine par une erreur si UNE QUELCONQUE dépendance ne peut pas être résolue en une version satisfaisant l'exigence d'âge.

Exemple : safe-npm install --strict

Quand utiliser :

  • Pipelines CI/CD où vous souhaitez que les builds échouent plutôt que d'ignorer les paquets problématiques
  • Déploiements de production où vous avez besoin de certitude

--dev / --prod-only

Contrôle les dépendances de package.json qui sont traitées.

Exemples :

  • safe-npm install --dev - N'installer que les devDependencies
  • safe-npm install --prod-only - N'installer que les dépendances de production

Quand utiliser :

  • Installation d'outils de développement avec des exigences plus strictes
  • Builds de production où vous souhaitez des politiques d'âge différentes pour les dépendances dev vs prod

--strategy <direct|overrides>

Valeur par défaut : direct

Comment safe-npm installe les versions résolues :

direct - Installe directement les versions résolues en utilisant npm install package@version

  • Simple et direct
  • Bon pour les installations uniques ou les scripts

overrides - Écrit les versions résolues dans le champ overrides de package.json, puis exécute npm install

  • Applique les versions dans tout votre arbre de dépendances (y compris les dépendances transitives)
  • Remarque : Cette fonctionnalité est actuellement désactivée car elle ne fonctionne pas encore correctement

--registry <url>

Valeur par défaut : https://registry.npmjs.org

Spécifiez un registre npm alternatif.

Exemple : --registry https://registry.company.com

Quand utiliser :

  • Registres npm privés
  • Miroirs ou caches

--dry-run

Affiche ce qui serait installé sans faire de modifications.

Exemple : safe-npm install --dry-run

Quand utiliser :

  • Tester votre configuration
  • Comprendre quelles versions sont disponibles
  • Avant d'apporter des modifications aux systèmes de production

Flux de travail courants

Sécuriser un nouveau projet

root@kitploit:~
# Create a new project
mkdir my-project && cd my-project
npm init -y

# Install dependencies safely
safe-npm install express@^4 lodash

# This creates package-lock.json with versions at least 90 days old

Auditer un projet existant

root@kitploit:~
# Check what versions would be installed with age requirements
safe-npm install --dry-run

# If you're happy, install them
safe-npm install

Intégration CI/CD

root@kitploit:~
# In your CI pipeline, fail the build if any package can't meet age requirements
safe-npm install --strict --min-age-days 120

# Or allow newer packages for dev dependencies only
safe-npm install --prod-only --strict

Mises à jour d'urgence

root@kitploit:~
# Need to urgently update a specific package? Add it to ignore list
safe-npm install --ignore package-with-critical-fix

Tests

Le projet inclut une suite de tests que vous pouvez exécuter :

root@kitploit:~
npm test

Pour les tests automatisés, vous pouvez simuler les réponses du registre en utilisant des fixtures :

root@kitploit:~
export SAFE_NPM_FIXTURES=/path/to/fixtures.json
safe-npm install

Le fichier de fixtures doit contenir du JSON qui reflète les réponses du registre npm pour chaque paquet.

Comment cela vous protège

Scénario réel :

  1. Un paquet populaire popular-lib est maintenu par un développeur de confiance
  2. Un attaquant compromet les identifiants npm du mainteneur
  3. L'attaquant publie [email protected] avec un logiciel malveillant
  4. Les projets utilisant ^5.0.0 installeraient immédiatement la version malveillante
  5. Avec safe-npm, vous continueriez à utiliser 4.9.0 (la version la plus récente datant de plus de 90 jours)
  6. Des chercheurs en sécurité découvrent la compromission et la signalent
  7. La version malveillante est dépubliée
  8. Vous n'avez jamais installé la version compromise

Limitations

  • Ne protège pas contre les paquets qui étaient malveillants dès le départ
  • Retarde l'accès aux nouvelles fonctionnalités légitimes et aux correctifs de bogues
  • Nécessite la confiance que les versions plus anciennes n'ont pas de vulnérabilités non découvertes
  • Le filtrage basé sur l'âge est une heuristique, pas une garantie

Philosophie

La sécurité repose sur des compromis. safe-npm échange les mises à jour de pointe contre une protection contre les compromissions soudaines de la chaîne d'approvisionnement. C'est une couche dans une stratégie de défense en profondeur qui devrait également inclure :

  • Des audits de sécurité réguliers (npm audit)
  • Une revue des dépendances avant d'ajouter de nouveaux paquets
  • Une surveillance des avis de sécurité
  • L'utilisation de fichiers de verrouillage pour garantir des builds reproductibles
  • L'exécution dans des environnements sandboxés ou conteneurisés

Prérequis

  • Node.js 18 ou supérieur
  • npm (pour l'installation sous-jacente)

Licence

ISC