脆弱性対応ウォッチ重大・クリティカル脆弱性のクラウド別対応まとめ
最新更新履歴CriticalHigh回避策のみパッチありAWSGCPAzureLinux
Critical CVSS 9.8
CVE-2026-47767

Symfony の argv 解釈差による APP_ENV / APP_DEBUG 上書き(CVE-2024-50340 の修正不備)

情報取得日: 2026/07/14/最終確認: 2026/08/10・本ページは公開情報の非公式まとめです

CVE IDCVE-2026-47767
製品Symfony / Symfony 5.4.46 以上 5.4.52 未満 / 6.4.40 未満 / 7.4.12 未満 / 8.0.12 未満
CVSS9.8(Critical)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
種別 (CWE)CWE-436(解釈の不一致)
登録/公開日2026/07/14
出典https://nvd.nist.gov/vuln/detail/CVE-2026-47767

概要

PHP のフレームワーク Symfony に、クエリ文字列の解釈のずれを突いて実行環境の設定を上書きされる欠陥がある。 NVD の記述によれば、影響を受けるのは 5.4.46 以上 5.4.52 未満、および 6.4.40 未満・7.4.12 未満・8.0.12 未満である。修正版は 5.4.52 / 6.4.40 / 7.4.12 / 8.0.12 である。 この脆弱性の中身は、過去の CVE-2024-50340 に対する修正が不十分だったことにある。もとの問題は、Web リクエストの経路で `$_SERVER['argv']` を読んでしまい、クエリ文字列から CLI 用のフラグ(`--env` や `--no-debug`)を渡せてしまうというものだった。そのときの修正は「`$_GET` が空でなければ argv を解釈しない」という条件を置くやり方だった。 ところが `parse_str()` と Web SAPI(PHP を Web サーバから動かす層)では、同じクエリ文字列の解釈が一致しない場合がある。この差を利用すると、**`$_GET` は空のまま、`$_SERVER['argv']` には攻撃者が仕込んだ `--env` や `--no-debug` が残る**クエリ文字列を作れる。条件式が「$_GET が空」を安全側の合図として使っていたので、ガードがそのまま素通りする。 用語を補足する。`APP_ENV` は Symfony アプリの実行環境(`prod` / `dev` / `test` など)を決める変数で、`APP_DEBUG` はデバッグモードの有無を決める変数である。本番環境で `APP_ENV=dev` かつ `APP_DEBUG=1` にされると、**例外画面に設定値・SQL・スタックトレース・環境変数が表示され、プロファイラや開発用ルートが有効になる**。認証情報やデータベース接続文字列が読み取られ得るという意味で、これは単なる設定変更ではなく情報漏えいの入口である。加えて dev 環境では本番用のキャッシュやセキュリティ設定が効かなくなる構成もあり、そこから先の影響はアプリの作りによって広がる。 CVSS の評価は分かれている。NVD の Primary(nvd@nist.gov)は CVSS 3.1 で 9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)の Critical、GitHub Security Advisory(security-advisories@github.com)は CVSS 4.0 で 8.3 である。当サイトは掲載基準に従い NVD の Primary である 9.8 を採る。差の主因は、影響の広がりをアプリ依存とみなすかどうかにある。 いずれの評価でも共通しているのは **PR:N・UI:N・AV:N** である。認証も利用者の操作も要らず、ネットワーク越しに URL を1つ投げるだけで成立する。CWE は CWE-436(解釈の不一致)に分類されており、これは「同じ入力を2つの層が別々に解釈することで生じる欠陥」を指す分類である。今回はまさに `parse_str()` と Web SAPI のずれがそれにあたる。 2026-08-09 時点で CISA KEV には収載されていない(KEV カタログ 2026.08.07 版で確認)。

クラウド/OS 別の対応状況

各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。

