GUARD SAGAS

Handlebarsに不適切なエンコード・エスケープの脆弱性(CVE-2026-106444)

公開日 危険度:中

概要

Handlebarsに不適切なエンコード・エスケープの脆弱性が確認されました。

バージョン 4.0.0 以上 4.7.10 未満に影響があります。

修正版 4.7.10 への更新が推奨されます。

脆弱性の基本情報

脆弱性ID CVE-2026-106444
GHSA-xw65-4hp5-5hc7
脆弱性の種類不適切なエンコード・エスケープ (CWE-116)
危険度中
CVSSスコア 4.7(CVSS v3.x) 評価元:OSV.dev
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
公開日2026年10月8日

影響を受ける製品

製品影響を受けるバージョン修正版出典
Handlebars
JavaScriptライブラリ
4.0.0 以上 4.7.10 未満 4.7.10 OSV.dev

推奨対応

  • Handlebarsを修正版 4.7.10 またはそれ以降の公式最新版へ更新してください。

情報元の原文

OSV.dev(GitHub Advisory Database) GHSA-xw65-4hp5-5hc7

Handlebars: JavaScript Injection via Unsafe Inline Embedding of Precompiled Templates

## Summary `Handlebars.precompile()` generates JavaScript source that is commonly embedded in browser `<script>` elements. Before the fix, static template text containing `</script>` was emitted unchanged. HTML parsers recognize `</script>` even inside a JavaScript string literal, closing the surrounding script element and allowing following attacker-controlled markup to be parsed and executed. This affects applications that precompile attacker-controlled templates and embed the generated source directly in an HTML `<script>` element. It does not affect ordinary server-side rendering or precompiled templates delivered as external JavaScript files. ## Details Static text is serialized by `quotedString()` in `lib/handlebars/compiler/code-gen.js`. The generated JavaScript is valid, but JavaScript quoting alone does not make it safe to embed in HTML. In HTML script data, the sequence `</script>` terminates the element regardless of JavaScript string context. On affected releases, this template: ```handlebars safe</script><script>alert("XSS")</script><script> ``` could produce generated source containing: ```js return 'safe</script><script>alert("XSS")</script><script>'; ``` When included inline in an HTML document, the first `</script>` closes the script containing the precompiled template. The next `<script>` element is then parsed as HTML and executes. ## Proof of Concept ```js const Handlebars = require('handlebars'); const template = 'safe</script><script>alert("XSS")</script><script>'; const output = Handlebars.precompile(template); console.log(output.includes('</script>')); ``` Affected versions print `true`. Embedding `output` directly in an inline `<script>` element allows the injected script tag to be parsed by the browser. ## Workarounds - Do not inline precompiled output from untrusted templates into HTML documents. - Serve generated precompiled templates as external JavaScript files where practical. ## Credits Reported by Curly-Haired-Baboon Aka Laplas
利用条件:CC BY 4.0
出典: GitHub Advisory Database(OSV.dev 経由で取得)。原文のまま掲載(改変なし)

情報元

このページは各情報源から定期取得した情報を自動で掲載しています。日本語の表示は取得済みのデータ(製品・影響バージョン・修正版・CVSS 等)から定型文で作成しており、AIによる生成・翻訳は行っていません。取得できていない情報は表示していません。最新の情報は情報元でご確認ください。

あなたのサイトは大丈夫ですか?

GUARD SAGAS の無料診断で、CMS・サーバーのバージョンや既知の脆弱性への該当状況を確認できます。

無料診断をはじめる

← 脆弱性情報の一覧へ