← Back to CVE Explorer

CVE-2026-13149

Full vulnerability record from the local CVENow database.

Description

brace-expansion through 5.0.6 is vulnerable to denial of service. The expand() function exhibits exponential-time complexity in the number of consecutive non-expanding '{}' brace groups. An attacker who passes a crafted string to expand(), directly or transitively, can cause significant CPU consumption and event-loop blocking. The max option does not mitigate this, as it bounds the output size rather than the recursion work.

Severity
HIGH
CVSS score
7.7 (v4.0)
Vulnerability status
Deferred
Source identifier
22e2d327-25fe-45d7-9f0c-dcd23b7108df
Published
2026-06-30 10:16:34.560000
Last modified
2026-10-25 21:10:00.770000
View original CVE JSON
{
  "id": "CVE-2026-13149",
  "sourceIdentifier": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
  "published": "2026-06-30T10:16:34.560",
  "lastModified": "2026-10-25T21:10:00.770",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "brace-expansion through 5.0.6 is vulnerable to denial of service. The expand() function exhibits exponential-time complexity in the number of consecutive non-expanding '{}' brace groups. An attacker who passes a crafted string to expand(), directly or transitively, can cause significant CPU consumption and event-loop blocking. The max option does not mitigate this, as it bounds the output size rather than the recursion work."
    },
    {
      "lang": "es",
      "value": "brace-expansion hasta la 5.0.6 es vulnerable a denegación de servicio. La función expand() presenta una complejidad de tiempo exponencial en el número de grupos de llaves ’{}’ consecutivos no expansibles. Un atacante que pasa una cadena manipulada a expand(), directa o transitivamente, puede causar un consumo significativo de CPU y el bloqueo del bucle de eventos. La opción max no mitiga esto, ya que limita el tamaño de la salida en lugar del trabajo de recursión."
    }
  ],
  "affected": [
    {
      "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
      "affectedData": [
        {
          "vendor": "juliangruber",
          "product": "brace-expansion",
          "defaultStatus": "unaffected",
          "collectionURL": "https://registry.npmjs.org",
          "packageName": "brace-expansion",
          "repo": "https://github.com/juliangruber/brace-expansion",
          "versions": [
            {
              "version": "0",
              "lessThanOrEqual": "5.0.6",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:N/AU:Y/R:U/V:D/RE:M/U:Amber",
          "baseScore": 7.7,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "vulnConfidentialityImpact": "NONE",
          "vulnIntegrityImpact": "NONE",
          "vulnAvailabilityImpact": "HIGH",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "PROOF_OF_CONCEPT",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NEGLIGIBLE",
          "Automatable": "YES",
          "Recovery": "USER",
          "valueDensity": "DIFFUSE",
          "vulnerabilityResponseEffort": "MODERATE",
          "providerUrgency": "AMBER"
        }
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-06-30T12:43:12.568372Z",
          "id": "CVE-2026-13149",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-400"
        },
        {
          "lang": "en",
          "value": "CWE-407"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/juliangruber/brace-expansion/commit/c7e33ec13ac1a684c116720843ce24e208611754",
      "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df"
    },
    {
      "url": "https://www.npmjs.com/package/brace-expansion",
      "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df"
    }
  ]
}