CVE-2026-33916
ŚrednieCVSS 4.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
Handlebars w wersjach 4.0.0 do 4.7.8 zawiera błąd w funkcji resolvePartial(), która rozwiązuje nazwy partiali poprzez zwykłe wyszukiwanie właściwości w options.partials bez ochrony przed przechodzeniem po łańcuchu prototypów. Gdy Object.prototype zostanie zanieczyszczony ciągiem znaków pasującym do referencji partiala, zanieczyszczony ciąg jest używany jako treść partiala i renderowany bez escapowania HTML, co prowadzi do XSS. Wersja 4.7.9 naprawia problem.
Ocena ryzyka
Atakujący może wykorzystać podatność do przeprowadzenia ataku XSS (reflected lub stored), potencjalnie kradnąc dane sesyjne lub wykonując działania w imieniu użytkownika. Wymaga to jednak wcześniejszego zanieczyszczenia prototypu, co może być trudniejsze do osiągnięcia.
Rekomendacja
Zaktualizuj Handlebars do wersji 4.7.9 lub nowszej. Jako obejście rozważ zamrożenie Object.prototype na początku działania aplikacji lub użycie wersji runtime-only (handlebars/runtime).
Inne podatności w Handlebars
Zobacz wszystkie- CVE-2015-8861Średnie
Pakiet handlebars w wersji przed 4.0.0 dla Node.js pozwala zdalnym atakującym na przeprowadzanie ataków cross-site scripting (XSS) poprzez wykorzystanie szablonu z atrybutem, który nie jest ujęty w cudzysłów.
- 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
Handlebars w wersjach od 3.0.0 do 4.7.10 zawiera podatność polegającą na tym, że funkcja lookupProperty zwraca Function.prototype.constructor przed zastosowaniem listy zabronionych właściwości prototype. Pozwala to osobie atakującej, która może renderować kontrolowany szablon z włączonym allowProtoMethodsByDefault, na dostęp do konstruktora Function przez obejście, co umożliwia wykonanie dowolnego kodu JavaScript z uprawnieniami aplikacji serwera.
- 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-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-2019-19919Krytyczne
Wersje handlebars przed 4.3.0 są podatne na zanieczyszczenie prototypu (Prototype Pollution), które może prowadzić do zdalnego wykonania kodu. Szablony mogą modyfikować właściwości __proto__ i __defineGetter__ obiektu, co może pozwolić atakującemu na wykonanie dowolnego kodu poprzez spreparowane payloady.
- 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.
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, `resolvePartial()` in the Handlebars runtime resolves partial names via a plain property lookup on `options.partials` without guarding against prototype-chain traversal. When `Object.prototype` has been polluted with a string value whose key matches a partial reference in a template, the polluted string is used as the partial body and rendered without HTML escaping, resulting in reflected or stored XSS. Version 4.7.9 fixes the issue. Some workarounds are available. Apply `Object.freeze(Object.prototype)` early in application startup to prevent prototype pollution. Note: this may break other libraries, and/or use the Handlebars runtime-only build (`handlebars/runtime`), which does not compile templates and reduces the attack surface.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

