[security] deps: rafraîchir le lock npm — 7 advisories (react-router, vitest, browserslist, nanoid) (high) #358
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#358
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
/analyse-vulnerabilitedu 2026-09-26. Source retenue :npm auditlive aprèsnpm cisur le lock demain. Le rapport du Défenseurdefenseur-simpl-resultata été écarté parce qu'il date du 2026-05-06 : le fetch--freshrestait bloqué sur une auth SSH en attente. Côté Rust, rien à signaler :audit.ymlest vert chaque jour du 09-22 au 09-26 (runs 415 à 419).npm audit: 7 findings (4 high, 3 moderate), contre les 2 acceptés au 2026-07-27 (#311). Ils se ramènent à 4 dépendances racines, et chaque correctif tient dans la borne déjà déclarée. Il n'y a ni modification depackage.jsonni override à prévoir, seulement un rafraîchissement du lock.react-router/react-router-dom7.18.1 (direct)App.tsxmonte unBrowserRouterclient-onlyvitest/@vitest/mocker4.1.9 (direct, dev)browserslist4.28.4 (via@babel/helper-compilation-targets)baseline-browser-mapping2.10.41 (viabrowserslist)nanoid3.3.16 (viavite→postcss)size0Tout ceci relève du durcissement, pas de l'incident.
Absorbe #317
#317 acceptait l'advisory
react-routerparce que le seul correctif proposé par npm était un downgrade (7.11.0),react-router-domsemblant figé en 7.18.1. Cette prémisse ne tient plus :react-router-dom7.18.2 à 7.18.4 sont publiés. Le correctif est donc un bump de patch dans^7.18.1, sans migration v8. La PR ferme aussi #317.Vérifications faites en analyse (2026-09-26, sur une copie jetable du lock de
main)Cannot read properties of null (reading 'edgesOut')dans@npmcli/arboristbuild-ideal-tree.js#loadPeerSet, surnode_modules/vitest. Ça plante dans tous les modes :npm update,npm install vitest@4.1.11, avec ou sans--package-lock-only, avec ou sansnode_modules.react-router-domet les trois transitives passent seules sous npm 10 ; seulvitestbloque.npm audit= 0,package.jsoninchangé,lockfileVersion3 → 3, 259 → 259 paquets, 80 lignes changées sur 18 paquets. Ce sont les 7 visés, plus leurs compagnons de borne : les 6@vitest/*,tinyrainbow,caniuse-lite,electron-to-chromium,node-releasesetupdate-browserslist-db.npm cide npm 10 sans réécriture. La CI (check-frontend.yml,release.yml) installe Node 20 via nodesource, donc npm 10 : seule la génération du lock dépend de npm 11.browserslistne pilote pas la sortie du build selon toute vraisemblance : son seul consommateur est@babel/helper-compilation-targets, sous@vitejs/plugin-react, sanspreset-envet sans.browserslistrcni champbrowserslistdanspackage.json. La comparaison octet pour octet reste exigée pour le prouver.Décisions (Max, 2026-09-26)
npx --yes npm@11ponctuel pour générer le lock (rien d'installé globalement).package.json(^7.18.1et^4.1.9résolvent déjà vers les versions corrigées, etnpm cine redescend pas sous le lock).Travail à faire
mainà jour (pas depuis une branche de feature).npm ci && npm run build, puis copierdist/à l'écart.npx --yes npm@11.21.0 update react-router-dom react-router vitest @vitest/mocker browserslist baseline-browser-mapping nanoid source-map-js --package-lock-only --ignore-scriptsgit diff --statne touche quepackage-lock.json, que le compte est de 259 paquets de part et d'autre, et que les versions correspondent à la table ci-dessus.npm ci(npm 10) : le lock ne doit pas être réécrit. Puisnpm audit: 0.npm run build+npm test, puis comparerdist/avec la référence (diff -r). Un écart doit être expliqué avant le merge.react-routeracceptés en permanence » dansCLAUDE.md(section CI/CD, ligne ~165) etdocs/architecture.md(~487) par «npm audità 0 au (#358) », en gardant la précision qu'aucunnpm auditne tourne en CI. Retirer le renvoi à #317.### Security/### Sécuritésous[Unreleased], dans les deux langues, en précisant qu'aucune de ces advisories n'était atteignable dans l'app livrée.fix(deps): refresh npm lock to clear 7 advisoriesavecResolves #358etResolves #317.Fichiers concernés
package-lock.json: seul fichier de dépendances modifié.CLAUDE.md,docs/architecture.md: l'état « 2 high acceptés » devient faux.CHANGELOG.md,CHANGELOG.fr.md: entrée Security.STATE.md: le chapeau (« 2 restantes, acceptées ») sera corrigé par la synchro post-merge.Surface de test
npm run build(tsc + vite).diff -r dist/avant/après.Critères d'acceptation
npm audit= 0 sur la branche, aprèsnpm ciavec npm 10.package-lock.json;package.jsoninchangé.npm run buildetnpm testverts, en local et en CI (check-frontend).dist/identique à la référence, ou écart expliqué dans la PR.Complexité estimée
Simple.
Issue créée par /analyse-vulnerabilite, analysée par /analyze le 2026-09-26.
Dépendances
Depends on
Mise à jour du 2026-10-10
source-map-js1.2.1 → 1.2.2 (GHSA-68fv-2mgg-jv7q, high, déni de service par offsets de sections indexées ; build seulement, viavite→postcsset@tailwindcss/vite→@tailwindcss/node). Ajoutée à la commande.npm auditle 2026-10-10 : 8 findings (5 high, 3 moderate).npm audità 0 sur une copie,package.jsoninchangé.Fichiers concernés (complet)
package-lock.json(seul fichier de dépendances modifié)CLAUDE.md(section CI/CD),docs/architecture.md(~L487)CHANGELOG.md,CHANGELOG.fr.mdCritères d'acceptation (planification)
npm@11.21.0exactement ; version consignée dans la PR.resolveddepackage-lock.jsonpointe vershttps://registry.npmjs.org/et porte un champintegrity(vérification scriptée, résultat dans la PR).npm auditrelancé juste avant le commit : « found 0 vulnerabilities », sortie collée dans la PR. Si une nouvelle advisory est apparue entre-temps et se corrige dans la borne déclarée, l'ajouter à la commande ; sinon, la nommer dans la PR sans élargir le périmètre.diff -r dist/avant/après : identique, ou écart expliqué dans la PR.CLAUDE.mdetdocs/architecture.md: «npm audità 0 au (#358) », plus de « 2 high acceptés », renvoi à #317 retiré, précision « aucunnpm auditen CI » gardée.Resolves #358etResolves #317.Review caveats
resolved/integrityvérifiés.Décisions prises en planification
npm@11.21.0(Max, 2026-10-10).package.jsoninchangés (Max, 2026-09-26, inchangé).Spec source
spec-plan-release-deps.md(local, ignoré par git)