[security] deps: browserslist OOM + prototype write (high) -- corrigeable, 4.28.7 #115

Closed
opened 2026-09-04 20:19:08 +00:00 by maximus · 0 comments
Owner

Detection

npm audit sur master apres le merge de #114. C'est la seule HIGH restante de l'arbre : le retrait d'image-size a fait tomber 8 des 9 HIGH, celle-ci est independante et preexistait.

Non detectee par le Defenseur : les deux advisories ont ete publiees le 2026-09-01, apres son dernier passage.

Findings

  • [HIGH] browserslist -- installe 4.28.1, range vulnerable <= 4.28.6
    • GHSA-c83g-rgw3-j3cx -- croissance memoire non bornee (pas d'eviction de cache) via des resultats de requetes distincts, menant a un OOM
    • GHSA-73wf-gq98-2v4g -- crash non rattrape / ecriture de prototype via un browserslist-stats.json de stats personnalisees non fiable (normalizeStats)

Statut : CORRIGEABLE -- contrairement a #108

first_patched_version = 4.28.7 sur les deux advisories (verifie sur api.github.com/advisories). Derniere publiee : 4.28.9 (2026-09-04).

C'est l'inverse exact de la situation d'#108, ou first_patched_version = None bloquait tout override faute de cible saine.

Demandeurs

Tous en range caret, donc compatibles avec 4.28.7+ sans changement de contrainte :

Paquet Range
@babel/helper-compilation-targets ^4.24.0
@expo/metro-config ^4.25.0
core-js-compat ^4.28.1
update-browserslist-db peer >= 4.21.0

Le lockfile etait simplement fige sur 4.28.1. Aucun blocage structurel.

Surface reelle

browserslist est de l'outillage de build : babel et metro s'en servent pour resoudre les cibles de compilation. Il ne part pas dans l'APK.

  • L'ecriture de prototype exige un browserslist-stats.json non fiable -- absent de ce projet, et il faudrait qu'un tiers puisse en deposer un.
  • L'OOM exige un volume de requetes distinctes qu'un build de cette taille n'atteint pas.

Comme pour #108 : hardening, pas incident. La difference est qu'ici le correctif existe et coute un override.

A faire

Override browserslist: ^4.28.7 dans package.json, aligne sur le pattern deja en place pour les planchers de securite (esbuild, @xmldom/xmldom, postcss, brace-expansion, @babel/core, metro).

## Detection `npm audit` sur `master` apres le merge de #114. C'est la **seule HIGH restante** de l'arbre : le retrait d'`image-size` a fait tomber 8 des 9 HIGH, celle-ci est independante et preexistait. Non detectee par le Defenseur : les deux advisories ont ete publiees le **2026-09-01**, apres son dernier passage. ## Findings - **[HIGH]** `browserslist` -- installe `4.28.1`, range vulnerable `<= 4.28.6` - [GHSA-c83g-rgw3-j3cx](https://github.com/advisories/GHSA-c83g-rgw3-j3cx) -- croissance memoire non bornee (pas d'eviction de cache) via des resultats de requetes distincts, menant a un OOM - [GHSA-73wf-gq98-2v4g](https://github.com/advisories/GHSA-73wf-gq98-2v4g) -- crash non rattrape / ecriture de prototype via un `browserslist-stats.json` de stats personnalisees non fiable (`normalizeStats`) ## Statut : CORRIGEABLE -- contrairement a #108 `first_patched_version = 4.28.7` sur les deux advisories (verifie sur `api.github.com/advisories`). Derniere publiee : `4.28.9` (2026-09-04). C'est l'inverse exact de la situation d'#108, ou `first_patched_version = None` bloquait tout override faute de cible saine. ### Demandeurs Tous en range caret, donc compatibles avec `4.28.7+` sans changement de contrainte : | Paquet | Range | |---|---| | `@babel/helper-compilation-targets` | `^4.24.0` | | `@expo/metro-config` | `^4.25.0` | | `core-js-compat` | `^4.28.1` | | `update-browserslist-db` | peer `>= 4.21.0` | Le lockfile etait simplement fige sur `4.28.1`. Aucun blocage structurel. ## Surface reelle `browserslist` est de l'outillage de **build** : babel et metro s'en servent pour resoudre les cibles de compilation. Il ne part pas dans l'APK. - L'ecriture de prototype exige un `browserslist-stats.json` non fiable -- absent de ce projet, et il faudrait qu'un tiers puisse en deposer un. - L'OOM exige un volume de requetes distinctes qu'un build de cette taille n'atteint pas. Comme pour #108 : **hardening, pas incident**. La difference est qu'ici le correctif existe et coute un override. ## A faire Override `browserslist: ^4.28.7` dans `package.json`, aligne sur le pattern deja en place pour les planchers de securite (`esbuild`, `@xmldom/xmldom`, `postcss`, `brace-expansion`, `@babel/core`, `metro`).
maximus added the
status:in-progress
type:security
source:human
labels 2026-09-04 20:19:08 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-09-04 20:26:16 +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#115
No description provided.