CVE-2026-4800
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Wysokie ryzykoPercentyl 85 - wyżej niż 85% wszystkich znanych CVE
Streszczenie
Poprawka dla CVE-2021-23337 dodała walidację opcji zmiennej w _.template, ale nie zastosowała tej samej walidacji do nazw kluczy options.imports, a obie ścieżki prowadzą do tego samego konstruktora Function(). Gdy aplikacja przekazuje niezaufane dane wejściowe jako nazwy kluczy options.imports, atakujący może wstrzyknąć wyrażenia domyślnych parametrów wykonujące dowolny kod w czasie kompilacji szablonu. Dodatkowo _.template używa assignInWith do scalania importów, co wylicza odziedziczone właściwości przez for..in, więc jeśli Object.prototype zostało zanieczyszczone przez inny wektor, zanieczyszczone klucze są kopiowane do obiektu imports i przekazywane do Function().
Ocena ryzyka
Atakujący może wykonać dowolny kod w kontekście aplikacji, co prowadzi do pełnego przejęcia systemu, jeśli aplikacja przekazuje niezaufane dane wejściowe jako nazwy kluczy options.imports.
Rekomendacja
Zaktualizuj lodash, lodash-es, lodash-amd i lodash.template do wersji 4.18.1 lub nowszej. Jako obejście nie przekazuj niezaufanych danych wejściowych jako nazw kluczy w options.imports; używaj wyłącznie statycznych nazw kluczy kontrolowanych przez dewelopera.
Inne podatności w lodash
Zobacz wszystkie- CVE-2021-23337Wysokie
Lodash w wersjach przed 4.17.21 jest podatny na wstrzyknięcie poleceń (Command Injection) poprzez funkcję template.
- CVE-2020-28500Średnie
Lodash w wersjach wcześniejszych niż 4.17.21 jest podatny na Regular Expression Denial of Service (ReDoS) poprzez funkcje toNumber, trim i trimEnd.
- CVE-2020-8203Wysokie
W bibliotece lodash przed wersją 4.17.20 występuje podatność na zanieczyszczenie prototypu podczas używania funkcji _.zipObjectDeep.
- CVE-2026-2950Średnie
Funkcje _.unset i _.omit w bibliotece Lodash są podatne na zanieczyszczenie prototypu (prototype pollution). Poprawka dla CVE-2025-13465 chroni tylko przed elementami kluczy będących ciągami znaków, więc atakujący może obejść to sprawdzenie, przekazując segmenty ścieżki opakowane w tablicę. Umożliwia to usunięcie właściwości z wbudowanych prototypów, takich jak Object.prototype, Number.prototype i String.prototype. Luka pozwala na usunięcie właściwości prototypu, ale nie umożliwia nadpisania ich oryginalnego zachowania. Podatność została naprawiona w wersjach od 4.18.0 do 4.18.1 w zależności od pakietu: lodash, lodash-es i lodash-amd w 4.18.1 oraz samodzielne pakiety lodash.unset i lodash.omit w 4.18.0.
- CVE-2025-13465Średnie
Funkcje _.unset i _.omit w bibliotece Lodash są podatne na zanieczyszczenie prototypu (prototype pollution). Atakujący może przekazać spreparowane ścieżki, które powodują usunięcie metod z globalnych prototypów przez Lodash. Luka pozwala na usunięcie właściwości, ale nie umożliwia nadpisania ich oryginalnego zachowania. Podatność została naprawiona w wersjach od 4.17.23 do 4.18.0 w zależności od pakietu: lodash, lodash-es i lodash-amd w 4.17.23 oraz samodzielne pakiety lodash.unset i lodash.omit w 4.18.0.
Oryginalny opis (angielski, źródło NVD)
The fix for CVE-2021-23337 added validation for the variable option in _.template but did not apply the same validation to options.imports key names, and both paths flow into the same Function() constructor sink. When an application passes untrusted input as options.imports key names, an attacker can inject default-parameter expressions that execute arbitrary code at template compilation time. Additionally, _.template uses assignInWith to merge imports, which enumerates inherited properties via for..in, so if Object.prototype has been polluted by another vector the polluted keys are copied into the imports object and passed to Function(). The issue is fixed in 4.18.1 for lodash, lodash-es, lodash-amd, and lodash.template. As a workaround, do not pass untrusted input as key names in options.imports; use only developer-controlled, static key names.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

