CVE-2026-126192
Received Received - Intake

ReDoS via Quadratic Work in Soup Sieve CSS Selector

Vulnerability report for CVE-2026-126192, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-11-12

Last updated on: 2026-11-12

Assigner: GitHub, Inc.

Description

Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4. Prior to 2.10, matching a developer-authored selector that places the general sibling combinator inside :has() repeatedly scans each candidate element's following siblings when the right-hand side is absent, producing quadratic work on attacker-controlled HTML. Applications that evaluate a fixed selector such as div:has(a ~ b) over untrusted markup can have a worker occupied for minutes by a small document, while the adjacent sibling form and trusted-only document processing are not affected in the same way. This issue is fixed in version 2.10.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-11-12
Last Modified
2026-11-12
Generated
2026-11-12
AI Q&A
2026-11-12
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
whit537 soup_sieve 2.10

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-407 An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached.
CWE-400 The product does not properly control the allocation and maintenance of a limited resource.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects Soup Sieve, a CSS selector library for Beautiful Soup 4. It involves a performance flaw where using the general sibling combinator (~) inside the :has() pseudo-class selector causes quadratic time complexity. This means processing time increases exponentially with input size, potentially stalling applications for minutes with small malicious documents.

Detection Guidance

To detect this vulnerability, check the installed version of Soup Sieve using pip show soupsieve. If the version is 2.9.2 or earlier, the system is vulnerable. Additionally, review applications using Soup Sieve for selectors containing :has(a ~ b) or similar patterns that may cause excessive CPU usage.

Impact Analysis

An attacker could craft HTML documents with many sibling elements to exploit this flaw, causing denial-of-service through excessive CPU usage. Applications processing untrusted HTML with fixed selectors like div:has(a ~ b) are particularly vulnerable.

Mitigation Strategies

Upgrade Soup Sieve to version 2.10 or later. Avoid using broad selectors like div:has(a ~ b) in untrusted HTML. Implement input scanning to block :has usage or enforce timeouts on selector evaluations. Use tighter combinators like > or + inside :has() to reduce processing complexity.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-126192. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart

Security Radar

News mentioning this vulnerability
Loading related security news...