🔒 fix(deps): résorber les 5 vulnérabilités high et les surveiller en CI - #73
Merged
Conversation
npm audit remontait 5 failles high sur develop, toutes transitives, sans que rien n'échoue : le contrôle vivait dans scripts/verify.sh mais n'avait aucun job dans la CI. Les vulnérabilités pouvaient donc dériver indéfiniment tant que personne ne lançait le script en local. - npm audit fix (sans --force) : brace-expansion 5.0.7 → 5.0.9, nanoid 3.3.15 → 3.3.18, postcss 8.5.16 → 8.5.26, socket.io-parser 4.2.6 → 4.2.7, undici 7.28.0 → 7.29.0. Cinq bumps patch/mineurs sur des dépendances transitives ; package.json est inchangé, aucune dépendance directe ne bouge ; - job `audit` ajouté à develop.yml. npm audit sort en code non nul dès qu'il trouve quelque chose, donc aucune commande supplémentaire n'est nécessaire pour faire échouer le job ; - CLAUDE.md : verify.sh y était présenté comme le miroir de la CI, ce qui est faux au niveau ligne à ligne et m'a fait conclure à tort que develop était déjà rouge sur l'audit. Nuance ajoutée. ./scripts/verify.sh : typecheck, lint, coverage, e2e, build, audit et docs OK — audit inclus pour la première fois.
Le défaut de `--audit-level` est `null`, soit un échec sur n'importe quelle sévérité, `info` comprise. Le job tel qu'ajouté au commit précédent était donc plus strict que ce qui l'a motivé : les 5 failles corrigées étaient toutes `high`, mais un simple avis `low` sur une transitive de build aurait bloqué la CI. Le coût n'est pas théorique : `npm audit` interroge la base d'avis du registre à l'instant du run, alors que le lockfile est gelé. Un avis publié entre deux commits rend rouge la PR suivante, quels que soient son auteur et son sujet — le job n'accuse pas le coupable, il accuse le prochain qui passe. Autant réserver cette interruption aux failles qui la justifient. - job CI et scripts/verify.sh alignés sur `--audit-level=high` : un écart entre les deux ferait échouer localement ce qui passe en CI, alors que le script sert de garde avant PR ; - CLAUDE.md mis en cohérence : le seuil est explicite, et `npm audit` sans option reste la commande pour la photo complète. Les alertes Dependabot du dépôt, déjà actives, couvrent la veille de fond sur les sévérités inférieures.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résorbe les 5 vulnérabilités high qui traînaient sur
develop, et ferme le trou qui leur permettait de passer inaperçues.Le trou
npm auditfigurait dansscripts/verify.shmais n'avait aucun job dans la CI. Les vulnérabilités remontaient donc en local — et uniquement pour qui lançait le script — sans jamais rendre la CI rouge. Elles pouvaient dériver indéfiniment.Les 5 failles
Toutes transitives, aucune dépendance directe concernée :
brace-expansionnanoidpostcsssourceMappingURL→ divulgation de.maparbitrairessocket.io-parserundiciCache-Control, injection d'attributs de cookiesocket.io-parseretundicisont les deux qui touchent le chemin d'exécution réel du serveur — le reste relève de la chaîne de build.Correctif
npm audit fixsans--force: 5 bumps patch/mineurs,package.jsoninchangĂ© ;auditajoutĂ© Ădevelop.yml, au seuilhigh;scripts/verify.shalignĂ© sur le mĂŞme seuil ;CLAUDE.mdmis Ă jour.Pourquoi le seuil
highet pas le défautLe défaut de
--audit-levelestnull: Ă©chec sur n'importe quelle sĂ©vĂ©ritĂ©, jusqu'Ăinfo. C'est plus strict que ce qui motive cette PR — les 5 failles corrigĂ©es sont touteshigh.Le coĂ»t de la stricte n'est pas thĂ©orique.
npm auditinterroge la base d'avis du registre à l'instant du run, alors que le lockfile est gelé. Un avis publié entre deux commits rend donc rouge la PR suivante, quels que soient son auteur et son sujet : le job n'accuse pas le coupable, il accuse le prochain qui passe. Au seuil par défaut, un simplelowsur une transitive de build suffirait à bloquer quelqu'un sur un problème qui n'est pas le sien — sans issue propre si le correctif n'existe pas ou impose un--forcecassant.Le seuil
highréserve l'interruption aux failles qui la justifient. Leslow/moderaterestent consultables avecnpm auditsans option, et les alertes Dependabot du dépôt (actives) couvrent la veille de fond.Le job CI et
verify.shpartagent volontairement le même seuil : un écart ferait échouer localement ce qui passe en CI, alors que le script sert précisément de garde avant PR.Validation
./scripts/verify.sh: typecheck, lint, coverage, e2e, build, audit et docs — 7/7 OK. Premier passage complet avec l'audit au vert.