5.3

CVE-2026-85999: Soup Sieve: Polynomial-time ReDoS (O(n²)) in the whitespace/comment trimming regex `RE_WS_END` (triggers on VALID selectors)

Awaiting analysis
AliasesGHSA-j934-xhv5-fg8fPYSEC-2026-4171UBUNTU-CVE-2026-85999
Published 17-09-2026Last modified 22-09-2026

Vulnerability summary

CVE-2026-85999 is a medium (CVSS 5.3) Uncontrolled Resource Consumption vulnerability in facelessuser soupsieve. EPSS estimates a 0.61% chance of exploitation in the next 30 days, higher than 49.2% of scored vulnerabilities.

Priority
Routine

Not severe (CVSS 5.3, network access); no exploitation reported by the 5 checked sources

Source freshness unavailable

How is this decided?
CVSS score
5.3/10
010
Medium · v3.1 (CVE.org)
EPSS score
0.61%
0%100%
Low · 0.00 pp in 30 days
KEVNot listedNot listed by any tracked catalog.
RansomwareNot flaggedNo ransomware use recorded.
Public exploits0No public exploits recorded

Advisory lineage

Upstream 0 · Downstream 4 · Related 4

Timeline

  1. 17-09-2026
    PublishedVulnerability first disclosed.
  2. 22-09-2026
    Last modifiedVulnerability information updated.

Description

Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4. Prior to 2.9, selector_iter in src/soupsieve/css_parser.py trims the raw selector with RE_WS_END, an end-anchored WSC whitespace-and-comment expression used with search(), so the regular expression engine retries a greedy scan at every starting offset. An attacker-controlled valid selector containing a long internal whitespace run, or a selector containing a long CSS comment run followed by another token, causes quadratic CPU work before tokenization. User-controlled selectors can reach the path through soupsieve.compile() and BeautifulSoup.select(), while applications using only hard-coded selectors are unaffected. This root cause is separate from the IDENTIFIER and VALUE backtracking vulnerability because the cost occurs in RE_WS_END.search during trimming rather than token matching. The resulting CPU consumption can hold the Python GIL, exhaust workers, and stall a service without causing memory corruption or code execution. The issue is fixed in version 2.9.

CVSS metrics

7 scores · 7 sources · 1 version

EPSS trend

Probability

0.61%

Chance of exploitation in the next 30 days

Percentile

49%

Versus all other CVEs

30-day change

No change 0.00 pp

From 0.61% on 04-10-2026

04-10-202603-11-2026

Known exploited

Compare KEV catalogs
CISA KEV

Not in the CISA KEV catalog.

ENISA CNW

Not in the ENISA CNW catalog.

CIRCL

Not in the CIRCL catalog.

Public exploits

0 found

No public exploits indexed.

Weaknesses

CWE · root cause

Affected systems

Version check

Known conditions: network-reachable, no authentication, no user interaction (CVSS vector). Other conditions: not stated in public data.

Chainguard12 products
  • airflow-2< 2.11.2-r22
  • datadog-agent-7.77-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.78-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.79-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.80-core-integrationsAll versions (No fix recorded)
Wolfi6 products
  • datadog-agent-7.77-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.78-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.79-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.80-core-integrationsAll versions (No fix recorded)
  • datadog-agent-7.81-core-integrationsAll versions (No fix recorded)
Debian1 product
  • soupsieveAll versions (No fix recorded)
Facelessuser1 product
PyPI1 product
  • soupsieve< 2.9.0
Ubuntu1 product
  • soupsieveAll versions (No fix recorded)

6 vendors · 22 products

References

11 links
Show all 11 references