CVE-2026-106445
KrytyczneCVSS 9.2Streszczenie
W Handlebars od wersji 4.0.0 do 4.7.10 funkcja lookupProperty zwraca Function.prototype.constructor przed zastosowaniem listy zabronionych dostępu do prototypów. Gdy atakujący może wyrenderować kontrolowany szablon z włączoną opcją allowProtoMethodsByDefault i dostępną funkcją w kontekście szablonu, może uzyskać konstruktor Function i wykonać dowolny kod JavaScript z uprawnieniami aplikacji serwera. Problem naprawiono w wersji 4.7.10.
Ocena ryzyka
Ryzyko wykonania dowolnego kodu JavaScript z uprawnieniami aplikacji serwera, co może prowadzić do naruszenia bezpieczeństwa aplikacji i danych.
Rekomendacja
Zaktualizuj Handlebars do wersji 4.7.10 lub nowszej i wyłącz allowProtoMethodsByDefault, jeśli nie jest wymagane.
Inne podatności w Handlebars
Zobacz wszystkie- CVE-2026-106444Średnie
W Handlebars od wersji 4.0.0 do 4.7.10 funkcja Handlebars.precompile() używa quotedString() do emitowania statycznego tekstu szablonu do generowanego JavaScriptu bez escapowania sekwencji kończących element script. Gdy aplikacja prekompiluje tekst kontrolowany przez atakującego i osadza wynik w elemencie inline script, atakujący może zamknąć element i wykonać własny kod.
- CVE-2026-106446Krytyczne
Handlebars od wersji 4.0.0 do 4.7.10 akceptuje wstępnie sparsowane obiekty AST w metodach compile() i precompile(), walidując tylko wybrane wartości. Atakujący, który może dostarczyć obiekt zamiast stringa szablonu, może umieścić wyrażenia JavaScript w niesprawdzanych wartościach, co prowadzi do wykonania kodu na serwerze. Aplikacje przekazujące tylko stringi szablonów nie są zagrożone. Problem naprawiono w wersji 4.7.10.
- CVE-2026-33937Krytyczne
Podatność w bibliotece Handlebars (wersje 4.0.0 do 4.7.8) umożliwia zdalne wykonanie kodu (RCE) poprzez wstrzyknięcie złośliwego kodu JavaScript do wygenerowanego skryptu. Problem wynika z braku sanityzacji wartości w węźle AST `NumberLiteral` podczas kompilacji szablonów. Atakujący może dostarczyć spreparowany obiekt AST do funkcji `Handlebars.compile()`, co prowadzi do wykonania dowolnego kodu na serwerze.
- CVE-2026-33941Wysokie
Podatność w Handlebars CLI precompiler (wersje 4.0.0 do 4.7.8) pozwala na wstrzyknięcie kodu JavaScript poprzez niesanitowane nazwy plików szablonów i argumenty CLI. Atakujący może wykorzystać to do wykonania dowolnego kodu w środowisku Node.js lub przeglądarce podczas ładowania wygenerowanego pakietu.
- CVE-2026-33940Wysokie
Podatność w bibliotece Handlebars (wersje 4.0.0 do 4.7.8) pozwala atakującemu na zdalne wykonanie kodu na serwerze poprzez wstrzyknięcie spreparowanego obiektu do kontekstu szablonu. Obiekt ten omija zabezpieczenia w funkcji `resolvePartial()` i powoduje skompilowanie złośliwego kodu JavaScript przez `env.compile()`. Problem został naprawiony w wersji 4.7.9.
- CVE-2026-33939Wysokie
Podatność w bibliotece Handlebars (wersje 4.0.0 do 4.7.8) powoduje awarię procesu Node.js podczas przetwarzania szablonu z niezarejestrowanym dekoratorem. Błąd typu TypeError występuje, gdy runtime próbuje wywołać niezdefiniowaną wartość jako funkcję.
- CVE-2026-33938Wysokie
Podatność w bibliotece Handlebars (wersje 4.0.0 do 4.7.8) pozwala na zdalne wykonanie kodu JavaScript na serwerze. Specjalna zmienna `@partial-block` jest przechowywana w kontekście danych szablonu i może być nadpisana przez helpery akceptujące dowolne obiekty. Gdy helper nadpisze `@partial-block` spreparowanym AST Handlebars, kolejne wywołanie `{{> @partial-block}}` kompiluje i wykonuje to AST, umożliwiając atakującemu wykonanie dowolnego kodu.
Oryginalny opis (angielski, źródło NVD)
Handlebars provides the power necessary to let users build semantic templates. From 4.0.0 until 4.7.10, Handlebars lookupProperty returns Function.prototype.constructor before applying the prototype-access deny list because constructor is an own property of Function.prototype. When an attacker can render a controlled template with allowProtoMethodsByDefault enabled and an accessible function in the template context, the template can traverse from that function through its prototype to Function.prototype and then obtain the Function constructor through the own-property bypass. This permits attacker-controlled JavaScript to execute with the server application's privileges. This issue is fixed in version 4.7.10.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

