fix(security): bump postcss + @expo/cli tar overrides to patched versions #105

Merged
maximus merged 1 commit from issue-102-104-deps-overrides into master 2026-08-11 13:26:31 +00:00
Owner

Fixes #102
Fixes #104

Changements

  • postcss override ^8.5.10 -> ^8.5.18 (resout 8.5.26) -- GHSA-r28c-9q8g-f849, path traversal source-map auto-loading (vulnerable <=8.5.17). Retire aussi l'inflation transitive expo/@expo/cli/@expo/metro-config.
  • @expo/cli > tar override ^7.5.19 -> ^7.5.21 (resout 7.5.22) -- GHSA-r292-9mhp-454m, recursion stack-overflow DoS (vulnerable <=7.5.20). Re-occurrence de #99.
  • nanoid 3.3.11 -> 3.3.18 tire par la re-resolution postcss (bonus).

Build/dev-time uniquement, non bundle dans l'APK livre. Diff limite a package.json + package-lock.json (12/12 lignes). Smoke test 11/11 vert, patch-package (react-native-android-widget@0.21.0) reapplique.

#103 brace-expansion -- fermee (accept-as-known)

L'override blanket ^5.0.8 casse le bundler : 5.x exporte exports.expand (__esModule), or minimatch@3 et @9 attendent l'export par defaut -> TypeError au bundling. La CVE OOM (GHSA-mh99) n'a pas de backport 1.x/2.x. Surface dev-only non joignable. Analyse complete dans #103.

Hors scope -- angle mort revele

La re-resolution du lock (package-lock.json etait perime de 8j vs package.json, flagge au warmup) expose 14 autres high preexistantes que npm audit sur le node_modules perime masquait : js-yaml (CVE-2026-59870), undici, image-size, et la chaine metro/react-native/@expo/metro. Versions identiques entre le lock master et l'installe -> pas une regression de cette PR. Non traitees ici (scope = #102/#104). Une passe /analyse-vulnerabilite separee sur l'etat frais du lock est recommandee.

Fixes #102 Fixes #104 ## Changements - `postcss` override `^8.5.10` -> `^8.5.18` (resout 8.5.26) -- GHSA-r28c-9q8g-f849, path traversal source-map auto-loading (vulnerable <=8.5.17). Retire aussi l'inflation transitive `expo`/`@expo/cli`/`@expo/metro-config`. - `@expo/cli > tar` override `^7.5.19` -> `^7.5.21` (resout 7.5.22) -- GHSA-r292-9mhp-454m, recursion stack-overflow DoS (vulnerable <=7.5.20). Re-occurrence de #99. - `nanoid` 3.3.11 -> 3.3.18 tire par la re-resolution postcss (bonus). Build/dev-time uniquement, non bundle dans l'APK livre. Diff limite a `package.json` + `package-lock.json` (12/12 lignes). Smoke test 11/11 vert, patch-package (`react-native-android-widget@0.21.0`) reapplique. ## #103 brace-expansion -- fermee (accept-as-known) L'override blanket `^5.0.8` casse le bundler : 5.x exporte `exports.expand` (`__esModule`), or minimatch@3 et @9 attendent l'export par defaut -> `TypeError` au bundling. La CVE OOM (GHSA-mh99) n'a pas de backport 1.x/2.x. Surface dev-only non joignable. Analyse complete dans #103. ## Hors scope -- angle mort revele La re-resolution du lock (`package-lock.json` etait perime de 8j vs `package.json`, flagge au warmup) expose **14 autres high preexistantes** que `npm audit` sur le `node_modules` perime masquait : `js-yaml` (CVE-2026-59870), `undici`, `image-size`, et la chaine `metro`/`react-native`/`@expo/metro`. Versions identiques entre le lock master et l'installe -> pas une regression de cette PR. Non traitees ici (scope = #102/#104). Une passe `/analyse-vulnerabilite` separee sur l'etat frais du lock est recommandee.
maximus added 1 commit 2026-08-10 12:29:32 +00:00
- postcss ^8.5.10 -> ^8.5.18 (resolves to 8.5.26): GHSA-r28c-9q8g-f849,
  path traversal in source-map auto-loading (vulnerable <=8.5.17)
- @expo/cli > tar ^7.5.19 -> ^7.5.21 (resolves to 7.5.22): GHSA-r292-9mhp-454m,
  uncontrolled recursion stack-overflow DoS (vulnerable <=7.5.20)
- nanoid 3.3.11 -> 3.3.18 pulled in by postcss re-resolution (bonus)

Both are build/dev-time only, not bundled in the shipped APK. npm audit no
longer lists postcss (nor its transitive inflation expo/@expo/cli/
@expo/metro-config) nor tar. Smoke test green (11/11), widget patch-package
reapplied, diff limited to package.json + package-lock.json.

Fixes #102
Fixes #104

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
maximus added the
status:review
label 2026-08-10 12:29:32 +00:00
Author
Owner

