CRITICAL🇬🇧 English

CVE-2026-33937

RCE w Handlebars.js przez wstrzyknięcie kodu przez AST (compile)

CVSS 9.8v3.1pub. 2026-03-27upd. 2026-07-02

Podatność w bibliotece Handlebars.js (wersje 4.0.0–4.7.8) umożliwia zdalne wykonanie kodu (RCE) przez przekazanie spreparowanego obiektu AST do funkcji `Handlebars.compile()`. Zagrożenie jest krytyczne, ponieważ nie wymaga uwierzytelnienia ani interakcji użytkownika.

Pokaż oryginał (EN)

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.

🤖 Analiza AI
Jak działa

Funkcja `Handlebars.compile()` akceptuje nie tylko ciąg znaków szablonu, ale również wstępnie przetworzony obiekt AST (Abstract Syntax Tree). Wartość pola `value` węzła AST typu `NumberLiteral` jest wstawiana bezpośrednio do generowanego kodu JavaScript bez żadnego cytowania ani sanityzacji. Atakujący, który jest w stanie dostarczyć spreparowany obiekt AST do funkcji `compile()` — np. przez deserializację danych JSON — może wstrzyknąć dowolny kod JavaScript, który zostanie następnie wykonany po stronie serwera.

Skutki

Atakujący może wykonać dowolny kod JavaScript na serwerze (RCE), co potencjalnie prowadzi do pełnego przejęcia kontroli nad systemem, wycieku danych lub naruszenia integralności aplikacji.

Mitygacja

Należy zaktualizować bibliotekę Handlebars.js do wersji 4.7.9, która naprawia podatność. Jako obejście można: (1) walidować typ argumentu przed wywołaniem `Handlebars.compile()` — upewnić się, że jest to zawsze ciąg znaków (`string`), nigdy obiekt ani wartość uzyskana przez deserializację JSON; (2) na serwerze stosować wersję runtime-only (`handlebars/runtime`), jeśli szablony są kompilowane na etapie budowania — funkcja `compile()` będzie wówczas niedostępna.

Kogo dotyczy

Handlebars.js (pakiet `handlebars`) w wersjach od 4.0.0 do 4.7.8 włącznie.

Uwagi

Podatność dotyczy wyłącznie scenariuszy, w których aplikacja przekazuje do `Handlebars.compile()` dane kontrolowane przez użytkownika w postaci obiektu (np. po deserializacji JSON). Użycie wyłącznie literałów tekstowych jako szablonów nie naraża aplikacji na tę podatność.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Handlebarsjs Handlebars

    APP
    Handlebarsjs
    4.0.0 – 4.7.9 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCEDeserialization
CWE
Referencje

Powiązane podatności

CVE-2026-33939HIGH7.5ten sam produkt

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8...

CVE-2026-33938HIGH8.1ten sam produkt

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8...

CVE-2026-33941HIGH8.2ten sam produkt

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8...

CVE-2026-33940HIGH8.1ten sam produkt

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8...

CVE-2019-20920HIGH8.1ten sam produkt

Handlebars before 3.0.8 and 4.x before 4.5.3 is vulnerable to Arbitrary Code Execution. The lookup helper fail...

CVE-2026-33937 — RCE w Handlebars.js przez wstrzyknięcie kodu przez AST (compile) — CRITICAL 9.8 | CVEbaza.pl