# CVE-2026-86000: Soup Sieve ReDoS in IDENTIFIER and VALUE selector patterns

Source: https://junglewise.ai/threats/cve-2026-86000-soup-sieve-redos-in-identifier-and-value-selector-patterns  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-09-17. Updated: 2026-09-25  
License: CC BY 4.0 with a link back

CVE-2026-86000 · Severity: medium · CVSS 5.3 · Published 2026-09-17

Soup Sieve is a CSS selector parsing library widely used by BeautifulSoup, a popular web scraping and HTML parsing tool. A polynomial-time regular expression flaw allows attackers who can control selector strings (e.g., in scraper tools or admin query interfaces) to craft malicious selectors that consume excessive CPU time—stalling services for seconds to minutes. This creates a denial-of-service vulnerability in any application accepting user-supplied CSS selectors.

Technologies: [soupsieve (PyPI)](https://junglewise.ai/threats/technologies/soupsieve). Vendors: [PyPI](https://junglewise.ai/threats/vendors/pypi).

## Quick answers

**Is CVE-2026-86000 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-86000 being exploited in the wild.

**How severe is CVE-2026-86000?** Medium severity, with a CVSS score of 5.3, published 17 September 2026.

**Which products and versions are affected?** soupsieve (PyPI) < 2.9.0, ECOSYSTEM:introduced=0,fixed=2.9.0.

**Is there a fix for CVE-2026-86000?** Yes. soupsieve (PyPI): upgrade to 2.9.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-86000 attacked?** It is attacked over the network.

**Am I affected by CVE-2026-86000?** Check whether you run soupsieve (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- soupsieve (PyPI): upgrade to 2.9.0 or later

  ```sh
  pip install "soupsieve>=2.9.0"
  ```


## Technical details

The vulnerability is a ReDoS (Regular Expression Denial of Service) in the `IDENTIFIER` sub-pattern used in CSS selector parsing. The pattern `(?:[classA]|ESC)+(?:[classB]|ESC)*` contains overlapping character classes with adjacent quantifiers, causing catastrophic backtracking when a long identifier run must fail to match (e.g., an unterminated attribute value or identifier followed by an invalid character). Attack requires only a user-controlled selector string passed to `soupsieve.compile()` or BeautifulSoup's `select()` methods; no authentication or special network interaction needed. An attacker can craft ~8 KB payloads to cause ~8 seconds of CPU stall, scaling quadratically (×4 per input doubling). Fixes involve removing the adjacent-quantifier ambiguity or using atomic grouping to prevent backtracking.

## Affected products

- Isaac Muse Soup Sieve 2.8.4, 2.9 and earlier

## Identifiers

- CVE-2026-86000
- GHSA-gjv8-xp57-g29c
- PYSEC-2026-4170

## Timeline

- 2026-09-17: disclosed
- 2026-09-17: advisory: GHSA-gjv8-xp57-g29c published

## Related threats

- [Soup Sieve ReDoS via general sibling combinator in :has()](https://junglewise.ai/threats/cve-2026-126192-soup-sieve-is-a-css-selector-library-designed-to-be-used-with)
- [Soup Sieve polynomial DoS in descendant combinator matching](https://junglewise.ai/threats/cve-2026-126190-soup-sieve-is-a-css-selector-library-designed-to-be-used-with)
- [Soup Sieve polynomial-time ReDoS in whitespace trimming regex](https://junglewise.ai/threats/cve-2026-85999-soup-sieve-polynomial-time-redos-in-whitespace-trimming-regex)
- [facelessuser soupsieve ReDoS in CSS selector parser](https://junglewise.ai/threats/cve-2026-49477-facelessuser-soupsieve-redos-in-css-selector-parser)
- [facelessuser Soup Sieve denial of service via memory exhaustion](https://junglewise.ai/threats/cve-2026-49476-facelessuser-soup-sieve-denial-of-service-via-memory-exhaustion)