Review /pr-review — APPROVE

Verdict : APPROVE

Bump de securite propre et bien delimite. Les deux overrides atteignent leur cible, le lock est pleinement coherent (aucune copie vulnerable residuelle), scope build/dev-time uniquement.

Verifie

  • package.json : postcss ^8.5.10 -> ^8.5.18, @expo/cli > tar ^7.5.19 -> ^7.5.21. Coherent avec l'intention.
  • Lock coherent, overrides pleinement effectifs : exactement une copie de chaque — postcss@8.5.26, tar@7.5.22, nanoid@3.3.18. Aucun reliquat 8.5.12 / 7.5.19 / 3.3.11 ailleurs dans l'arbre. tar est hisse en top-level (node_modules/tar) mais @expo/cli en est l'unique consommateur — l'override scope couvre donc bien la seule copie.
  • Coherence interne : postcss@8.5.26 declare nanoid ^3.3.17, resolu en 3.3.18 -> satisfait.
  • Semver : deux bumps intra-mineur (postcss 8.5.x, tar 7.5.x) -> pas de breaking attendu. Correspond aux advisories : GHSA-r28c-9q8g-f849 (vuln <=8.5.17, fix 8.5.18+) et GHSA-r292-9mhp-454m (vuln <=7.5.20, fix 7.5.21+).
  • Scope : diff limite a package.json + package-lock.json (12/12). Pas de code source, migration, secret, ni .env.
  • #103 brace-expansion : correctement absent des overrides (l'override blanket ^5.0.8 casserait le bundler) — accept-as-known documente. Confirme dans package.json.
  • Non-regression : tests/smoke.test.cjs est un harnais dedie « npm overrides + deps integrity » — le garde-fou approprie pour ce type de bump.

Notes non bloquantes

  1. Le corps annonce « smoke 11/11 » ; le harnais compte 13 check() (+ feedback.test.mjs). Imprecision de comptage, sans impact.
  2. Pas de CI sur simpl-liste (aucun workflow .forgejo/.github) — le vert repose sur l'execution locale, conforme au process du repo, mais rien ne rejoue le smoke test cote serveur.
  3. Les 14 high preexistantes revelees par le rafraichissement du lock meritent l'issue de suivi /analyse-vulnerabilite deja recommandee dans le corps.

Rien ne bloque le merge.

## Review `/pr-review` — APPROVE **Verdict : APPROVE** Bump de securite propre et bien delimite. Les deux overrides atteignent leur cible, le lock est pleinement coherent (aucune copie vulnerable residuelle), scope build/dev-time uniquement. ### Verifie - **package.json** : `postcss ^8.5.10 -> ^8.5.18`, `@expo/cli > tar ^7.5.19 -> ^7.5.21`. Coherent avec l'intention. - **Lock coherent, overrides pleinement effectifs** : exactement une copie de chaque — `postcss@8.5.26`, `tar@7.5.22`, `nanoid@3.3.18`. Aucun reliquat 8.5.12 / 7.5.19 / 3.3.11 ailleurs dans l'arbre. `tar` est hisse en top-level (`node_modules/tar`) mais `@expo/cli` en est l'unique consommateur — l'override scope couvre donc bien la seule copie. - **Coherence interne** : `postcss@8.5.26` declare `nanoid ^3.3.17`, resolu en 3.3.18 -> satisfait. - **Semver** : deux bumps intra-mineur (postcss 8.5.x, tar 7.5.x) -> pas de breaking attendu. Correspond aux advisories : GHSA-r28c-9q8g-f849 (vuln <=8.5.17, fix 8.5.18+) et GHSA-r292-9mhp-454m (vuln <=7.5.20, fix 7.5.21+). - **Scope** : diff limite a `package.json` + `package-lock.json` (12/12). Pas de code source, migration, secret, ni `.env`. - **#103 brace-expansion** : correctement absent des overrides (l'override blanket `^5.0.8` casserait le bundler) — accept-as-known documente. Confirme dans `package.json`. - **Non-regression** : `tests/smoke.test.cjs` est un harnais dedie « npm overrides + deps integrity » — le garde-fou approprie pour ce type de bump. ### Notes non bloquantes 1. Le corps annonce « smoke 11/11 » ; le harnais compte 13 `check()` (+ `feedback.test.mjs`). Imprecision de comptage, sans impact. 2. Pas de CI sur simpl-liste (aucun workflow `.forgejo`/`.github`) — le vert repose sur l'execution locale, conforme au process du repo, mais rien ne rejoue le smoke test cote serveur. 3. Les 14 high preexistantes revelees par le rafraichissement du lock meritent l'issue de suivi `/analyse-vulnerabilite` deja recommandee dans le corps. Rien ne bloque le merge.
maximus merged commit 2da7c0d67d into master 2026-08-11 13:26:31 +00:00
maximus deleted branch issue-102-104-deps-overrides 2026-08-11 13:26:31 +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#105
No description provided.