CVE-2026-85999 json
Soup Sieve: Polynomial-time ReDoS (O(n²)) in the whitespace/comment trimming regex `RE_WS_END` (triggers on VALID selectors)
published 2026-09-17 53 d ago modified 2026-10-01 39 d ago also EUVD-2026-81690 , GHSA-j934-xhv5-fg8f , PYSEC-2026-4171
- cvss
- 5.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.6%
- EPSS 0.6% chance of exploitation in 30 days, percentile 49%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- pypi soupsieve 2.9.0
- facelessuser soup_sieve 2.9
- python-soupsieve SLES for SAP applications 16.0, SLES 16.0 2.6-160000.5.1
- python-soupsieve SLE Module for Python 3 15 SP7 2.5-150600.3.6.1
suse advisories SUSE-SU-2026:24267-1SUSE-SU-2026:4365-1
- python-soupsieve openSUSE Leap 16.0 2.6-160000.5.1
- python-soupsieve openSUSE Tumbleweed 2.9.2-1.1
opensuse advisories openSUSE-SU-2026:22149-1openSUSE-SU-2026:11866-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-85999 updated cvss 5.9
soupsieve: Soup Sieve: Denial of Service via crafted CSS selectors
-
Red Hat Exploit Intelligence exploit-intelligence/vulnerability-analysis-rhel9 Red Hat Lightspeed Core lightspeed-core/rag-tool-cpu-rhel9, lightspeed-core/rag-tool-cuda-12.9-rhel9 Red Hat Migration Toolkit for Applications 8 mta/mta-solution-server-rhel9 Red Hat OpenShift Lightspeed openshift-lightspeed/lightspeed-ocp-rag-rhel9, openshift-lightspeed-tech-preview/lightspeed-rag-tool-rhel9 Red Hat Ansible Automation Platform 2 ansible-automation-platform-25/lightspeed-chatbot-rhel8 Red Hat OpenShift AI (RHOAI) rhoai/odh-ogx-core-rhel9, rhoai/odh-th-torch-cpu-py312-rhel9, rhoai/odh-th-torch-cuda-py312-rhel9, rhoai/odh-th-torch-rocm-py312-rhel9, rhoai/odh-kserve-autogluon-server-rhel9, rhoai/odh-th06-cpu-torch291-py312-rhel9, +5 moreaffected: workaround, no fix available “No mitigation is currently available for this vulnerability. Users are advised to apply the security update when available.”
+5 more productsfewer
Red Hat OpenShift Container Platform 4 openshift4/ose-ironic-rhel9, openshift4/ose-olm-catalogd-rhel9, python-soupsieve 2.1.0-3.el9ocp.2 Red Hat OpenShift Container Platform 5 openshift5/ose-ironic-rhel9 Red Hat OpenShift Virtualization 4 container-native-virtualization/ocp-virt-validation-checkup-rhel9 Red Hat OpenStack Platform 17.1 python3-soupsieve, rhosp-rhel9/openstack-tempest, rhosp-rhel9/openstack-aodh-api, rhosp-rhel9/openstack-heat-all, rhosp-rhel9/openstack-heat-api, rhosp-rhel9/openstack-aodh-base, +44 more Red Hat Quay 3 quay/quay-rhel8, quay/quay-rhel9 -
Red Hat OpenShift AI 3.4 rhoai/odh-automl-rhel9 1791535789, rhoai/odh-autorag-rhel9 1791557539, rhoai/odh-feature-server-rhel9 1791863220, rhoai/odh-th06-cpu-torch210-py312-rhel9 1791874335, rhoai/odh-th06-rocm64-torch291-py312-rhel9 1791872119, rhoai/odh-th06-cuda130-torch210-py312-rhel9 1791961113, +18 morefixed: vendor fix “No mitigation is currently available for this vulnerability. Users are advised to apply the security update when available.” RHSA-2026:84734
-
Red Hat Hardened Images python-urllib3 2.7.0-7.hum1, python-attrs 26.1.0-4.1.hum1, python-rpds-py 2026.6.3-3.hum1not affected: component not present
-
Red Hat OpenShift AI 3.4 rhoai/odh-cli-rhel9 1791509689, rhoai/rhai-cli-rhel9 1791509689, rhoai/odh-mlflow-rhel9 1791865967, rhoai/odh-trainer-rhel9 1791869783, rhoai/odh-eval-hub-rhel9 1791852583, rhoai/odh-maas-api-rhel9 1791788707, +76 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 48 d ago
Exploit prediction
0.61% chance of exploitation in the next 30 days, higher than 49% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| GitHub | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| OSV | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | soupsieve | <2.9.0 |
2.9.0 |
Affected products
- facelessuser soupsieve
Classification
References
-
github.com
/facelessuser/soupsieve/commit/cf198fcddc9230f06ed39f974eba0ce076b85cda
web
-
github.com
/facelessuser/soupsieve/security/advisories/GHSA-j934-xhv5-fg8f
web
-
github.com
/facelessuser/soupsieve/releases/tag/2.9
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-85999
advisory
-
github.com
/facelessuser/soupsieve
package
-
pypi.org
/project/soupsieve
package
-
github.com
/advisories/GHSA-j934-xhv5-fg8f
advisory
Sources
- CVE List CVE-2026-85999
- GitHub Advisory GHSA-j934-xhv5-fg8f
- NVD CVE-2026-85999
- OSV PYSEC-2026-4171
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.