CVE-2026-102277
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 21 - wyżej niż 21% wszystkich znanych CVE
Streszczenie
Biblioteka brace-expansion generuje dowolne ciągi znaków zawierające wspólny prefiks i sufiks. W wersjach przed 1.1.21, 2.1.7, 3.0.9 i 5.0.12 funkcja expand obsługuje niezaufane wzorce w kształcie {a},b} z wieloma końcowymi nawiasami zamykającymi, restartując skanowanie raz dla każdego końcowego nawiasu. Kolejne pełne rescany wejścia z liniowym wzrostem ciągu roboczego powodują kwadratowy czas CPU i presję na pamięć, co może zablokować pętlę zdarzeń Node.js.
Ocena ryzyka
Atakujący może dostarczyć specjalnie spreparowany wzorzec, który spowoduje kwadratowe zużycie CPU i pamięci, blokując pętlę zdarzeń Node.js i powodując odmowę usługi. Proces ostatecznie się odzyskuje, ale aplikacja może być niedostępna przez dłuższy czas.
Rekomendacja
Zaktualizuj bibliotekę brace-expansion do wersji 1.1.21, 2.1.7, 3.0.9 lub 5.0.12 (w zależności od używanej gałęzi). Sprawdź, czy aplikacje Node.js korzystające z tej biblioteki nie przetwarzają niezaufanych danych wejściowych.
Inne podatności w brace-expansion
Zobacz wszystkie- CVE-2025-5889Niskie
W bibliotece brace-expansion do wersji 1.1.11, 2.0.1, 3.0.0 i 4.0.0 wykryto podatność polegającą na nieefektywnej złożoności wyrażenia regularnego w funkcji expand w pliku index.js. Atak może być przeprowadzony zdalnie.
- CVE-2026-102278Wysokie
Biblioteka brace-expansion generuje dowolne ciągi znaków zawierające wspólny prefiks i sufiks. W wersjach przed 1.1.20, 2.1.6, 3.0.8 i 5.0.11 głęboko zagnieżdżone grupy nawiasów powodują, że expand_() rekursuje raz na poziom zagnieżdżenia w miejscach rozwinięcia elementów oddzielonych przecinkami i pojedynczych zestawów, wyczerpując natywny stos zanim limity wyjściowe mogą zostać zastosowane, potencjalnie kończąc proces Node.js. expand_ wykonuje niekontrolowaną rekurencję dla zagnieżdżonych alternatyw nawiasów i zestawów jednoczęściowych. głęboko zagnieżdżone grupy nawiasów dostarczone jako niezaufany wzorzec. expand_ jest dotknięty. expand jest dotknięty. Elementy oddzielone przecinkami są dotknięte. Pojedynczy zestaw jest dotknięty. wyczerpanie natywnego stosu podczas zagnieżdżonego podrozwinięcia. odmowa usługi kończąca proces. Problem został naprawiony w wersjach 1.1.20, 2.1.6, 3.0.8 i 5.0.11.
- CVE-2026-102276Wysokie
Biblioteka brace-expansion generuje dowolne ciągi znaków na podstawie wspólnego prefiksu i sufiksu. W wersjach przed 1.1.19, 2.1.5, 3.0.7 i 5.0.10 specjalnie spreparowane wzorce nawiasów klamrowych mogą wyczerpać natywny stos w funkcji parseCommaParts, ponieważ funkcja ta rekurencyjnie przetwarza resztę raz na każdą grupę nawiasów oraz używa push.apply do przekazania wszystkich elementów bardzo dużej tablicy jako argumentów funkcji. Może to doprowadzić do zakończenia procesu Node.js w wyniku ataku typu denial of service.
- CVE-2026-69152Wysokie
Biblioteka brace-expansion przed wersjami 1.1.18, 2.1.4, 3.0.6 i 5.0.9 zawiera podatność polegającą na tym, że funkcja expand() nie stosuje ograniczenia maxLength podczas konstruowania pośrednich tablic alternatywnych przecinków lub wypełnionych sekwencji. Pozwala to na wyczerpanie pamięci lub zablokowanie pętli zdarzeń przez kontrolowane przez atakującego dane wejściowe.
- CVE-2026-14257Wysokie
brace-expansion do wersji 5.0.7 jest podatny na atak DoS przez wyczerpanie pamięci. Funkcja expand() ogranicza liczbę wyników opcją max (domyślnie 100 000), ale nie ogranicza długości każdego łańcucha wynikowego. Łącząc wiele grup nawiasów klamrowych, atakujący utrzymuje liczbę wyników poniżej limitu, jednocześnie sprawiając, że każdy wynik jest coraz dłuższy, co prowadzi do fatalnego błędu braku pamięci. Około 7,5 KB wejścia ('{a,b}'.repeat(1500)) powoduje awarię domyślnego procesu Node.js. Podatność załatana w wersji 5.0.8 przez dodanie opcji maxLength (domyślnie 4 000 000).
- CVE-2026-13149Wysokie
Podatność w bibliotece brace-expansion do wersji 5.0.6 umożliwia atak DoS poprzez przesłanie spreparowanego ciągu znaków z dużą liczbą grup klamrowych '{}'. Funkcja expand() ma złożoność wykładniczą, co prowadzi do znacznego obciążenia CPU i blokowania pętli zdarzeń.
- CVE-2026-45149Średnie
Biblioteka brace-expansion w wersjach od 5.0.0 do przed 5.0.6 ma wadę w implementacji opcji max. Przy rozwijaniu dużego zakresu liczbowego (np. {1..10000000}) generowane są wszystkie elementy pośrednie przed zastosowaniem limitu, co prowadzi do nadmiernego zużycia pamięci (ok. 505 MB) i czasu procesora (ok. 800 ms). Problem został naprawiony w wersji 5.0.6.
Oryginalny opis (angielski, źródło NVD)
The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to 1.1.21, 2.1.7, 3.0.9, and 5.0.12, the expand function handles untrusted {a},b}-shaped patterns with many trailing closing braces by restarting its scan once for each trailing closing brace. The successive full-input rescans with linear working-string growth cause quadratic CPU time and memory pressure that can block the Node.js event loop. The process eventually recovers, making the impact a recoverable CPU denial of service. This issue is fixed in versions 1.1.21, 2.1.7, 3.0.9, and 5.0.12.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

