[security] deps: 2 advisories npm dans package-lock.json (postcss, react-router) #311

Closed
opened 2026-07-27 23:16:37 +00:00 by maximus · 0 comments
Owner

Relevé par /analyse-vulnerabilite le 2026-07-27 sur main (78e8be3). Pendant côté npm de #310, qui ne couvre que src-tauri/Cargo.lock.

npm audit remonte 3 findings = 2 CVEs distinctesreact-router et react-router-dom sont la même advisory, la seconde clé venant de effects[] (inflation transitive classique).

Ces advisories sont postérieures au dernier assainissement : STATE.md affirme « npm audit 5→0 » au 2026-07-04, ce qui est désormais périmé.

Les 2 advisories

Paquet Installé Advisory Sévérité Correctif
postcss 8.5.13 (via vite) GHSA-r28c-9q8g-f849 — path traversal dans l'auto-chargement de source map (sourceMappingURL), divulgation de fichiers .map arbitraires HIGH 7.5, CWE-22 ≥ 8.5.18
react-router 7.18.1 (via react-router-dom) GHSA-qwww-vcr4-c8h2 — contournement CSRF en mode RSC, exécution d'action avant la réponse 400 HIGH, CWE-352 ≥ 8.3.0 — pas de chemin en avant, voir plus bas

Triage

postcss — actionnable, zéro risque, aucun override nécessaire

vite@6.4.3 déclare postcss: ^8.5.3 et 8.5.23 est publié : la borne autorise déjà le correctif, seul le lock porte une résolution périmée (8.5.13). Un npm update postcss suffit — rien à ajouter au bloc overrides, contrairement au cas @babel/core de #241 où le parent pinnait la version.

Parent unique confirmé (npm ls postcssvite > postcss@8.5.13), donc aucun risque d'écraser une autre instance de l'arbre.

Surface réelle : postcss tourne au build (vite), sur du CSS écrit dans le repo. L'advisory suppose du CSS attaquant-contrôlé portant un commentaire sourceMappingURL. Aucune surface dans l'app livrée — c'est du hardening (garder npm audit à 0), pas un incident.

react-router — inatteignable, et aucun correctif en avant

Inatteignable. L'advisory vise le mode RSC (React Server Components) de react-router. App.tsx:109 monte un BrowserRouter client-only, et src/ ne contient aucune occurrence de createStaticHandler, StaticRouter ou de rendu serveur. Une app Tauri desktop n'a pas de serveur : le mode RSC n'existe pas dans ce produit.

Aucun correctif en avant. react-router-dom est figé à 7.18.1 (latest sur npm) : la v8 a fusionné le paquet dans react-router (8.3.0 = latest) et react-router-dom n'a jamais publié de 8.x. Le « fix » que propose npm auditreact-router-dom@7.11.0 — est un downgrade de sept versions mineures, que npm étiquette isSemVerMajor: true pour cette raison.

Sortir de la plage vulnérable >=7.12.0 <8.3.0 demande donc une migration vers react-router v8 (bascule des imports react-router-domreact-router), pas un bump. Hors de proportion pour une advisory sans surface ici.

À faire

  • npm update postcss (8.5.13 → 8.5.23) ; vérifier npm run build + npm test verts ; npm audit doit retomber de 3 findings à 2.
  • Statuer sur react-router : accepter en l'état est la recommandation — inatteignable, et le seul correctif est une migration v8. Revisiter au moment où une migration react-router v8 sera envisagée pour d'autres raisons. Aucune action code d'ici là.

Dedup

  • #180 (postcss, fermée) : advisory différente, moderate, avril 2026.
  • #235 / #238 (react-router / react-router-dom, fermées) : advisories différentes, closes par le bump 7.18.1 de #239.

