つみかさね

CVE-2026-33939

High(7.5)

CVE-2026-33939 — Handlebars.js 未登録デコレータによるサービス拒否

公開日: 2026-03-29データソース: NVD, GitHub Advisory

影響を受けるソフトウェア

製品ベンダー影響バージョン
Handlebars.jshandlebars-langv4.0.0 - v4.7.8
CVEHandlebars.jsnpmDoSデコレータCWE-754

概要

Handlebars.js は JavaScript の テンプレート エンジン として npm エコシステム で 広く 利用 されて いる ライブラリ です。バージョン 4.0.0 から 4.7.8 まで の Handlebars.js に おいて、未登録 の デコレータ を 参照 する テンプレート を 処理 した 際 に TypeError が 発生 し、Node.js プロセス が クラッシュ する サービス拒否(DoS)の 脆弱性 が 発見 されました。

Handlebars.js の デコレータ 機能 は、テンプレート の コンパイル 結果 を 変換 する ため の 高度 な 機能 です。テンプレート 内 で デコレータ 構文({{* decorator}}{{#* inline "name"}} など)を 使用 する と、Handlebars.js の ランタイム は 登録 された デコレータ 関数 を lookupProperty を 通じて 検索 します。

しかし、参照 された デコレータ が 登録 されて いない 場合、lookupPropertyundefined を 返します。Handlebars.js の ランタイム は この 返り値 を 関数 として 呼び出そう と する ため、TypeError: undefined is not a function が 発生 します。この エラー が 適切 に ハンドリング されて いない 場合、Node.js プロセス 全体 が クラッシュ し、サービス拒否 状態 に 陥ります。

この 脆弱性 は CWE-754(例外的 な 条件 に 対する 不適切 な チェック)に 分類 されます。CVSS スコア は 7.5 と 評価 されて おり、High に 分類 される 脆弱性 です。

攻撃 の シナリオ として は、ユーザー が テンプレート の 内容 を 制御 できる 環境 で、未登録 の デコレータ を 含む テンプレート を 送信 する こと で、サーバー プロセス を クラッシュ させる こと が 可能 です。特に、CMS やテンプレート エディタ など、ユーザー が カスタム テンプレート を 作成 して サーバーサイド で レンダリング する アプリケーション で は、この 脆弱性 の 影響 が 大きく なります。

また、Express.js 等 の Web フレームワーク と 組み合わせて 使用 して いる 場合、プロセス の クラッシュ が 全て の リクエスト 処理 に 影響 する ため、単一 の 悪意 ある リクエスト で サービス 全体 が 停止 する 可能性 が あります。PM2 や クラスタ モード を 使用 して いて も、繰り返し の 攻撃 に よって 全 ワーカー が クラッシュ する リスク が あります。

CVSSベクトル

項目
CVSSスコア7.5
深刻度High
CWECWE-754 (例外的な条件に対する不適切なチェック)

影響を受けるソフトウェア

製品ベンダー影響バージョン
Handlebars.jshandlebars-langv4.0.0 から v4.7.8 まで

修正バージョンと回避策

  • 修正バージョン: Handlebars.js v4.7.9 へ アップデート する こと で この 脆弱性 は 修正 されます。npm update handlebars または npm install handlebars@4.7.9 で アップデート を 実施 して ください。
  • 暫定回避策 1: テンプレート の コンパイル および レンダリング 処理 を try/catch ブロック で 囲み、TypeError が 発生 した 場合 で も プロセス が クラッシュ しない よう に エラー ハンドリング を 追加 して ください。
  • 暫定回避策 2: テンプレート の 入力 を バリデーション し、デコレータ 構文({{*{{#*)を 含む テンプレート を 拒否 する フィルタ を 実装 して ください。アプリケーション で デコレータ 機能 を 使用 して いない 場合、この 対策 が 有効 です。
  • 暫定回避策 3: Node.js の process.on('uncaughtException') ハンドラ を 設定 し、予期 しない 例外 に よる プロセス の 即座 の 終了 を 防止 して ください。ただし、この 方法 は 根本 対策 で は なく、アプリケーション の 状態 が 不整合 に なる リスク が あります。
  • 暫定回避策 4: PM2 や systemd 等 の プロセス マネージャ を 使用 し、クラッシュ 時 の 自動 再起動 を 設定 する こと で、サービス の 可用性 を 維持 して ください。

関連リンク


データソース: NVD (NIST) AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。

Xでシェアはてブ
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database, JVN iPedia (IPA/JPCERT/CC)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。