fix(security): override uuid to ^11.0.0 (#75) #78

Merged
maximus merged 1 commit from fix/vuln-B-uuid-override into master 2026-04-24 18:14:25 +00:00
Owner

Closes #75

Generated autonomously by /autopilot run of 2026-04-24

Summary

Ajoute 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).

Base : cette branche est construite sur fix/vuln-A-xmldom-override (PR #77), pas sur master. Merge séquentiel requis : merger #77 en premier, puis rebase/merger celle-ci.

Verification

  • package.json contient "uuid": "^11.0.0" dans overrides
  • npm ls uuid11.1.0 overridden dans toutes les chaines
  • npx tsc --noEmit passe sans erreur
  • Metro bundler demarre sans crash (timeout 15s ok)
  • grep -rE "require\('uuid'\)|from 'uuid'" src/ app/ → aucun import direct (projet utilise expo-crypto.randomUUID)
  • package-lock.json regenere et commit

Nuance — critere npm audit uuid === null

Le spec-plan D3 affirme "Non-vulnerable a GHSA-w5hq-g745-h8pq" pour uuid@11. Dans les faits :

  • Le GHSA range est <14.0.0, donc npm audit continue de flagger v11 comme "moderate"
  • Le bug concerne v3/v5/v6 avec buf parametre
  • xcode et @expo/ngrok n'utilisent que uuid.v4() (grep node_modules confirme) → code paths vulnerables non atteints → override safe en pratique
  • D3 interdit explicitement ^14.0.0 (ESM-only casse CJS xcode/ngrok)

Consequence sur #76 : la verification defenseur va garder 1 finding MEDIUM residuel (uuid). Le critere "0 HIGH + 0 MEDIUM" ne sera pas atteint au sens strict. A trancher par Max : ajuster le critere pour accepter ce residuel, ou tenter ^14 et verifier si la chaine build supporte.

Decisions (autopilot)

  • [MEDIUM] Honor D3 fermement (^11.0.0, pas ^14.0.0). Alternative rejetee : bump v14 (ESM-only risk per D3).
  • [HIGH] Pas de bump version/versionCode.
  • [HIGH] Skip interactive npm start, Metro timeout 15s valide le bundler.
Closes #75 Generated autonomously by /autopilot run of 2026-04-24 ## Summary Ajoute 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). > **Base** : cette branche est construite sur `fix/vuln-A-xmldom-override` (PR #77), pas sur `master`. Merge séquentiel requis : merger #77 en premier, puis rebase/merger celle-ci. ## Verification - [x] `package.json` contient `"uuid": "^11.0.0"` dans `overrides` - [x] `npm ls uuid` → `11.1.0 overridden` dans toutes les chaines - [x] `npx tsc --noEmit` passe sans erreur - [x] Metro bundler demarre sans crash (timeout 15s ok) - [x] `grep -rE "require\('uuid'\)|from 'uuid'" src/ app/` → aucun import direct (projet utilise `expo-crypto.randomUUID`) - [x] `package-lock.json` regenere et commit ## Nuance — critere `npm audit uuid` === null Le spec-plan D3 affirme "Non-vulnerable a GHSA-w5hq-g745-h8pq" pour uuid@11. Dans les faits : - Le GHSA range est `<14.0.0`, donc **npm audit continue de flagger v11** comme "moderate" - Le bug concerne v3/v5/v6 avec `buf` parametre - `xcode` et `@expo/ngrok` n'utilisent que `uuid.v4()` (grep node_modules confirme) → **code paths vulnerables non atteints** → override safe en pratique - D3 interdit explicitement `^14.0.0` (ESM-only casse CJS xcode/ngrok) **Consequence sur #76** : la verification defenseur va garder 1 finding MEDIUM residuel (uuid). Le critere "0 HIGH + 0 MEDIUM" ne sera pas atteint au sens strict. A trancher par Max : ajuster le critere pour accepter ce residuel, ou tenter ^14 et verifier si la chaine build supporte. ## Decisions (autopilot) - [MEDIUM] Honor D3 fermement (^11.0.0, pas ^14.0.0). Alternative rejetee : bump v14 (ESM-only risk per D3). - [HIGH] Pas de bump version/versionCode. - [HIGH] Skip interactive npm start, Metro timeout 15s valide le bundler.
maximus added 2 commits 2026-04-24 11:28:49 +00:00
Resolves 4 HIGH CVE in the xmldom transitive dep chain (Expo CLI + xcode/plist).
Not runtime-exploitable in APK (build-time deps only) but cleaned for audit hygiene.

- GHSA-2v35-w6hq-6mfw (DoS — uncontrolled recursion in XML serialization)
- GHSA-f6ww-3ggp-fr8h (XML injection via DOCTYPE serialization)
- GHSA-x6wf-f3px-wcqx (XML injection via processing instruction serialization)
- GHSA-j759-j44w-7fr8 (XML injection via comment serialization)

Refs #74

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Resolves GHSA-w5hq-g745-h8pq in the transitive chain (xcode + @expo/ngrok).
Per spec decision D3, we pin ^11.0.0 (not ^14.0.0) to avoid ESM-only breaking
CJS consumers. Actual vulnerable code paths (v3/v5/v6 with buf param) are not
used by xcode or @expo/ngrok — they only call uuid.v4() — so the override is
safe in practice even though npm advisory range is <14.0.0.

Refs #75

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
maximus added the
autopilot:pending-human
status:review
type:security
labels 2026-04-24 11:28:59 +00:00
maximus merged commit ced900b191 into master 2026-04-24 18:14:25 +00:00
Sign in to join this conversation.
No reviewers
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#78
No description provided.