[security] deps: vulnerability in postcss (high) #102

Closed
opened 2026-07-28 22:02:48 +00:00 by maximus · 1 comment
Owner

Détection

Détecté par le Défenseur defenseur-simpl-liste le 2026-07-27T05:15:10.727Z. Confirmé par npm audit live sur master.

Findings

  • [HIGH] defenseur-simpl-liste-deps-npm-audit-simpl-liste-postcss
    • CVE : GHSA-r28c-9q8g-f849PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
    • Range vulnérable : <=8.5.17
    • Version installée : 8.5.12
    • Chemin : expo > @expo/metro-config > postcss + tailwindcss > postcss-*

Note : les findings HIGH sur @expo/metro-config, @expo/cli et expo dans le même rapport sont l'inflation transitive de cette CVE (remontée via effects[]), pas des vulnérabilités distinctes.

Surface runtime : build/dev-time uniquement — ce package n'est pas bundlé dans l'APK livré. Sévérité effective = hardening (garder npm audit à 0), pas un incident runtime.

Résolution suggérée

Un override blanket postcss: ^8.5.10 existe déjà dans package.json mais le lock est figé à 8.5.12 (sous la version patchée). La première version same-major corrigée est 8.5.18 (dispo jusqu'à 8.5.23).

// package.json > overrides
"postcss": "^8.5.18"

Puis npm install (la modif de borne force la re-résolution). Bump en place, non-breaking (reste en 8.5.x). Vérifier npm audit à 0 après.

⚠️ npm audit propose fixAvailable: expo@57 (major)faux signal : il ne recalcule pas l'override existant. Le fix same-major (8.5.18) suffit, pas besoin de bumper Expo en majeur.


Issue créée par /analyse-vulnerabilite depuis le rapport du Défenseur defenseur-simpl-liste (2026-07-27T05:15:10.727Z), réconcilié avec npm audit live sur master. Le Défenseur ne porte pas encore l'état accepted (le rapport est régénéré à chaque scan, éditer le JSON est un no-op). Pour un faux positif : fermer l'issue avec un commentaire d'analyse. Pour une vraie cause racine côté scanner : ouvrir une issue dans agent-defenseurs.

## Détection Détecté par le Défenseur **defenseur-simpl-liste** le 2026-07-27T05:15:10.727Z. Confirmé par `npm audit` live sur `master`. ## Findings - **[HIGH]** `defenseur-simpl-liste-deps-npm-audit-simpl-liste-postcss` - CVE : [GHSA-r28c-9q8g-f849](https://github.com/advisories/GHSA-r28c-9q8g-f849) — *PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure* - Range vulnérable : `<=8.5.17` - Version installée : `8.5.12` - Chemin : `expo > @expo/metro-config > postcss` + `tailwindcss > postcss-*` > Note : les findings HIGH sur `@expo/metro-config`, `@expo/cli` et `expo` dans le même rapport sont l'**inflation transitive** de cette CVE (remontée via `effects[]`), pas des vulnérabilités distinctes. > **Surface runtime** : build/dev-time uniquement — ce package n'est pas bundlé dans l'APK livré. Sévérité effective = **hardening** (garder `npm audit` à 0), pas un incident runtime. ## Résolution suggérée Un override blanket `postcss: ^8.5.10` existe déjà dans `package.json` mais le lock est figé à `8.5.12` (sous la version patchée). La première version same-major corrigée est **8.5.18** (dispo jusqu'à 8.5.23). ```jsonc // package.json > overrides "postcss": "^8.5.18" ``` Puis `npm install` (la modif de borne force la re-résolution). Bump en place, non-breaking (reste en 8.5.x). Vérifier `npm audit` à 0 après. ⚠️ `npm audit` propose `fixAvailable: expo@57 (major)` — **faux signal** : il ne recalcule pas l'override existant. Le fix same-major (8.5.18) suffit, pas besoin de bumper Expo en majeur. --- _Issue créée par `/analyse-vulnerabilite` depuis le rapport du Défenseur **defenseur-simpl-liste** (2026-07-27T05:15:10.727Z), réconcilié avec `npm audit` live sur `master`. Le Défenseur ne porte pas encore l'état `accepted` (le rapport est régénéré à chaque scan, éditer le JSON est un no-op). Pour un **faux positif** : fermer l'issue avec un commentaire d'analyse. Pour une **vraie cause racine côté scanner** : ouvrir une issue dans `agent-defenseurs`._
maximus added the
type:security
source:defenseur
labels 2026-07-28 22:02:48 +00:00
Author
Owner

Analyse (/analyze)

Impact vérifié par exploration du codebase. Verdict : bump de borne, sans effet de bord.

  • Fichiers : package.json (bloc overrides) + package-lock.json. Aucun code applicatif (src/, app/, metro.config.js, tailwind.config.js, babel.config.js) n'importe postcss — dep purement transitive.
  • Usage build : postcss compile src/global.css (les 3 directives @tailwind, CSS écrit par le dev) via Tailwind/Metro. La CVE (path traversal source-map) exige un CSS attaquant-contrôlé portant un sourceMappingURL hors projet → non atteignable. Aucune config source-map CSS à la racine (le seul postcss.config.mjs est dans le sous-projet web/, arbre d'install séparé, hors périmètre).
  • Nature du bump : 8.5.12 → 8.5.18, patch same-major. L'API consommée (postcss().process()) est stable sur toute la série 8.5.x.
  • Surface de test : tests/smoke.test.cjs (harness anti-régression des overrides — valide package.json, graphe d'import de widgetState.ts, câblage patch-package après re-résolution du lock). Pas de jest ni de test bundler ; suffisant pour un same-major.

Critères d'acceptation

  • npm audit ne liste plus postcss ni ses transitifs (expo, @expo/cli, @expo/metro-config)
  • npm test (smoke) vert
  • react-native-android-widget reste en 0.21.0 (patch réappliqué)

Complexité : Simple. Fixé groupé avec #104 (même conflict-component package.json/package-lock.json).

## Analyse (/analyze) Impact vérifié par exploration du codebase. **Verdict : bump de borne, sans effet de bord.** - **Fichiers** : `package.json` (bloc `overrides`) + `package-lock.json`. Aucun code applicatif (`src/`, `app/`, `metro.config.js`, `tailwind.config.js`, `babel.config.js`) n'importe `postcss` — dep purement transitive. - **Usage build** : postcss compile `src/global.css` (les 3 directives `@tailwind`, CSS écrit par le dev) via Tailwind/Metro. La CVE (path traversal source-map) exige un CSS attaquant-contrôlé portant un `sourceMappingURL` hors projet → **non atteignable**. Aucune config source-map CSS à la racine (le seul `postcss.config.mjs` est dans le sous-projet `web/`, arbre d'install séparé, hors périmètre). - **Nature du bump** : 8.5.12 → 8.5.18, patch same-major. L'API consommée (`postcss().process()`) est stable sur toute la série 8.5.x. - **Surface de test** : `tests/smoke.test.cjs` (harness anti-régression des overrides — valide `package.json`, graphe d'import de `widgetState.ts`, câblage patch-package après re-résolution du lock). Pas de jest ni de test bundler ; suffisant pour un same-major. **Critères d'acceptation** - [ ] `npm audit` ne liste plus `postcss` ni ses transitifs (`expo`, `@expo/cli`, `@expo/metro-config`) - [ ] `npm test` (smoke) vert - [ ] `react-native-android-widget` reste en 0.21.0 (patch réappliqué) **Complexité** : Simple. Fixé groupé avec #104 (même conflict-component `package.json`/`package-lock.json`).
maximus added the
status:ready
label 2026-08-10 12:22:25 +00:00
maximus added
status:approved
and removed
status:ready
labels 2026-08-11 13:25:40 +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#102
No description provided.