Issue créée par /analyse-vulnerabilite. Le rapport Défenseur a été écarté comme source : le VPS était injoignable (SSH Tailscale en attente d'auth navigateur, aucun lien imprimé) et le rapport local date du 2026-05-06, soit 82 jours. Source retenue : npm audit exécuté sur main (78e8be3) le 2026-07-27.

Relevé par `/analyse-vulnerabilite` le 2026-07-27 sur `main` (`78e8be3`). Pendant côté npm de #310, qui ne couvre que `src-tauri/Cargo.lock`. `npm audit` remonte **3 findings = 2 CVEs distinctes** — `react-router` et `react-router-dom` sont la même advisory, la seconde clé venant de `effects[]` (inflation transitive classique). Ces advisories sont **postérieures au dernier assainissement** : `STATE.md` affirme « `npm audit` 5→0 » au 2026-07-04, ce qui est désormais périmé. ## Les 2 advisories | Paquet | Installé | Advisory | Sévérité | Correctif | |---|---|---|---|---| | `postcss` | 8.5.13 (via `vite`) | [GHSA-r28c-9q8g-f849](https://github.com/advisories/GHSA-r28c-9q8g-f849) — path traversal dans l'auto-chargement de source map (`sourceMappingURL`), divulgation de fichiers `.map` arbitraires | HIGH 7.5, CWE-22 | ≥ 8.5.18 | | `react-router` | 7.18.1 (via `react-router-dom`) | [GHSA-qwww-vcr4-c8h2](https://github.com/advisories/GHSA-qwww-vcr4-c8h2) — contournement CSRF en mode RSC, exécution d'action avant la réponse 400 | HIGH, CWE-352 | ≥ 8.3.0 — **pas de chemin en avant**, voir plus bas | ## Triage ### `postcss` — actionnable, zéro risque, aucun override nécessaire `vite@6.4.3` déclare `postcss: ^8.5.3` et **8.5.23 est publié** : la borne autorise déjà le correctif, seul le lock porte une résolution périmée (8.5.13). Un `npm update postcss` suffit — rien à ajouter au bloc `overrides`, contrairement au cas `@babel/core` de #241 où le parent pinnait la version. Parent unique confirmé (`npm ls postcss` → `vite > postcss@8.5.13`), donc aucun risque d'écraser une autre instance de l'arbre. **Surface réelle** : `postcss` tourne au build (vite), sur du CSS écrit dans le repo. L'advisory suppose du CSS attaquant-contrôlé portant un commentaire `sourceMappingURL`. Aucune surface dans l'app livrée — c'est du **hardening** (garder `npm audit` à 0), pas un incident. ### `react-router` — inatteignable, et aucun correctif en avant **Inatteignable.** L'advisory vise le **mode RSC** (React Server Components) de react-router. `App.tsx:109` monte un `BrowserRouter` client-only, et `src/` ne contient aucune occurrence de `createStaticHandler`, `StaticRouter` ou de rendu serveur. Une app Tauri desktop n'a pas de serveur : le mode RSC n'existe pas dans ce produit. **Aucun correctif en avant.** `react-router-dom` est **figé à 7.18.1** (`latest` sur npm) : la v8 a fusionné le paquet dans `react-router` (8.3.0 = `latest`) et `react-router-dom` n'a jamais publié de 8.x. Le « fix » que propose `npm audit` — `react-router-dom@7.11.0` — est un **downgrade** de sept versions mineures, que npm étiquette `isSemVerMajor: true` pour cette raison. Sortir de la plage vulnérable `>=7.12.0 <8.3.0` demande donc une **migration vers `react-router` v8** (bascule des imports `react-router-dom` → `react-router`), pas un bump. Hors de proportion pour une advisory sans surface ici. ## À faire - [ ] `npm update postcss` (8.5.13 → 8.5.23) ; vérifier `npm run build` + `npm test` verts ; `npm audit` doit retomber de 3 findings à 2. - [ ] Statuer sur `react-router` : accepter en l'état est la recommandation — inatteignable, et le seul correctif est une migration v8. Revisiter au moment où une migration `react-router` v8 sera envisagée pour d'autres raisons. Aucune action code d'ici là. ## Dedup - #180 (`postcss`, fermée) : advisory différente, moderate, avril 2026. - #235 / #238 (`react-router` / `react-router-dom`, fermées) : advisories différentes, closes par le bump 7.18.1 de #239. --- _Issue créée par `/analyse-vulnerabilite`. Le rapport Défenseur a été écarté comme source : le VPS était injoignable (SSH Tailscale en attente d'auth navigateur, aucun lien imprimé) et le rapport local date du 2026-05-06, soit 82 jours. Source retenue : `npm audit` exécuté sur `main` (`78e8be3`) le 2026-07-27._
maximus added the
status:ready
type:security
source:analyste
labels 2026-07-27 23:16:37 +00:00
maximus added
status:in-progress
and removed
status:ready
labels 2026-07-27 23:55:30 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-07-27 23:57:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#311
No description provided.