CVE-2026-33937
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Wysokie ryzykoPercentyl 76 - wyżej niż 76% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko dla organizacji jest krytyczne – zdalny atakujący może przejąć kontrolę nad serwerem, wykraść dane lub zainstalować złośliwe oprogramowanie. Podatność dotyczy aplikacji używających Handlebars do dynamicznego kompilowania szablonów z niezaufanych źródeł.
Rekomendacja
Natychmiast zaktualizuj Handlebars do wersji 4.7.9 lub nowszej. Jako tymczasowe obejście, przed wywołaniem `Handlebars.compile()` zawsze waliduj, czy argument jest typu `string`, a nie obiektem lub wartością zdeserializowaną z JSON. Rozważ użycie wersji runtime-only (`handlebars/runtime`) na serwerze, jeśli szablony są prekompilowane.
Inne podatności w Handlebars
Zobacz wszystkie- 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-106445Krytyczne
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.
- CVE-2021-23383Średnie
Pakiet handlebars przed wersją 4.7.7 jest podatny na Prototype Pollution, gdy wybiera się określone opcje kompilacji do kompilowania szablonów pochodzących z niezaufanego źródła.
- CVE-2021-23369Średnie
Pakiet handlebars przed wersją 4.7.7 jest podatny na zdalne wykonanie kodu (RCE) przy wyborze pewnych opcji kompilacji do kompilowania szablonów pochodzących z niezaufanego źródła.
- 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-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.
- CVE-2019-20920Wysokie
Handlebars w wersjach przed 3.0.8 oraz 4.x przed 4.5.3 jest podatny na wykonanie dowolnego kodu. Helper 'lookup' nieprawidłowo waliduje szablony, co pozwala atakującym na przesłanie szablonów wykonujących dowolny JavaScript. Może to służyć do uruchomienia dowolnego kodu na serwerze przetwarzającym szablony Handlebars lub w przeglądarce ofiary (efektywnie XSS).
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, `Handlebars.compile()` accepts a pre-parsed AST object in addition to a template string. The `value` field of a `NumberLiteral` AST node is emitted directly into the generated JavaScript without quoting or sanitization. An attacker who can supply a crafted AST to `compile()` can therefore inject and execute arbitrary JavaScript, leading to Remote Code Execution on the server. Version 4.7.9 fixes the issue. Some workarounds are available. Validate input type before calling `Handlebars.compile()`; ensure the argument is always a `string`, never a plain object or JSON-deserialized value. Use the Handlebars runtime-only build (`handlebars/runtime`) on the server if templates are pre-compiled at build time; `compile()` will be unavailable.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

