Fix MEDIUM: override uuid pour corriger buffer bounds check #75

Closed
opened 2026-04-24 01:45:57 +00:00 by maximus · 1 comment
Owner

Ajouter un override uuid: ^11.0.0 dans package.json pour corriger GHSA-w5hq-g745-h8pq dans les chaines xcode (iOS build) et @expo/ngrok (dev tunnel). Aucun import direct de uuid dans le code projet (utilise expo-crypto.randomUUID via src/lib/uuid.ts).

Depends on

  • #74 (override xmldom)

Fichiers concernes

  • package.json
  • package-lock.json

CVE adressee

Plan d'implementation

  1. Attendre merge de #74 sur master.
  2. git checkout -b fix/vuln-B-uuid-override master (depuis master a jour).
  3. Editer package.json : dans le bloc overrides, ajouter "uuid": "^11.0.0". Le bloc final doit contenir : { "esbuild": "^0.25.0", "@xmldom/xmldom": "^0.8.13", "uuid": "^11.0.0" }.
  4. npm install pour regenerer package-lock.json.
  5. npm ls uuid — doit afficher >=11.0.0 partout (aucune 3.4.0 ni 7.0.3).
  6. npx tsc --noEmit — doit passer.
  7. timeout 15 npm start (Ctrl-C apres ~8s) — Metro doit demarrer sans erreur.
  8. npm audit --json | jq '.vulnerabilities.uuid' — doit retourner null.
  9. Verifier absence d'import direct : grep -rnE "from ['\"]uuid['\"]|require\(['\"]uuid['\"]\)" src/ app/ components/ constants/ 2>/dev/null doit retourner vide (deja verifie le 2026-04-23, garde-fou contre futurs changements).
  10. Commit fix(security): override uuid to ^11.0.0 (GHSA-w5hq-g745-h8pq) avec package.json + package-lock.json.
  11. Push et ouvrir PR avec label status:review.

Criteres d'acceptation

  • package.json contient "uuid": "^11.0.0" dans overrides.
  • npm ls uuid n'affiche que des versions >=11.0.0 (aucune 3.x ni 7.x).
  • npx tsc --noEmit passe.
  • npm start demarre Metro sans erreur.
  • npm audit --json | jq '.vulnerabilities.uuid' retourne null.
  • Aucun import direct de uuid dans le code projet (grep verifie).
  • package-lock.json est commit.
  • PR linkee avec Closes #<this-issue>.

Decisions prises ce soir

  • ^11.0.0 et pas ^14.0.0 : uuid v14 est ESM-only, risque de casser xcode (CJS). v11 est non-vulnerable a GHSA-w5hq-g745-h8pq.
  • ^11.0.0 et pas ^9.0.0 : plus recent et aligne avec l'ecosysteme actuel, meme couverture du fix.
  • Separee de l'issue #74 pour tracabilite (1 issue = 1 root-cause CVE).

Review caveats

  • LOW : uuid@^11 est force sur TOUTE la chaine (y compris des deps non flagged par audit). expo-crypto n'utilise pas le package uuid npm directement, donc no-op runtime.

Spec source

spec-plan-vuln-simpl-liste.md

Ajouter un override `uuid: ^11.0.0` dans `package.json` pour corriger GHSA-w5hq-g745-h8pq dans les chaines `xcode` (iOS build) et `@expo/ngrok` (dev tunnel). Aucun import direct de `uuid` dans le code projet (utilise `expo-crypto.randomUUID` via `src/lib/uuid.ts`). ## Depends on - #74 (override xmldom) ## Fichiers concernes - `package.json` - `package-lock.json` ## CVE adressee - GHSA-w5hq-g745-h8pq (MEDIUM) — Missing buffer bounds check in uuid v3/v5/v6 when buf param provided — https://github.com/advisories/GHSA-w5hq-g745-h8pq ## Plan d'implementation 1. Attendre merge de #74 sur master. 2. `git checkout -b fix/vuln-B-uuid-override master` (depuis master a jour). 3. Editer `package.json` : dans le bloc `overrides`, ajouter `"uuid": "^11.0.0"`. Le bloc final doit contenir : `{ "esbuild": "^0.25.0", "@xmldom/xmldom": "^0.8.13", "uuid": "^11.0.0" }`. 4. `npm install` pour regenerer `package-lock.json`. 5. `npm ls uuid` — doit afficher >=11.0.0 partout (aucune 3.4.0 ni 7.0.3). 6. `npx tsc --noEmit` — doit passer. 7. `timeout 15 npm start` (Ctrl-C apres ~8s) — Metro doit demarrer sans erreur. 8. `npm audit --json | jq '.vulnerabilities.uuid'` — doit retourner `null`. 9. Verifier absence d'import direct : `grep -rnE "from ['\"]uuid['\"]|require\(['\"]uuid['\"]\)" src/ app/ components/ constants/ 2>/dev/null` doit retourner vide (deja verifie le 2026-04-23, garde-fou contre futurs changements). 10. Commit `fix(security): override uuid to ^11.0.0 (GHSA-w5hq-g745-h8pq)` avec `package.json` + `package-lock.json`. 11. Push et ouvrir PR avec label `status:review`. ## Criteres d'acceptation - [ ] `package.json` contient `"uuid": "^11.0.0"` dans `overrides`. - [ ] `npm ls uuid` n'affiche que des versions >=11.0.0 (aucune 3.x ni 7.x). - [ ] `npx tsc --noEmit` passe. - [ ] `npm start` demarre Metro sans erreur. - [ ] `npm audit --json | jq '.vulnerabilities.uuid'` retourne `null`. - [ ] Aucun import direct de `uuid` dans le code projet (grep verifie). - [ ] `package-lock.json` est commit. - [ ] PR linkee avec `Closes #<this-issue>`. ## Decisions prises ce soir - `^11.0.0` et pas `^14.0.0` : uuid v14 est ESM-only, risque de casser xcode (CJS). v11 est non-vulnerable a GHSA-w5hq-g745-h8pq. - `^11.0.0` et pas `^9.0.0` : plus recent et aligne avec l'ecosysteme actuel, meme couverture du fix. - Separee de l'issue #74 pour tracabilite (1 issue = 1 root-cause CVE). ## Review caveats - LOW : `uuid@^11` est force sur TOUTE la chaine (y compris des deps non flagged par audit). `expo-crypto` n'utilise pas le package `uuid` npm directement, donc no-op runtime. ## Spec source `spec-plan-vuln-simpl-liste.md`
maximus added the
source:defenseur
status:ready
type:security
labels 2026-04-24 01:46:03 +00:00
maximus added this to the overnight-2026-04-24-vuln-simpl-liste milestone 2026-04-24 01:46:04 +00:00
maximus added the
autopilot:pending-human
label 2026-04-24 11:28:59 +00:00
Author
Owner

Autopilot 2026-04-24 : traite par PR #78 (pending human review).

Nuance planning : le critere npm audit uuid === null ne sera pas atteint avec ^11.0.0 (advisory range <14.0.0). Non-exploitable en pratique (xcode/ngrok utilisent uniquement uuid.v4(), bug dans v3/v5/v6+buf). Voir PR #78 body pour details et recommandation pour issue #76.

Autopilot 2026-04-24 : traite par PR #78 (pending human review). Nuance planning : le critere `npm audit uuid === null` ne sera pas atteint avec ^11.0.0 (advisory range `<14.0.0`). Non-exploitable en pratique (xcode/ngrok utilisent uniquement uuid.v4(), bug dans v3/v5/v6+buf). Voir PR #78 body pour details et recommandation pour issue #76.
Sign in to join this conversation.
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#75
No description provided.