情報取得日: 2026/07/14/最終確認: 2026/08/10・本ページは公開情報の非公式まとめです
| CVE ID | CVE-2026-46634 |
|---|---|
| 製品 | Twig (Symfony) / Twig 3.9.0 以上 3.26.0 未満 |
| CVSS | 9.8(Critical) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 種別 (CWE) | CWE-693(防御機構の回避) |
| 登録/公開日 | 2026/07/14 |
| 出典 | https://nvd.nist.gov/vuln/detail/CVE-2026-46634 |
PHP のテンプレートエンジン Twig で、サンドボックスの制限が一部の経路で効かない。 NVD の記述によれば、影響を受けるのは 3.9.0 以上 3.26.0 未満で、修正版は 3.26.0 である。原因は `template_from_string()` が内部テンプレートを `__string_template__<ハッシュ>` という合成した名前でコンパイルする点にある。この名前が `SourcePolicyInterface` によるサンドボックス判定の対象範囲から外れることがあり、その結果、サンドボックス下にあるはずのテンプレートが `template_from_string` と `include` を組み合わせて、セキュリティポリシーの適用されない内部テンプレートを描画できてしまう。 前提を補足する。Twig のサンドボックスは、**信頼できない書き手にテンプレートを触らせるための機構**である。呼び出してよい関数・フィルタ・タグ・プロパティを許可リストで縛り、それ以外を実行時に拒否する。CMS のテーマ編集、メール文面のテンプレート、管理画面での通知文の編集など、「利用者にテンプレートを書かせるが、任意のコードは実行させたくない」場面で使われる。 つまり今回の欠陥は、**その前提が成り立たない経路がある**という話である。サンドボックスを使っていないアプリケーションには、この CVE による新しい危険は生じない(もともとテンプレートの書き手を信頼している構成のため)。逆に、サンドボックスを信頼して外部の書き手にテンプレートを開放している構成では、許可リストの外にある機能へ到達され得る。 CVSS は NVD で 9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)と評価されている。ネットワークから、権限も利用者操作も不要で到達でき、機密性・完全性・可用性のすべてに高い影響がある、という内訳である。**自分の構成がサンドボックスに依存しているかどうかで実際の危険度は大きく変わる**ため、スコアだけでなく利用形態を先に確認するのが正しい読み方である。 2026-08-11 時点で CISA KEV には収載されていない。
各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。
| 環境 | 対応状況 | 対応方法・備考 |
|---|---|---|
| AWS (ECS/EC2) | パッチあり(アプリ更新) |
EC2 / ECS / Lambda 上のアプリケーションの Twig を 3.26.0 以上へ更新する
AWS のマネージド修正は無い。コンテナイメージに Composer の依存を焼き込んでいる場合はイメージの再ビルドが必要。Lambda のレイヤに vendor を入れている構成ではレイヤの更新も要る。
参照リンク
|
| GCP | パッチあり(アプリ更新) |
GCE / GKE / Cloud Run 上のアプリケーションの Twig を 3.26.0 以上へ更新する
GCP 固有のパッチは無い。Cloud Run はイメージの再ビルドと再デプロイで反映する。
参照リンク
|
| Azure | パッチあり(アプリ更新) |
App Service / AKS 上のアプリケーションの Twig を 3.26.0 以上へ更新する
Azure 固有のパッチは無い。App Service の PHP ランタイム更新では解決しない(アプリケーションの vendor 配下の問題のため)。
参照リンク
|
| Linux | パッチあり(アプリ更新) |
composer update twig/twig で 3.26.0 以上へ更新する。上位パッケージ経由で入っている場合は composer why twig/twig で依存元を特定してから上げる
ディストリのパッケージではなく Composer 管理が通常。更新までの緩和は、サンドボックスの許可関数から template_from_string を外すこと。
参照リンク
|
**Twig を 3.26.0 以上へ更新するのが恒久対応である。** Composer 管理なら `composer update twig/twig` で上げられる。Symfony や Drupal のように Twig を内部で使うフレームワーク・CMS を経由して入っている場合は、それぞれの上位パッケージ側の更新が必要になることがあるので、`composer why twig/twig` で依存元を確認してから上げる。 **更新前に、まず自分の構成が影響を受けるかを切り分ける。** 判断は次の2点で付く。①アプリケーションで Twig のサンドボックス(`SandboxExtension` / `SourcePolicyInterface`)を有効にしているか。②信頼できない書き手のテンプレートを実行しているか。この両方が該当する構成が対象である。片方でも該当しなければ、この CVE による新しい露出は無い(ただし更新は行うこと)。 **すぐに更新できない場合の緩和は、`template_from_string` を許可リストから外すことである。** サンドボックスの許可関数からこの関数を落とせば、今回の経路の入口が閉じる。テンプレート側でこの関数を実際に使っていないかを、リポジトリ全文検索(`grep -rn "template_from_string" templates/`)で先に確認する。合わせて `include` の使い方も見ておく。 **事後の確認は、テンプレートの変更履歴と実行ログで行う。** 利用者がテンプレートを保存できる機構がある場合、その保存履歴に `template_from_string` を含む投稿が無いかを検索する。PHP のエラーログに、サンドボックス違反の例外(`Twig\Sandbox\SecurityError`)が普段と違う頻度で出ていないかも見る。**サンドボックスは違反時に例外を投げる設計なので、迂回に成功した攻撃はログに出ない**点に注意する。出ていないことは安全の証拠にならない。
Critical(CVSS 9.8)に分類されるTwig (Symfony) Twig 3.9.0 以上 3.26.0 未満の脆弱性です。PHP のテンプレートエンジン Twig で、サンドボックスの制限が一部の経路で効かない。 NVD の記述によれば、影響を受けるのは 3.9.0 以上 3.26.0 未満で、修正版は 3.26.0 である。原因は `template_from_string()` が内部テンプレートを `__string_template__<ハッシュ>` という合成した名前でコンパイルする点にある。この名前が `SourcePolicyInterface` によるサンドボックス判定の対象範囲から外れることがあり、その結果、サンドボックス下にあるはずのテンプレートが `template_from_string` と `include` を組み合わせて、セキュリティポリシーの適用されない内部テンプレートを描画できてしまう。 前提を補足する。Twig のサンドボックスは、**信頼できない書き手にテンプレートを触らせるための機構**である。呼び出してよい関数・フィルタ・タグ・プロパティを許可リストで縛り、それ以外を実行時に拒否する。CMS のテーマ編集、メール文面のテンプレート、管理画面での通知文の編集など、「利用者にテンプレートを書かせるが、任意のコードは実行させたくない」場面で使われる。 つまり今回の欠陥は、**その前提が成り立たない経路がある**という話である。サンドボックスを使っていないアプリケーションには、この CVE による新しい危険は生じない(もともとテンプレートの書き手を信頼している構成のため)。逆に、サンドボックスを信頼して外部の書き手にテンプレートを開放している構成では、許可リストの外にある機能へ到達され得る。 CVSS は NVD で 9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)と評価されている。ネットワークから、権限も利用者操作も不要で到達でき、機密性・完全性・可用性のすべてに高い影響がある、という内訳である。**自分の構成がサンドボックスに依存しているかどうかで実際の危険度は大きく変わる**ため、スコアだけでなく利用形態を先に確認するのが正しい読み方である。 2026-08-11 時点で CISA KEV には収載されていない。
**Twig を 3.26.0 以上へ更新するのが恒久対応である。** Composer 管理なら `composer update twig/twig` で上げられる。Symfony や Drupal のように Twig を内部で使うフレームワーク・CMS を経由して入っている場合は、それぞれの上位パッケージ側の更新が必要になることがあるので、`composer why twig/twig` で依存元を確認してから上げる。 **更新前に、まず自分の構成が影響を受けるかを切り分ける。** 判断は次の2点で付く。①アプリケーションで Twig のサンドボックス(`SandboxExtension` / `SourcePolicyInterface`)を有効にしているか。②信頼できない書き手のテンプレートを実行しているか。この両方が該当する構成が対象である。片方でも該当しなければ、この CVE による新しい露出は無い(ただし更新は行うこと)。 **すぐに更新できない場合の緩和は、`template_from_string` を許可リストから外すことである。** サンドボックスの許可関数からこの関数を落とせば、今回の経路の入口が閉じる。テンプレート側でこの関数を実際に使っていないかを、リポジトリ全文検索(`grep -rn "template_from_string" templates/`)で先に確認する。合わせて `include` の使い方も見ておく。 **事後の確認は、テンプレートの変更履歴と実行ログで行う。** 利用者がテンプレートを保存できる機構がある場合、その保存履歴に `template_from_string` を含む投稿が無いかを検索する。PHP のエラーログに、サンドボックス違反の例外(`Twig\Sandbox\SecurityError`)が普段と違う頻度で出ていないかも見る。**サンドボックスは違反時に例外を投げる設計なので、迂回に成功した攻撃はログに出ない**点に注意する。出ていないことは安全の証拠にならない。
Twig (Symfony) Twig 3.9.0 以上 3.26.0 未満 を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-46634)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。
本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください(最終確認: 2026/08/10)。