CVE-2026-33940 in Handlebars
Zusammenfassung
von VulDB • 25.05.2026
Handlebars bietet die notwendige Leistungsfähigkeit, um Benutzern den Aufbau semantischer Vorlagen zu ermöglichen. In den Versionen 4.0.0 bis 4.7.8 kann ein in den Vorlagenkontext eingefügtes, speziell konstruiertes Objekt alle bedingten Schutzmechanismen in `resolvePartial()` umgehen und dazu führen, dass `invokePartial()` `undefined` zurückgibt. Die Handlebars-Laufzeitumgebung behandelt die nicht aufgelöste Partial-Vorlage anschließend als eine Quelle, die kompiliert werden muss, und übergibt das speziell konstruierte Objekt an `env.compile()`. Da das Objekt ein gültiges Handlebars-AST (Abstract Syntax Tree) mit injiziertem Code enthält, führt der generierte JavaScript-Code beliebige Befehle auf dem Server aus. Für den Angriff muss der Angreifer einen Wert kontrollieren, der von einer dynamischen Partial-Suche zurückgegeben werden kann. Version 4.7.9 behebt das Problem. Es sind einige Workarounds verfügbar. Erstens: Verwenden Sie die Runtime-Only-Build-Version (`require('handlebars/runtime')`). Ohne `compile()` ist der Fallback-Kompilierungspfad in `invokePartial` nicht erreichbar. Zweitens: Bereinigen Sie die Kontextdaten vor dem Rendern: Stellen Sie sicher, dass kein Wert im Kontext ein Nicht-Primitive-Objekt ist, das an eine dynamische Partial-Suche übergeben werden könnte. Drittens: Vermeiden Sie dynamische Partial-Suchen (`{{> (lookup ...)}}`), wenn die Kontextdaten vom Benutzer gesteuert werden.
If you want to get best quality of vulnerability data, you may have to visit VulDB.