CVE-2026-49477
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 51 - wyżej niż 51% wszystkich znanych CVE
Streszczenie
Biblioteka Soup Sieve w wersjach przed 2.8.4 zawiera podatność na atak DoS poprzez wyrażenie regularne podatne na katastroficzne cofanie się. Atakujący może dostarczyć niesprawdzony selektor CSS z nieprawidłowo zamkniętą wartością atrybutu, co prowadzi do wyczerpania zasobów CPU.
Ocena ryzyka
Organizacja narażona jest na atak odmowy usługi (DoS) poprzez wysłanie specjalnie spreparowanego selektora CSS do funkcji soupsieve.compile() lub Beautiful Soup .select()/.select_one(), co może spowodować przeciążenie serwera i przerwanie działania aplikacji.
Rekomendacja
Należy niezwłocznie zaktualizować bibliotekę Soup Sieve do wersji 2.8.4 lub nowszej. W przypadku braku możliwości aktualizacji, należy ograniczyć dostęp do funkcji przetwarzających selektory CSS tylko dla zaufanych źródeł.
Inne podatności w Soup Sieve
Zobacz wszystkie- CVE-2026-86000Średnie
Soup Sieve to biblioteka selektorów CSS przeznaczona do użycia z Beautiful Soup 4. Przed wersją 2.9 parser selektorów w src/soupsieve/css_parser.py definiuje IDENTIFIER z sąsiadującymi grupami ilościowymi na nakładających się klasach znaków, a VALUE osadza IDENTIFIER dla selektorów atrybutów. Gdy selektor kontrolowany przez atakującego zawiera długi identyfikator lub niecytowany ciąg wartości atrybutu, po którym następuje dane wejściowe powodujące niepowodzenie ogólnego dopasowania, silnik wyrażeń regularnych przeszukuje kwadratowo wiele podziałów między nakładającymi się grupami. Selektory kontrolowane przez użytkownika mogą dotrzeć do tej ścieżki przez soupsieve.compile(), soupsieve.select() lub BeautifulSoup.select(), podczas gdy aplikacje używające tylko zakodowanych na stałe selektorów nie są dotknięte. Wynikające z tego zużycie CPU może utrzymać GIL Pythona, wyczerpać pracowników aplikacji i zatrzymać usługę; udane dopasowania zwykłych identyfikatorów są liniowe, a problem nie powoduje uszkodzenia pamięci ani wykonania kodu. Problem został naprawiony w wersji 2.9.
- CVE-2026-85999Średnie
Soup Sieve to biblioteka selektorów CSS przeznaczona do użycia z Beautiful Soup 4. Przed wersją 2.9, selector_iter w src/soupsieve/css_parser.py przycina surowy selektor za pomocą RE_WS_END, wyrażenia kończącego się na WSC (białe znaki i komentarze) używanego z search(), więc silnik wyrażeń regularnych ponawia zachłanne skanowanie przy każdej pozycji początkowej. Selektor kontrolowany przez atakującego zawierający długi ciąg białych znaków wewnętrznych lub selektor zawierający długi ciąg komentarzy CSS, po którym następuje inny token, powoduje kwadratowe obciążenie CPU przed tokenizacją. Selektory kontrolowane przez użytkownika mogą dotrzeć do ścieżki przez soupsieve.compile() i BeautifulSoup.select(), podczas gdy aplikacje używające tylko zakodowanych na stałe selektorów nie są dotknięte. Ta przyczyna źródłowa jest oddzielona od podatności na cofanie się IDENTIFIER i VALUE, ponieważ koszt występuje w RE_WS_END.search podczas przycinania, a nie podczas dopasowywania tokenów. Wynikające z tego zużycie CPU może utrzymać GIL Pythona, wyczerpać pracowników i zatrzymać usługę bez powodowania uszkodzenia pamięci lub wykonania kodu. Problem został naprawiony w wersji 2.9.
- CVE-2026-49476Wysokie
Biblioteka Soup Sieve przed wersją 2.8.4 przydziela nieograniczoną pamięć podczas kompilowania dużych list selektorów oddzielonych przecinkami. Atakujący może dostarczyć spreparowany ciąg selektora do funkcji soupsieve.compile() lub Beautiful Soup .select()/.select_one(), co prowadzi do alokacji setek megabajtów pamięci i odmowy usługi.
Oryginalny opis (angielski, źródło NVD)
Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4. Prior to 2.8.4, the CSS selector parser in soupsieve contains a regular expression vulnerable to catastrophic backtracking when processing an attribute selector with an unterminated quoted value in soupsieve/css_parser.py, allowing an attacker who can supply untrusted CSS selector strings to soupsieve.compile() or Beautiful Soup .select() / .select_one() to cause CPU exhaustion and denial of service. This issue is fixed in version 2.8.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

