Aller au contenu

Protection supply chain : min-release-age npm et exclude-newer uv

Resume

Deux lignes de configuration pour se proteger des attaques supply chain sur les gestionnaires de paquets : min-release-age=7 dans ~/.npmrc (npm) et exclude-newer = "7 days" dans ~/.config/uv/uv.toml (uv/Python). Le principe : ne jamais installer un package publie depuis moins de 7 jours. La majorite des packages malveillants sont detectes et retires dans les 24-72h apres publication. Le thread enchaine sur la fuite du code source de Claude Code via un source map dans le registry npm (34M vues), illustrant les risques concrets du packaging npm.

Analyse critique

Ce qui est solide :

  • Ratio effort/protection imbattable : 2 lignes de config, zero maintenance, zero faux positif en regime nominal.
  • Raisonnement fonde : les attaques typosquatting, dependency confusion et package hijack reposent sur l'installation rapide avant detection. Un delai de 7 jours casse ce vecteur.
  • Combine avec un lockfile qui pin les versions exactes + hashes, c'est la defense la plus solide pour le cout le plus bas.
  • Le bookmark/like ratio (4335/2795) confirme que c'est du contenu actionnable — les gens sauvent pour appliquer.

Ce qui manque ou est a nuancer :

  • Ne protege pas contre les packages malveillants non detectes au-dela de 7 jours (attaques ciblees, maintainer compromis type event-stream).
  • En contexte d'urgence (zero-day, patch critique), le delai de 7 jours peut bloquer la mise a jour. Il faut un mecanisme d'override.
  • Le lien avec la fuite Claude Code est un peu force : c'est un source map oublie, pas une supply chain attack. Mais ca illustre le manque de rigueur sur le packaging npm.

Pertinence ProbatioVault

Impact modere et directement actionnable :

  • Backend NestJS : ~/.npmrc avec min-release-age=7 sur les runners CI GitLab (OVH) + machines dev.
  • CI/CD : ajouter dans la config des runners pour que npm install en pipeline respecte aussi le delai.
  • IA-Server : si uv est utilise pour les dependances Python, meme logique.
  • Coherent avec l'Article IV du CONSTITUTIONAL (non-regression, protection du code) et les invariants de securite du workflow.

Cas concret : Karpathy + axios (31 mars 2026)

Karpathy (1.3M vues, 10.5K likes) signale une attaque supply chain sur npm axios (300M downloads/semaine). Il a trouve sur son systeme un package installe via googleworkspace/cli — version non compromise par chance.

Le point le plus important de son thread : "I can't feel like I'm playing russian roulette with each pip install or npm install (which LLMs also run liberally on my behalf)."

C'est le vecteur specifique aux agents IA : Claude Code, Codex et les agents step 6b executent npm install et pip install de maniere autonome. L'agent n'a pas le reflexe de verifier l'integrite du package, l'auteur, la date de publication. Chaque installation agentique est un vecteur d'attaque potentiel.

Actions supplementaires pour ProbatioVault : - Verifier que min-release-age=7 est bien applique sur le MacBook dev (ou les agents executent npm install) - Envisager un hook PreToolUse sur les commandes Bash(npm install*) pour logger/alerter sur les nouvelles dependances - Les agents step 6b ne devraient jamais ajouter de nouvelle dependance sans que ce soit explicitement dans le plan (etape 4) — a ajouter comme invariant