[security] deps: vulnerability in ws (high) #97

Closed
opened 2026-07-01 00:06:34 +00:00 by maximus · 0 comments
Owner

Contexte

Detecte par le Defenseur (npm audit) le 2026-06-30. GHSA-96hv-2xvq-fx4p (memory exhaustion DoS, high, CVSS 7.5), range 6.0.0-6.2.3 || 7.0.0-7.5.10. Distinct de GHSA-58qx-3vcg-4xpx deja fixee en #92/#94 (qui ne couvrait que @expo/cli > ws@8.20.0, override existant ^8.20.1 sain, a NE PAS toucher).

4 chaines transitives restantes non couvertes par l'override existant :

  • react-native@0.81.5 > ws@6.2.3 (dependance directe declaree par react-native, aucun require('ws') trouve dans le JS de RN — probable residu, usage exact non confirme)
  • @react-native/dev-middleware > ws@6.2.3 (sert le websocket bridge Chrome DevTools/inspector)
  • react-native > react-devtools-core > ws@7.5.10 (pont React DevTools/Fast Refresh, actif en __DEV__)
  • @expo/metro > metro > ws@7.5.10 (dev server Metro, HMR/Fast Refresh push)

Aucun bump amont de react-native ne corrige ce probleme (0.81.6 et le nightly 1000.0.0 restent dans la plage vulnerable ; issue similaire deja fermee sans fix cote Meta, facebook/react-native#45108). L'override local est la seule voie.

Travail a faire

  • Ajouter 4 scopes d'override dans package.json (sans toucher @expo/cli.ws existant) :
    "react-native": { "ws": "^7.5.11" },
    "@react-native/dev-middleware": { "ws": "^7.5.11" },
    "metro": { "ws": "^7.5.11" },
    "react-devtools-core": { "ws": "^7.5.11" }
    
  • npm install, verifier npm ls ws (4 chaines overridden sur 7.5.11+, @expo/cli > ws@8.21.0 inchange)
  • npm audit -> 0 finding ws

Fichiers concernes

  • package.json (bloc overrides)
  • package-lock.json (regenere)

Surface de test

Dev tooling uniquement, mais risque reel (contrairement aux 4 autres issues du meme lot) :

  1. npx expo start -> boot propre
  2. Fast Refresh sur un fichier source pendant que l'app tourne sur device/emulateur -> confirme que le changement s'applique sans reload complet
  3. Debugger JS (Chrome DevTools via Metro inspector-proxy, ou React DevTools standalone) -> connexion websocket stable
  4. Build EAS preview Android non-interactif -> confirme que Metro/dev-middleware tolerent le bump en mode build

Options

  • Option A (retenue) : overrides cibles a ^7.5.11 (version minimale corrigeant le CVE, bump patch pour metro/react-devtools-core deja en 7.5.10, bump majeur 6->7 pour react-native/dev-middleware mais minimal)
  • Option B (ecartee) : unifier tous les scopes sur ^8.20.1 (meme version que @expo/cli) — bump majeur supplementaire sans benefice, risque non justifie

Criteres d'acceptation

  • npm audit --json | jq '.vulnerabilities.ws' vide
  • npm ls ws : les 4 chaines resolues en >=7.5.11 (overridden), @expo/cli > ws@8.21.0 inchange
  • Fast Refresh fonctionne (test manuel)
  • Build EAS preview reussit

Complexite estimee

Medium — changement package.json trivial, mais multi-scope (4 parents) + verification manuelle obligatoire avant merge (seul cas du lot #95-#99 avec risque runtime dev-tooling reel).

Questions ouvertes

  • Usage exact de react-native > ws@6.2.3 (dependance directe sans require visible) : probable residu historique, a confirmer par l'absence de regression apres override.
  • Migration ulterieure possible vers ws 8.x uniforme une fois ce bump valide manuellement une premiere fois.

Plan global

Fait partie du lot #95-#99 (5 fixes deps du meme scan Defenseur). Voir issue #96 pour le detail du plan combine et le bloc overrides final complet.

## Contexte Detecte par le Defenseur (npm audit) le 2026-06-30. GHSA-96hv-2xvq-fx4p (memory exhaustion DoS, high, CVSS 7.5), range `6.0.0-6.2.3 || 7.0.0-7.5.10`. **Distinct** de GHSA-58qx-3vcg-4xpx deja fixee en #92/#94 (qui ne couvrait que `@expo/cli > ws@8.20.0`, override existant `^8.20.1` sain, a NE PAS toucher). 4 chaines transitives restantes non couvertes par l'override existant : - `react-native@0.81.5 > ws@6.2.3` (dependance directe declaree par react-native, aucun `require('ws')` trouve dans le JS de RN — probable residu, usage exact non confirme) - `@react-native/dev-middleware > ws@6.2.3` (sert le websocket bridge Chrome DevTools/inspector) - `react-native > react-devtools-core > ws@7.5.10` (pont React DevTools/Fast Refresh, actif en `__DEV__`) - `@expo/metro > metro > ws@7.5.10` (dev server Metro, HMR/Fast Refresh push) Aucun bump amont de react-native ne corrige ce probleme (0.81.6 et le nightly 1000.0.0 restent dans la plage vulnerable ; issue similaire deja fermee sans fix cote Meta, facebook/react-native#45108). L'override local est la seule voie. ## Travail a faire - [ ] Ajouter 4 scopes d'override dans `package.json` (sans toucher `@expo/cli.ws` existant) : ```json "react-native": { "ws": "^7.5.11" }, "@react-native/dev-middleware": { "ws": "^7.5.11" }, "metro": { "ws": "^7.5.11" }, "react-devtools-core": { "ws": "^7.5.11" } ``` - [ ] `npm install`, verifier `npm ls ws` (4 chaines overridden sur 7.5.11+, `@expo/cli > ws@8.21.0` inchange) - [ ] `npm audit` -> 0 finding ws ## Fichiers concernes - `package.json` (bloc `overrides`) - `package-lock.json` (regenere) ## Surface de test Dev tooling uniquement, mais **risque reel** (contrairement aux 4 autres issues du meme lot) : 1. `npx expo start` -> boot propre 2. Fast Refresh sur un fichier source pendant que l'app tourne sur device/emulateur -> confirme que le changement s'applique sans reload complet 3. Debugger JS (Chrome DevTools via Metro inspector-proxy, ou React DevTools standalone) -> connexion websocket stable 4. Build EAS preview Android non-interactif -> confirme que Metro/dev-middleware tolerent le bump en mode build ## Options - **Option A (retenue)** : overrides cibles a `^7.5.11` (version minimale corrigeant le CVE, bump patch pour metro/react-devtools-core deja en 7.5.10, bump majeur 6->7 pour react-native/dev-middleware mais minimal) - Option B (ecartee) : unifier tous les scopes sur `^8.20.1` (meme version que `@expo/cli`) — bump majeur supplementaire sans benefice, risque non justifie ## Criteres d'acceptation - [ ] `npm audit --json | jq '.vulnerabilities.ws'` vide - [ ] `npm ls ws` : les 4 chaines resolues en >=7.5.11 (overridden), `@expo/cli > ws@8.21.0` inchange - [ ] Fast Refresh fonctionne (test manuel) - [ ] Build EAS preview reussit ## Complexite estimee Medium — changement package.json trivial, mais multi-scope (4 parents) + verification manuelle obligatoire avant merge (seul cas du lot #95-#99 avec risque runtime dev-tooling reel). ## Questions ouvertes - Usage exact de `react-native > ws@6.2.3` (dependance directe sans require visible) : probable residu historique, a confirmer par l'absence de regression apres override. - Migration ulterieure possible vers ws 8.x uniforme une fois ce bump valide manuellement une premiere fois. ## Plan global Fait partie du lot #95-#99 (5 fixes deps du meme scan Defenseur). Voir issue #96 pour le detail du plan combine et le bloc `overrides` final complet.
maximus added the
type:security
source:defenseur
labels 2026-07-01 00:06:34 +00:00
maximus added the
status:ready
label 2026-07-01 00:17:45 +00:00
maximus added
status:approved
and removed
status:ready
labels 2026-07-01 00:32:45 +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-liste#97
No description provided.