[security] deps: vulnerability in js-yaml (moderate) #98

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-h67p-54hq-rp68 (DoS quadratique via alias repetes dans une merge key, CWE-407, CVSS 5.3 moderate), deux ranges vulnerables : <3.15.0 et >=4.0.0 <=4.1.1.

Deux chaines transitives independantes, aucune autre cachee (npm ls js-yaml --all) :

  • expo > @expo/cli > @expo/xcpretty@4.4.4 > js-yaml@4.1.1 (formatage sortie xcodebuild, build iOS uniquement)
  • react-native > babel-jest > babel-plugin-istanbul > @istanbuljs/load-nyc-config@1.1.0 > js-yaml@3.14.2 (coverage Jest, jamais active dans ce projet — pas de config nyc/istanbul, pas de --coverage)

Fix minimal : 3.15.0 pour la branche 3.x, 4.2.0 pour la branche 4.x (4.1.1 encore vulnerable).

Travail a faire

  • Ajouter deux scopes distincts dans package.json -> overrides (deux majors incompatibles, ne peuvent pas partager une seule contrainte) :
    "@expo/xcpretty": { "js-yaml": "^4.2.0" },
    "@istanbuljs/load-nyc-config": { "js-yaml": "^3.15.0" }
    
  • npm install
  • Verifier npm ls js-yaml --all (4.2.x sous xcpretty, 3.15.x+ sous istanbul), npm audit -> 0 finding

Fichiers concernes

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

Surface de test

Aucun Jest configure dans ce projet (scripts.test = script node pur, pas de jest.config). babel-plugin-istanbul jamais invoque. @expo/xcpretty sert uniquement en build iOS local/EAS (pas de pipeline iOS actif documente). Risque quasi nul des deux cotes. Verification : npm test (smoke root) reste vert.

Options

Un seul override top-level serait impossible ici (les deux chaines exigent des majors js-yaml incompatibles) — deux scopes distincts obligatoires.

Criteres d'acceptation

  • npm audit ne liste plus js-yaml
  • npm ls js-yaml --all : xcpretty >= 4.2.x, istanbul >= 3.15.x
  • npm test reste vert
  • Autres overrides existants inchanges

Complexite estimee

Triviale — un seul fichier modifie a la main, aucun code applicatif touche.

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-h67p-54hq-rp68 (DoS quadratique via alias repetes dans une merge key, CWE-407, CVSS 5.3 moderate), deux ranges vulnerables : `<3.15.0` et `>=4.0.0 <=4.1.1`. Deux chaines transitives independantes, aucune autre cachee (`npm ls js-yaml --all`) : - `expo > @expo/cli > @expo/xcpretty@4.4.4 > js-yaml@4.1.1` (formatage sortie xcodebuild, build iOS uniquement) - `react-native > babel-jest > babel-plugin-istanbul > @istanbuljs/load-nyc-config@1.1.0 > js-yaml@3.14.2` (coverage Jest, jamais active dans ce projet — pas de config nyc/istanbul, pas de `--coverage`) Fix minimal : `3.15.0` pour la branche 3.x, `4.2.0` pour la branche 4.x (4.1.1 encore vulnerable). ## Travail a faire - [ ] Ajouter deux scopes distincts dans `package.json` -> `overrides` (deux majors incompatibles, ne peuvent pas partager une seule contrainte) : ```json "@expo/xcpretty": { "js-yaml": "^4.2.0" }, "@istanbuljs/load-nyc-config": { "js-yaml": "^3.15.0" } ``` - [ ] `npm install` - [ ] Verifier `npm ls js-yaml --all` (4.2.x sous xcpretty, 3.15.x+ sous istanbul), `npm audit` -> 0 finding ## Fichiers concernes - `package.json` (section `overrides`) - `package-lock.json` (regenere) ## Surface de test Aucun Jest configure dans ce projet (`scripts.test` = script node pur, pas de jest.config). `babel-plugin-istanbul` jamais invoque. `@expo/xcpretty` sert uniquement en build iOS local/EAS (pas de pipeline iOS actif documente). Risque quasi nul des deux cotes. Verification : `npm test` (smoke root) reste vert. ## Options Un seul override top-level serait impossible ici (les deux chaines exigent des majors js-yaml incompatibles) — deux scopes distincts obligatoires. ## Criteres d'acceptation - [ ] `npm audit` ne liste plus js-yaml - [ ] `npm ls js-yaml --all` : xcpretty >= 4.2.x, istanbul >= 3.15.x - [ ] `npm test` reste vert - [ ] Autres overrides existants inchanges ## Complexite estimee Triviale — un seul fichier modifie a la main, aucun code applicatif touche. ## 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:46 +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#98
No description provided.