{"id":"CVE-2026-102277","summary":"brace-expansion: Quadratic-time expansion of the `{a},b}` rewrite causes CPU denial of service","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.","aliases":["GHSA-q2hr-2g5m-vwhr"],"modified":"2026-09-30T11:30:19.234011746Z","published":"2026-09-28T20:54:46.160Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102277.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-400","CWE-407"]},"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"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/juliangruber/brace-expansion","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"}],"database_specific":{"source":["AFFECTED_FIELD","REFERENCES"],"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"}]}}],"versions":["v3.0.8","v2.1.6","v1.1.20","v5.0.11","v3.0.7","v2.1.5","v1.1.19","v5.0.10","v3.0.6","v2.1.4","v1.1.18","v5.0.9","v1.1.17","v2.1.3","v1.1.16","v2.1.2","v3.0.4","v3.0.3","v3.0.2","v5.0.8","v2.1.1","v1.1.15","v5.0.7","v1.1.14","v2.1.0","v5.0.6","v2.0.3","v1.1.13","v3.0.1","v2.0.2","v1.1.12","v5.0.5","v5.0.4","v5.0.3","v5.0.2","v4.0.1","v1.1.11","v2.0.1","v3.0.0","v4.0.0","v2.0.0","v1.1.10","v1.1.9","v1.1.8","v1.1.7","v1.1.6","v1.1.5","v1.1.4","v1.1.3","v1.1.2","v1.1.1","v1.1.0","v1.0.1","v1.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-102277.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}]}