脆弱性・CVE速報深刻度: 高

Python 用 Handlebars テンプレートエンジン pybars3 にコード実行の欠陥(CVE-2026-119716、CVSS v3.1 8.1): 0.9.7 以下が対象、修正版は確認できず

目次(6)

CVE-2026-119716

NVD は 2026-10-30 に、Python 用の Handlebars テンプレートエンジン pybars3 の 0.9.7 以下に、コードインジェクションの脆弱性(CVE-2026-119716)を登録しました。pybars/_compiler.py が、角括弧で囲んだパスの区切り(bracketed path segments)を無害化せずに Python のコードへ組み立てており、テンプレートを書ける者が、ヘルパーやブロックの引数に細工した文字列を入れると、文字列リテラルを抜けて、アプリケーションのプロセス内で Python コードを実行できる、という内容です。登録元(CNA)は VulnCheck で、CVSS は v3.1 が 8.1(HIGH)、v4.0 が 9.2(CRITICAL)です。攻撃の複雑さは「高」とされています。

何が起きるか

  • 対象は pybars3 の 0.9.7 以下です(NVD の影響範囲。パッケージは PyPI の pybars3)。
  • 原因は、テンプレートのコンパイル時に、角括弧のパスを Python のソースへ埋め込む際の無害化が足りないことです(CWE-94、コードの不適切な制御)。
  • 攻撃者がテンプレートの内容を指定できるアプリケーション、たとえば利用者が自由にテンプレートを登録・編集できる機能や、外部から受け取ったテンプレートを描画する機能では、サーバー側で任意の Python コードを実行される可能性があります。
  • 一方、テンプレートをアプリケーション開発者だけが書き、利用者の入力はデータとしてしか渡さない構成では、この経路は成立しません(推定)。CVSS の AC:H(複雑さ高)も、こうした前提条件を反映していると考えられます。
  • NVD の登録には「割り当て時点でサポート終了(unsupported-when-assigned)」のタグが付いています。

修正の状況

  • 修正版は確認できていません。PyPI 上の最新版は 0.9.7(2019-11-05 公開)で、それ以降のリリースはありません(2026-11-02 取得)。
  • 開発元のリポジトリ(GitHub: wbond/pybars3)に、修正のコミットやリリースがあるかは本稿では確認できていません。NVD の参照先には、脆弱なコードの箇所(0.9.7 の _compiler.py)、リポジトリ、VulnCheck の勧告があります。
  • サポート終了のタグから、今後も修正版が出ない可能性があります(推定)。

数値と出典(2026-11-02 時点)

CVE対象必要な権限CVSS v3.1CVSS v4.0CWEEPSS
CVE-2026-119716pybars3 0.9.7 以下不要(テンプレートを指定できることが前提)8.19.2CWE-940.37%(2026-11-01 付)
  • NVD の状態は Deferred(保留)で、NVD 自身の評価はありません。CVSS は VulnCheck(CNA)の値です。v3.1 のベクターは AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H(8.1)、v4.0 のベクターは AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H です。
  • EPSS(FIRST)は 0.37% で、パーセンタイルは 0.31(脆弱性全体の下位 31% の位置、2026-11-01 付)です。
  • KEV(CISA の悪用確認済みカタログ)には掲載がありません(2026-11-02 取得)。
  • 悪用の有無は確認できていません。

severity を high とした理由

任意の Python コードを実行でき、機密性・完全性・可用性のすべてに影響しますが、成立には攻撃者がテンプレートの内容を指定できることが前提で、複雑さは「高」とされています。EPSS は 0.37% と低く、KEV にも載っておらず、実際の悪用も確認していません。一方、修正版が確認できず、サポートも終了しているため、該当する構成では自力での回避が必要です。以上から、CVSS v3.1(8.1)に沿って high としています。

対応として考えられること

  1. 自社のアプリケーションやビルド環境が pybars3 を使っているかを確認します。依存関係の一覧(requirements.txt、lock ファイル、pip list など)で、pybars3 の版が 0.9.7 以下かを見ます。
  2. 使っている場合、テンプレートの内容を利用者や外部から受け取っていないかを確認します。開発者が管理するテンプレートだけを使い、利用者の入力をデータとしてのみ渡す構成であれば、この経路は成立しません(推定)。
  3. 利用者がテンプレートを指定できる機能がある場合は、その機能を止めるか、信頼できる利用者だけに限ります(推定)。
  4. 長期的には、保守されているテンプレートエンジンへの置き換えを検討します。置き換えが難しい間は、描画するプロセスの権限を最小限にし、外部へのネットワークと機密情報のあるファイルから切り離します(推定)。
  5. 開発元のリポジトリと PyPI で、新しい版や修正が出ていないかを定期的に確認します。

未確認の点

  • 実際の攻撃での悪用は確認していません。
  • 修正版・回避策の有無、開発元の回答は確認できていません。
  • 攻撃の具体的な手順と、どの程度の前提条件で成立するかは確認していません。
  • NVD 自身の評価は未実施(Deferred)です。CVSS は CNA の値です。

この記事について

出典

この記事を共有