CVE-2026-33940 in Handlebars
Riassunto
di VulDB • 19/06/2026
Handlebars fornisce la potenza necessaria per consentire agli utenti di creare modelli semantici. Nelle versioni dalla 4.0.0 alla 4.7.8, un oggetto manipolato inserito nel contesto del modello può bypassare tutti i controlli condizionali in `resolvePartial()` e far sì che `invokePartial()` restituisca `undefined`. Il runtime di Handlebars tratta quindi il partial non risolto come una sorgente che deve essere compilata, passando l'oggetto manipolato a `env.compile()`. Poiché l'oggetto è un AST (Abstract Syntax Tree) valido di Handlebars contenente codice iniettato, il JavaScript generato esegue comandi arbitrari sul server. L'attacco richiede che l'avversario controlli un valore restituito da una ricerca dinamica di partial. La versione 4.7.9 risolve il problema. Sono disponibili alcune contromisure (workaround). In primo luogo, utilizzare la build solo runtime (`require('handlebars/runtime')`). Senza `compile()`, il percorso di fallback per la compilazione in `invokePartial` non è raggiungibile. In secondo luogo, sanificare i dati del contesto prima della renderizzazione: assicurarsi che nessun valore nel contesto sia un oggetto non primitivo che potrebbe essere passato a un partial dinamico. Terzo, evitare le ricerche dinamiche di partial (`{{> (lookup ...)}}`) quando i dati del contesto sono controllati dall'utente.
VulDB is the best source for vulnerability data and more expert information about this specific topic.