AWS / GCP / Azure / Linux いずれも対応区分は同じです: パッチあり(アプリ更新) 参照先も共通です(一次情報)。 下の表は環境ごとの補足です。
環境対応状況対応方法・備考
AWS (ECS/EC2) パッチあり(アプリ更新)
EC2 / ECS / EKS / Lambda 上の Symfony アプリを 5.4.52 / 6.4.40 / 7.4.12 / 8.0.12 以上へ更新する
AWS のマネージド修正は無い。ALB や CloudFront の WAF で、クエリ文字列に --env / --no-debug を含むリクエストを一時的に遮断する運用も併用できる。
参照リンク
GCP パッチあり(アプリ更新)
GCE / GKE / Cloud Run 上の Symfony アプリを該当の修正版以上へ更新する
GCP 固有のパッチは無い。Cloud Armor のルールで同様のクエリ文字列を遮断できる。コンテナで動かしている場合は APP_ENV を Dockerfile / マニフェスト側の環境変数で固定する。
参照リンク
Azure パッチあり(アプリ更新)
VM / AKS / App Service 上の Symfony アプリを該当の修正版以上へ更新する
Azure 固有のパッチは無い。App Service ではアプリケーション設定で APP_ENV=prod / APP_DEBUG=0 を明示すると、argv 由来の上書きに対する保険になる。
参照リンク
Linux パッチあり(アプリ更新)
composer で symfony/http-kernel など該当パッケージを 5.4.52 / 6.4.40 / 7.4.12 / 8.0.12 以上へ更新する
ディストリのパッケージではなく composer 管理が通常。あわせて Web 側の php.ini で register_argc_argv = Off を設定する(CLI 用 php.ini とは別ファイルなので、コンソールコマンドには影響しない)。
参照リンク

解決の方向性(パッチ/回避策/代替)

**Symfony を 5.4.52 / 6.4.40 / 7.4.12 / 8.0.12 のいずれか以上へ更新するのが恒久対応である。** 自分が使っている系列に対応する版へ上げればよく、系列をまたぐアップグレードは不要である。`composer update symfony/*` ではなく、まず `composer show symfony/http-kernel` などで稼働中の実バージョンを確認すること。 **「CVE-2024-50340 は対応済みだから安全」という判断が通用しない**点を強調しておきたい。本件はその修正自体の不備であり、5.4 系では **5.4.46 以上**、つまり前回の修正が入ったあとのバージョンが影響範囲である。前回の対応記録があるアプリほど、むしろ該当する可能性が高い。 更新までの緩和策は2つある。1つ目は **`APP_ENV` と `APP_DEBUG` を実行環境側で固定すること**である。`.env` ファイル任せにせず、Web サーバやコンテナの環境変数、あるいは php-fpm のプール設定(`env[APP_ENV] = prod`)で明示的に与えると、argv 由来の値で上書きされても本番設定が保たれる構成にできる。2つ目は **`register_argc_argv` を Web 側の php.ini で `Off` にすること**である。この設定が Off なら `$_SERVER['argv']` がそもそも作られないので、入口が閉じる。CLI 用の php.ini とは別ファイルなので、コマンド実行には影響しない。 **事後の確認は2か所で行う。** 1つ目はアクセスログで、クエリ文字列に `--env`・`--no-debug`・`-e ` を含むリクエストを検索する。2つ目は本番アプリのレスポンスで、デバッグモード時に付く `X-Debug-Token` / `X-Debug-Token-Link` ヘッダや、`/_profiler` `/_wdt` へのアクセス記録が無いかを確認する。これらが本番で観測されているなら、実際に環境が切り替えられた可能性を疑う。

よくある質問(CVE-2026-47767)

CVE-2026-47767(Symfony 5.4.46 以上 5.4.52 未満 / 6.4.40 未満 / 7.4.12 未満 / 8.0.12 未満)の影響は?

