Skip to main content
MEDIUM

CVE-2026-104844

PostCSS: Quadratic complexity in flat selector parsing allows CPU exhaustion

CVSS v3

5.9

MEDIUM

EPSS Score

0.4 %

exploit probability, as of 2026-10-19

CISA KEV

No

known exploited

Exploitation

none

SSVC status

Get an alert for each new CVE published for postcss-selector-parser.

Set up CVE WatchFree account · no credit card

Affected and fixed versions

Packages from OSV.dev and products from the vendors' CSAF advisories.

version not verifiedVersions not verified: read as OSV.dev and the vendors publish them, not checked against each vendor's release list.

Packages

  • postcss-selector-parsernpmall versions · fixed in 7.1.6

Vendor advisories

  • CVE-2026-104844 Red Hat Product Security

    postcss-selector-parser: postcss-selector-parser: Denial of Service via crafted CSS selectors

Full record on NVD

Description

PostCSS Selector Parser is a CSS selector parser that integrates with PostCSS but does not require it. Prior to 7.1.6, src/parser.js splitWord() can receive a flat selector as one word token carrying many class or ID indexes because period and hash characters are not tokenizer word delimiters. The uniqs() deduplication and per-index class and ID membership checks repeatedly scan the class and ID index arrays, while a separate Sass-interpolation filtering pass also performs repeated linear scanning. Together, these passes make parsing quadratic in the number of indexes and allow a crafted selector to occupy a synchronous parser thread. The maxNestingDepth guard does not mitigate the issue because the hostile selector can have zero nesting depth. Only consumers that synchronously parse untrusted selectors in an exposed request path are affected; ordinary build-time parsing of trusted sources is not affected. This issue is fixed in version 7.1.6.

Technical details

CVSS v3 Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Published
2026-10-02
Last Modified
2026-10-02

Frequently asked questions

What is CVE-2026-104844?

PostCSS Selector Parser is a CSS selector parser that integrates with PostCSS but does not require it. Prior to 7.1.6, src/parser.js splitWord() can receive a flat selector as one word token carrying many class or ID indexes because period and hash characters are not tokenizer word delimiters. The uniqs() deduplication and per-index class and ID membership checks repeatedly scan the class and ID index arrays, while a separate Sass-interpolation filtering pass also performs repeated linear scanning. Together, these passes make parsing quadratic in the number of indexes and allow a crafted selector to occupy a synchronous parser thread. The maxNestingDepth guard does not mitigate the issue because the hostile selector can have zero nesting depth. Only consumers that synchronously parse untrusted selectors in an exposed request path are affected; ordinary build-time parsing of trusted sources is not affected. This issue is fixed in version 7.1.6.

Is CVE-2026-104844 actively exploited?

Active exploitation of CVE-2026-104844 has not been confirmed. Its EPSS score was 0.4% on 2026-10-19, the estimated probability of exploitation in the next 30 days.

What is the CVSS score for CVE-2026-104844?

CVE-2026-104844 has a CVSS v3 base score of 5.9 (MEDIUM severity), with vector string CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H.

Running postcss-selector-parser? Hear about its next vulnerability

CVE Watch matches each new CVE to the vendors and products you list (vendor and product, not the version) and puts it in your alerts with its KEV and EPSS status.

Already have an account? Open CVE WatchNo credit card required · No monthly cap on website lookups · 250 API requests/month