Catégories
CVE-2026-69152 high CVSS 7.5

Vulnérabilité dans brace-expansion (CVE-2026-69152)

Résumé

Vulnérabilité dans brace-expansion (CVE-2026-69152). Risque d'opérations non autorisées ou de divulgation. Exploitable via maxLength. Atténuation : mise à jour vers 5.0.9 ou plus.

Description d'origine

La description telle que publiée par la source (souvent en anglais).

Summary

The maxLength mitigation added in 5.0.8 for GHSA-mh99-v99m-4gvg / CVE-2026-14257 is incomplete. It bounds the accumulator where results are combined, but not the intermediate arrays that feed it. A ~25 KB input still crashes the Node process with an uncatchable out-of-memory error, so try/catch around expand() does not help.

A second, related path in the same function lets a ~400 KB input block the event loop for over two minutes without ever exceeding the memory bound.

Details

maxLength was enforced in combine(), the single place output grows. Two arrays are built before combine() runs, and neither was bounded.

1. Comma alternatives accumulate without a running total (memory exhaustion)

Each alternative in {a,b,c,...} is expanded by its own recursive expand_() call, so each receives a full, independent maxLength allowance. The results were then concatenated into a single values array with no cumulative limit:

values = []
for (let j = 0; j < n.length; j++) {
  values.push.apply(values, expand_(n[j], max, maxLength, false))
}

acc = combine(acc, pre, values, max, maxLength, ...)

With A alternatives, values can reach A * maxLength characters before combine() gets a chance to truncate it. At the default maxLength of 4,000,000 and 400 alternatives, that is well past any default heap.

2. Padded sequences ignore maxLength while generating (CPU exhaustion)

expandSequence() was bounded by max (t…

Source: GitHub Security Advisories (Global) NVD GitHub Advisory

Résumé généré automatiquement

Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.

Une vulnérabilité référencée CVE-2026-69152 a été découverte dans brace-expansion.
Des attaquants peuvent cibler un point d'entrée spécifique comme maxLength à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation. Score CVSS : 7.5/10.
Action : mettez à jour brace-expansion vers 5.0.9 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « brace-expansion CVE-2026-69152 » sur le site de l'éditeur.

CVE-2026-69152 (brace-expansion) — CWE-400 / CVSS v3 7.5
Vecteur d'attaque : distant (réseau) / non authentifié / sans interaction utilisateur
Surface d'attaque : maxLength / values / max
Correctif : 5.0.9 — appliquer immédiatement
Contournement : avoid passing untrusted input to expand() or to glob brace patterns, or pass an explicitly small max and maxLength.
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.

❓ Quel est le problème

Une vulnérabilité (CWE-400) affecte brace-expansion. Les attaquants atteignent le code vulnérable via maxLength sans authentification.

📍 Périmètre concerné

Consultez l'avis de l'éditeur pour les versions affectées de brace-expansion. Surface d'attaque : maxLength / values / max.

🔥 Gravité

Gravité : Élevée (CVSS 7.5/10). Risque d'opérations non autorisées ou de divulgation.

🔧 Comment corriger

Mettre à jour vers 5.0.9.

🛡️ Contournement

Contournement : avoid passing untrusted input to expand() or to glob brace patterns, or pass an explicitly small max and maxLength.

🔍 Détection

Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.

Actions de réponse

Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre

  1. 1
    Identify exposure identify
    grep -r 'brace-expansion' . | grep -v node_modules

    リポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で brace-expansion を grep し、稼働しているサービス・バージョンを把握する。

  2. 2
    Apply temporary workaround mitigate
    avoid passing untrusted input to `expand()` or to glob brace patterns, or pass an explicitly small `max` **and** `maxLength`.

    パッチが適用されるまでの応急処置として、avoid passing untrusted input to expand() or to glob brace patterns, or pass an explicitly small max and maxLength. を実施。回避策の副作用 (機能低下) を確認した上で。

  3. 3
    Apply patch patch
    Upgrade brace-expansion to 5.0.9

    ステージング環境で 5.0.9 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。

  4. 4
    Post-deployment verification verify
    Confirm patched version is live in production

    パッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。

Paquets affectés

npm brace-expansion
[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.0.9"}]}]

État des correctifs par distribution

Paquets corrigés publiés par chaque distribution pour cette CVE

Références

Nous utilisons des cookies pour l'analyse d'audience et la mesure publicitaire. Ce réglage s'applique à tous les sites de Game co., Ltd. En savoir plus