{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "extracted_events": [
              {
                "introduced": "4.0.0"
              },
              {
                "fixed": "5.0.12"
              },
              {
                "introduced": "3.0.0"
              },
              {
                "fixed": "3.0.9"
              },
              {
                "introduced": "2.0.0"
              },
              {
                "fixed": "2.1.7"
              },
              {
                "introduced": "0"
              },
              {
                "fixed": "1.1.21"
              }
            ],
            "source": [
              "AFFECTED_FIELD",
              "REFERENCES"
            ]
          },
          "events": [
            {
              "introduced": "6a39bdddcf944374b475d99b0e8292d3727c7ebe"
            },
            {
              "introduced": "b01a637b0578a7c59acc7d8386f11f8d0710b512"
            },
            {
              "introduced": "0b6a022491103b806770bc037654744bef3e63be"
            },
            {
              "introduced": "0"
            },
            {
              "fixed": "f3410159d768f56c9d9f4511d3e1b46425fc1099"
            },
            {
              "fixed": "0e89da53eb15d78441254fab28a60e3a1da4b76d"
            },
            {
              "fixed": "714b6228a5878cfc6b07dc319db0eb6376ab2c4d"
            },
            {
              "fixed": "8e81e187b6e9c6c723d16c042657c00acefc2483"
            },
            {
              "fixed": "33a5ef17b8d800bbfa8c52b14c39043b6aac1a96"
            },
            {
              "fixed": "bdff773f98e5988616b7039cc9b508df5d640b22"
            },
            {
              "fixed": "c55e67d8d8b1c56a2474afff15c2891166b2d364"
            },
            {
              "fixed": "ffdfa3e3806bed17c0874b8f1439b084de354a7e"
            }
          ],
          "repo": "https://github.com/juliangruber/brace-expansion",
          "type": "GIT"
        }
      ]
    }
  ],
  "aliases": [
    "GHSA-q2hr-2g5m-vwhr"
  ],
  "database_specific": {
    "cna_assigner": "GitHub_M",
    "cwe_ids": [
      "CWE-400",
      "CWE-407"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102277.json"
  },
  "details": "The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to 1.1.21, 2.1.7, 3.0.9, and 5.0.12, the expand function handles untrusted {a},b}-shaped patterns with many trailing closing braces by restarting its scan once for each trailing closing brace. The successive full-input rescans with linear working-string growth cause quadratic CPU time and memory pressure that can block the Node.js event loop. The process eventually recovers, making the impact a recoverable CPU denial of service. This issue is fixed in versions 1.1.21, 2.1.7, 3.0.9, and 5.0.12.",
  "id": "CVE-2026-102277",
  "modified": "2026-10-01T03:30:57.549309828Z",
  "published": "2026-09-28T20:54:46.160Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102277.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/juliangruber/brace-expansion/security/advisories/GHSA-q2hr-2g5m-vwhr"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-102277"
    },
    {
      "type": "FIX",
      "url": "https://github.com/juliangruber/brace-expansion/commit/33a5ef17b8d800bbfa8c52b14c39043b6aac1a96"
    },
    {
      "type": "FIX",
      "url": "https://github.com/juliangruber/brace-expansion/commit/bdff773f98e5988616b7039cc9b508df5d640b22"
    },
    {
      "type": "FIX",
      "url": "https://github.com/juliangruber/brace-expansion/commit/c55e67d8d8b1c56a2474afff15c2891166b2d364"
    },
    {
      "type": "FIX",
      "url": "https://github.com/juliangruber/brace-expansion/commit/ffdfa3e3806bed17c0874b8f1439b084de354a7e"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L",
      "type": "CVSS_V3"
    }
  ],
  "summary": "brace-expansion: Quadratic-time expansion of the `{a},b}` rewrite causes CPU denial of service"
}