Source: soupsieve
Version: 2.8.4-1
Severity: important
Tags: security upstream
X-Debbugs-Cc: [email protected], Debian Security Team <[email protected]>

Hi,

The following vulnerabilities were published for soupsieve.

CVE-2026-85999[0]:
| 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.


CVE-2026-86000[1]:
| Soup Sieve is a CSS selector library designed to be used with
| Beautiful Soup 4. Prior to 2.9, the selector parser in
| src/soupsieve/css_parser.py defines IDENTIFIER with adjacent
| quantified groups over overlapping character classes, and VALUE
| embeds IDENTIFIER for attribute selectors. When an attacker-
| controlled selector contains a long identifier or unquoted
| attribute-value run followed by input that makes the overall match
| fail, the regular expression engine explores quadratically many
| splits between the overlapping groups. User-controlled selectors can
| reach this path through soupsieve.compile(), soupsieve.select(), or
| BeautifulSoup.select(), while applications using only hard-coded
| selectors are unaffected. The resulting CPU consumption can hold the
| Python GIL, exhaust application workers, and stall a service;
| successful plain identifier matches are linear, and the issue does
| not cause memory corruption or code execution. The issue is fixed in
| version 2.9.


If you fix the vulnerabilities please also make sure to include the
CVE (Common Vulnerabilities & Exposures) ids in your changelog entry.

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-85999
    https://www.cve.org/CVERecord?id=CVE-2026-85999
    
https://github.com/facelessuser/soupsieve/security/advisories/GHSA-j934-xhv5-fg8f
[1] https://security-tracker.debian.org/tracker/CVE-2026-86000
    https://www.cve.org/CVERecord?id=CVE-2026-86000
    
https://github.com/facelessuser/soupsieve/security/advisories/GHSA-gjv8-xp57-g29c

Please adjust the affected versions in the BTS as needed.

Regards,
Salvatore

Reply via email to