
Comment éviter de se faire pirater en Vibe Coding (Claude Code, Codex, Cursor)
Audio Summary
AI Summary
L'utilisation de `npm install`, courante avec les outils d'IA comme Code, Codex ou Cursor, présente un risque de sécurité majeur. Chaque librairie installée peut dépendre de nombreuses autres, créant une chaîne de dépendances où un seul maillon compromis peut introduire du code malveillant (malware, virus) sur votre machine. Ce n'est pas théorique : en août 2026, plusieurs packages populaires autour de KIV et Casaable ont été compromis, embarquant des malwares conçus pour voler des cryptomonnaies, des clés AWS ou des tokens GitHub. KIV, étant profondément imbriqué dans l'arbre des dépendances, notamment via ESLint, a rendu la diffusion du malware très large.
Pour atténuer ce risque, il est recommandé de passer de NPM à PNPM, un gestionnaire de packages compatible avec l'écosystème NPM mais offrant des protections avancées contre les attaques de la chaîne d'approvisionnement. PNPM suggère le contrôle des scripts d'installation, un délai avant d'accepter de nouvelles versions, le contrôle de confiance, le blocage des dépendances transitives inhabituelles et l'utilisation d'un fichier lock.
Pour installer PNPM, il est conseillé de choisir la dernière version stable plutôt que la plus récente. La commande `npm install -g pnpm@<version>` permet une installation globale, en veillant à choisir une version stable publiée récemment (quelques jours auparavant). La commande `pnpm --version` confirme l'installation.
La configuration de PNPM pour la sécurité se fait via un fichier `pnpm-workspace.yaml`. Voici les protections clés :
1. **Délai avant publication (`minimum release age`)** : Empêcher l'installation de versions publiées moins d'une semaine auparavant (configuré à 10080 minutes). `minimum release age strict: true` assure que l'installation échoue si ce délai n'est pas respecté. `minimum release age ignore missing time: false` refuse l'installation si la date de publication est inconnue.
2. **Politique de confiance (`trust policy`)** : `no downgrade` empêche l'installation de versions dont le niveau de confiance est inférieur à celui des versions précédentes.
3. **Blocage des dépendances transitives exotiques (`block exotic subdeps`)** : `true` empêche les dépendances profondes d'aller chercher du code depuis des dépôts Git ou des archives arbitraires, à moins que l'utilisateur n'ait explicitement demandé une dépendance Git.
4. **Contrôle des scripts d'installation (`strict dep builds`)** : `true` bloque l'installation si une dépendance possède un script non vérifié (pré-installation, installation, post-installation). Ceci est crucial car les malwares exploitent souvent ces scripts pour s'exécuter dès l'installation, sans même que le package soit importé dans le code. PNPM permet d'approuver explicitement ces scripts si nécessaire, mais il est recommandé de ne pas les autoriser par défaut.
Ensuite, une deuxième barrière de sécurité est l'utilisation de Socket Firewall Free (`sfw`). Installé globalement avec `npm install -g sfw`, cet outil s'utilise en préfixant les commandes PNPM (ex: `sfw pnpm add express`). Il intercepte les requêtes du gestionnaire de packages, bloque les paquets malveillants confirmés, alerte sur les paquets suspects et protège contre les dépendances transitives malveillantes. Bien qu'il ne détecte pas tous les malwares, il ajoute une couche de protection gratuite.
Le fichier `pnpm-lock.yaml` est essentiel. Il enregistre précisément l'arbre des dépendances résolu, y compris les dépendances transitives, et doit être commité sur Git. Il permet de réinstaller les dépendances de manière déterministe avec `pnpm install --frozen-lockfile`, qui refuse de modifier le fichier lock. Une comparaison des différences dans le fichier lock (`git diff pnpm-lock.yaml`) est également recommandée pour détecter des changements inattendus lors de l'ajout de packages. Le fichier lock contient des données d'intégrité pour vérifier la correspondance du contenu téléchargé.
Enfin, `pnpm audit` permet de vérifier les packages installés par rapport aux vulnérabilités connues. L'option `audit-level: high` dans `pnpm-workspace.yaml` se concentre sur les alertes critiques et de haut niveau. Il est important de noter qu'un audit n'est pas un antivirus ; il ne détectera pas les malwares nouvellement publiés et non encore identifiés. Cependant, le délai de 7 jours imposé par PNPM augmente la probabilité que ces malwares soient rapidement détectés par des outils comme Socket. La commande `pnpm why <package-name>` est utile pour identifier qui dépend d'un package suspecté. Pour une analyse plus approfondie, Socket propose une version payante avec un antivirus spécialisé dans les packages.
Pour les utilisateurs d'IA comme Cloud, il est crucial de configurer des hooks pour interdire l'utilisation de `npm install` et forcer l'utilisation de PNPM avec les paramètres de sécurité décrits. Cela protège contre les risques inhérents à l'écosystème des dépendances JavaScript.