CVE-2026-49476
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 51 - wyżej niż 51% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Organizacja narażona jest na atak DoS, który może wyczerpać pamięć serwera i uniemożliwić działanie aplikacji korzystających z Beautiful Soup. Nawet niewielki, spreparowany selektor może spowodować znaczne obciążenie pamięci.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę Soup Sieve do wersji 2.8.4 lub nowszej. Jeśli aktualizacja nie jest możliwa, ogranicz dostęp do funkcji przetwarzających selektory CSS tylko dla zaufanych użytkowników.
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-49477Wysokie
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.
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 allocates unbounded memory when compiling large comma-separated selector lists, allowing an attacker who can supply a crafted selector string to soupsieve.compile() or Beautiful Soup .select() / .select_one() to allocate hundreds of megabytes of heap memory from a relatively small input and cause denial of service. This issue is fixed in version 2.8.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

