Katalog CVE

CVE-2026-4800

WysokieCVSS 8.1
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Wysokie ryzyko
2.62%

Percentyl 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
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