CVE-2026-39859
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 37 - wyżej niż 37% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może odczytać poufne pliki systemowe, takie jak konfiguracje, hasła czy dane użytkowników, co prowadzi do wycieku informacji.
Rekomendacja
Należy zaktualizować LiquidJS do wersji 10.25.3 lub nowszej.
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-55575Wysokie
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 }}.
- 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.
Oryginalny opis (angielski, źródło NVD)
LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.3, liquidjs 10.25.0 documents root as constraining filenames passed to renderFile() and parseFile(), but top-level file loads do not enforce that boundary. A Liquid instance configured with an empty temporary directory as root can return the contents of arbitrary files. This vulnerability is fixed in 10.25.3.