Critical(CVSS 9.8)に分類されるSymfony Symfony 5.4.46 以上 5.4.52 未満 / 6.4.40 未満 / 7.4.12 未満 / 8.0.12 未満の脆弱性です。PHP のフレームワーク Symfony に、クエリ文字列の解釈のずれを突いて実行環境の設定を上書きされる欠陥がある。 NVD の記述によれば、影響を受けるのは 5.4.46 以上 5.4.52 未満、および 6.4.40 未満・7.4.12 未満・8.0.12 未満である。修正版は 5.4.52 / 6.4.40 / 7.4.12 / 8.0.12 である。 この脆弱性の中身は、過去の CVE-2024-50340 に対する修正が不十分だったことにある。もとの問題は、Web リクエストの経路で `$_SERVER['argv']` を読んでしまい、クエリ文字列から CLI 用のフラグ(`--env` や `--no-debug`)を渡せてしまうというものだった。そのときの修正は「`$_GET` が空でなければ argv を解釈しない」という条件を置くやり方だった。 ところが `parse_str()` と Web SAPI(PHP を Web サーバから動かす層)では、同じクエリ文字列の解釈が一致しない場合がある。この差を利用すると、**`$_GET` は空のまま、`$_SERVER['argv']` には攻撃者が仕込んだ `--env` や `--no-debug` が残る**クエリ文字列を作れる。条件式が「$_GET が空」を安全側の合図として使っていたので、ガードがそのまま素通りする。 用語を補足する。`APP_ENV` は Symfony アプリの実行環境(`prod` / `dev` / `test` など)を決める変数で、`APP_DEBUG` はデバッグモードの有無を決める変数である。本番環境で `APP_ENV=dev` かつ `APP_DEBUG=1` にされると、**例外画面に設定値・SQL・スタックトレース・環境変数が表示され、プロファイラや開発用ルートが有効になる**。認証情報やデータベース接続文字列が読み取られ得るという意味で、これは単なる設定変更ではなく情報漏えいの入口である。加えて dev 環境では本番用のキャッシュやセキュリティ設定が効かなくなる構成もあり、そこから先の影響はアプリの作りによって広がる。 CVSS の評価は分かれている。NVD の Primary(nvd@nist.gov)は CVSS 3.1 で 9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)の Critical、GitHub Security Advisory(security-advisories@github.com)は CVSS 4.0 で 8.3 である。当サイトは掲載基準に従い NVD の Primary である 9.8 を採る。差の主因は、影響の広がりをアプリ依存とみなすかどうかにある。 いずれの評価でも共通しているのは **PR:N・UI:N・AV:N** である。認証も利用者の操作も要らず、ネットワーク越しに URL を1つ投げるだけで成立する。CWE は CWE-436(解釈の不一致)に分類されており、これは「同じ入力を2つの層が別々に解釈することで生じる欠陥」を指す分類である。今回はまさに `parse_str()` と Web SAPI のずれがそれにあたる。 2026-08-09 時点で CISA KEV には収載されていない(KEV カタログ 2026.08.07 版で確認)。

CVE-2026-47767 の対応方法・回避策は?

**Symfony を 5.4.52 / 6.4.40 / 7.4.12 / 8.0.12 のいずれか以上へ更新するのが恒久対応である。** 自分が使っている系列に対応する版へ上げればよく、系列をまたぐアップグレードは不要である。`composer update symfony/*` ではなく、まず `composer show symfony/http-kernel` などで稼働中の実バージョンを確認すること。 **「CVE-2024-50340 は対応済みだから安全」という判断が通用しない**点を強調しておきたい。本件はその修正自体の不備であり、5.4 系では **5.4.46 以上**、つまり前回の修正が入ったあとのバージョンが影響範囲である。前回の対応記録があるアプリほど、むしろ該当する可能性が高い。 更新までの緩和策は2つある。1つ目は **`APP_ENV` と `APP_DEBUG` を実行環境側で固定すること**である。`.env` ファイル任せにせず、Web サーバやコンテナの環境変数、あるいは php-fpm のプール設定(`env[APP_ENV] = prod`)で明示的に与えると、argv 由来の値で上書きされても本番設定が保たれる構成にできる。2つ目は **`register_argc_argv` を Web 側の php.ini で `Off` にすること**である。この設定が Off なら `$_SERVER['argv']` がそもそも作られないので、入口が閉じる。CLI 用の php.ini とは別ファイルなので、コマンド実行には影響しない。 **事後の確認は2か所で行う。** 1つ目はアクセスログで、クエリ文字列に `--env`・`--no-debug`・`-e ` を含むリクエストを検索する。2つ目は本番アプリのレスポンスで、デバッグモード時に付く `X-Debug-Token` / `X-Debug-Token-Link` ヘッダや、`/_profiler` `/_wdt` へのアクセス記録が無いかを確認する。これらが本番で観測されているなら、実際に環境が切り替えられた可能性を疑う。

自分の環境が CVE-2026-47767 の影響を受けるか確認するには?

Symfony Symfony 5.4.46 以上 5.4.52 未満 / 6.4.40 未満 / 7.4.12 未満 / 8.0.12 未満 を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-47767)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。

参考情報(出典)

本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください(最終確認: 2026/08/10)。

NVD(CVE 基本情報・CVSS スコアの出典)
免責: 本ページは CISA KEV・NVD・各ベンダー公式アドバイザリ等の公開情報をもとにした非公式まとめです。修正バージョンや対応可否は変更される場合があります。実際の対応は必ず 出典元および各ベンダー公式情報・自環境で確認してください。

« 一覧に戻る