CVE-2026-55575
WysokieCVSS 8.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 30 - wyżej niż 30% wszystkich znanych CVE
Streszczenie
W bibliotece LiquidJS przed wersją 10.27.1 filtr 'pop' alokuje pełną kopię tablicy wejściowej bez uwzględniania limitu pamięci (memoryLimit). Pozwala to na wykonanie szablonu, który alokuje poza budżetem pamięci, np. przez {{ huge_array | pop }}.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do przekroczenia limitów pamięci, co prowadzi do wyczerpania zasobów serwera (DoS) lub niekontrolowanego wzrostu zużycia pamięci.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę LiquidJS do wersji 10.27.1 lub nowszej, która zawiera poprawkę uwzględniającą limit pamięci dla filtru 'pop'.
Inne podatności w LiquidJS
Zobacz wszystkie- CVE-2026-45618Krytyczne
LiquidJS to silnik szablonów zgodny z Shopify/GitHub Pages. Przed wersją 10.26.0 możliwe jest wykonanie dowolnego kodu za pomocą spreparowanych szablonów. Wersja 10.26.0 naprawia ten problem.
- CVE-2026-69222Wysokie
W LiquidJS przed wersją 10.27.2 filtr join w src/filters/array.ts oblicza złożoność na podstawie długości tablicy i separatora, a nie całkowitej długości wygenerowanego ciągu. Filtr concat może tanio podwajać tablice referencji, a następnie join materializuje treść, obciążając tylko liczbę elementów, co pozwala przekroczyć skonfigurowany memoryLimit. Podobny problem ma filtr array_to_sentence_string, co może prowadzić do awarii procesu.
- CVE-2026-61556Wysokie
W LiquidJS od wersji 10.26.0 do 10.27.1 filtr strip_html w src/filters/html.ts może wejść w nieskończoną pętlę, gdy wejściowy ciąg zawiera '<', ma co najmniej jeden poprzedzający znak i nie ma późniejszego '>'. Powoduje to zablokowanie renderowania szablonu i może prowadzić do odmowy usługi przy bardzo krótkim wejściu, np. 'a<'.
- CVE-2026-45617Wysokie
LiquidJS to silnik szablonów kompatybilny z Shopify/GitHub Pages, który w wersjach 10.25.7 i poniżej zawiera filtr strip_html z błędnym wyrażeniem regularnym. To prowadzi do ataku ReDoS poprzez kwadratowe cofanie, co blokuje pętlę zdarzeń Node.js.
- CVE-2026-45357Wysokie
W wersjach 10.25.7 i poniżej silnika szablonów LiquidJS występuje podatność związana z filtrem daty, który nieprawidłowo przetwarza specyfikatory szerokości, co prowadzi do nieograniczonego łączenia ciągów i omijania limitów pamięci oraz renderowania.
- CVE-2026-44646Średnie
W wersjach 10.25.7 i poniżej silnik szablonów LiquidJS nieprawidłowo propaguje wartość ownPropertyOnly z kontekstu nadrzędnego, co prowadzi do cichego obejścia zabezpieczeń. W rezultacie, deweloperzy mogą nieświadomie ujawniać właściwości z łańcucha prototypów w niebezpiecznych renderach.
- CVE-2026-44645Średnie
W wersjach 10.25.7 i poniżej silnika szablonów LiquidJS istnieje możliwość całkowitego obejścia opcji renderLimit poprzez użycie pustego tagu {% for %} lub {% tablerow %}. To pozwala na nieograniczone zużycie czasu renderowania, co może prowadzić do ataków typu DoS.
- CVE-2026-44644Średnie
LiquidJS, silnik szablonów kompatybilny z Shopify/GitHub Pages, ma podatność na XSS w wersjach 10.25.7 i poniżej z powodu błędu w logice filtru strip_html. Błąd ten pozwala na ominięcie sanitizacji HTML, co umożliwia atakującym wstrzykiwanie złośliwego kodu.
- CVE-2026-41311Wysokie
LiquidJS przed wersją 10.25.7 zawiera podatność na atak DoS poprzez cykliczne odwołania bloków w {% layout %} / {% block %}, co powoduje wyczerpanie pamięci i awarię procesu Node.js.
- CVE-2026-39859Wysokie
LiquidJS przed wersją 10.25.3 ma podatność, która pozwala na odczyt dowolnych plików. Mimo że root jest ustawiony na ograniczenie dostępu, ładowanie plików najwyższego poziomu nie egzekwuje tego ograniczenia. Instancja Liquid skonfigurowana z pustym katalogiem tymczasowym jako root może zwrócić zawartość dowolnych plików.
Oryginalny opis (angielski, źródło NVD)
LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.27.1, the pop array filter at src/filters/array.ts allocated a full clone of its input array via [...toArray(v)] without calling this.context.memoryLimit.use(...), allowing a template render such as {{ huge_array | pop }} to allocate an O(N) clone of an attacker-influenced array outside the configured memoryLimit budget. This issue is fixed in version 10.27.1.

