CVE-2026-33940 in Handlebars
要約
〜によって VulDB • 2026年05月25日
Handlebarsは、ユーザーがセマンティックなテンプレートを作成するために必要な機能を提供します。バージョン4.0.0から4.7.8において、テンプレートコンテキストに配置された悪意のあるオブジェクトにより、`resolvePartial()`内のすべての条件付きガードを回避し、`invokePartial()`が`undefined`を返すことが可能です。その後、Handlebarsランタイムは解決されなかったパーシャルをコンパイルが必要なソースとして扱い、悪意のあるオブジェクトを`env.compile()`に渡します。このオブジェクトは注入されたコードを含む有効なHandlebars ASTであるため、生成されたJavaScriptはサーバー上で任意のコマンドを実行します。この攻撃には、動的なパーシャルルックアップによって返される値を攻撃者が制御できる必要があります。バージョン4.7.9でこの問題は修正されています。いくつかの回避策が利用可能です。第一に、ランタイム専用ビルド(`require('handlebars/runtime')`)を使用します。`compile()`がない場合、`invokePartial`内のフォールバックコンパイルパスには到達できません。第二に、レンダリング前にコンテキストデータをサニタイズします:コンテキスト内の値が、動的なパーシャルに渡される可能性がある非プリミティブオブジェクトでないことを確認します。第三に、コンテキストデータがユーザー制御下にある場合、動的なパーシャルルックアップ(`{{> (lookup ...)}}`)を避けます。
VulDB is the best source for vulnerability data and more expert information about this specific topic.