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.
Une vulnérabilité (CWE-400) affecte brace-expansion. Les attaquants atteignent le code vulnérable via maxLength sans authentification.
Consultez l'avis de l'éditeur pour les versions affectées de brace-expansion. Surface d'attaque : maxLength / values / max.
Gravité : Élevée (CVSS 7.5/10). Risque d'opérations non autorisées ou de divulgation.
Mettre à jour vers 5.0.9.
Contournement : avoid passing untrusted input to expand() or to glob brace patterns, or pass an explicitly small max and maxLength.
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
-
1Identify exposure identify
grep -r 'brace-expansion' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
brace-expansionを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply 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 smallmaxandmaxLength. を実施。回避策の副作用 (機能低下) を確認した上で。 -
3Apply patch patch
Upgrade brace-expansion to 5.0.9ステージング環境で 5.0.9 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
4Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Paquets affectés
État des correctifs par distribution
Paquets corrigés publiés par chaque distribution pour cette CVE
- Ubuntu UBUNTU-CVE-2026-69152 node-brace-expansion
Références
- ATLASSIAN JSWSERVER-26942
- exploit github.com
- patch security-advisories@github.com
- patch security-advisories@github.com
- patch security-advisories@github.com
- patch security-advisories@github.com
- web github.com
- web nvd.nist.gov