CVE-2026-33939
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 45 - wyżej niż 45% wszystkich znanych CVE
Streszczenie
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ę.
Ocena ryzyka
Organizacja narażona jest na atak typu Denial of Service (DoS) pojedynczym żądaniem, jeśli aplikacja kompiluje szablony dostarczone przez użytkownika bez obsługi wyjątków. Może to prowadzić do przerwania działania usługi.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę Handlebars do wersji 4.7.9. Jeśli aktualizacja nie jest możliwa, należy owinąć kompilację i renderowanie szablonów w blok try/catch oraz odrzucać szablony zawierające składnię dekoratora ({{*...}}).
Inne podatności w Handlebars
Zobacz wszystkie- 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-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. In versions 4.0.0 through 4.7.8, when a Handlebars template contains decorator syntax referencing an unregistered decorator (e.g. `{{*n}}`), the compiled template calls `lookupProperty(decorators, "n")`, which returns `undefined`. The runtime then immediately invokes the result as a function, causing an unhandled `TypeError: ... is not a function` that crashes the Node.js process. Any application that compiles user-supplied templates without wrapping the call in a `try/catch` is vulnerable to a single-request Denial of Service. Version 4.7.9 fixes the issue. Some workarounds are available. Wrap compilation and rendering in `try/catch`. Validate template input before passing it to `compile()`; reject templates containing decorator syntax (`{{*...}}`) if decorators are not used in your application. Use the pre-compilation workflow; compile templates at build time and serve only pre-compiled templates; do not call `compile()` at request time.

