Symfonyの脆弱性CVE-2026-118515|ファイル漏えいなどと修正版
CVE-2026-118515・CVE-2026-118513・GHSA-pxj9-jh84-vhm5・GHSA-6prc-h956-hxjq・GHSA-hwfg-qwvh-2wfxSymfonyは11月4日、日本時間20時43分に複数の脆弱性を公表しました。外部入力からサーバー内のファイルを扱わせる問題、証明書認証のなりすまし、YAMLによるサービス停止などが含まれます。使っているコンポーネントと入力経路を確かめ、提供元が示す5.4.56・6.4.50・7.4.23・8.1.11へ更新します。[1][2][5]
- ファイルを受け取るAPIは、UploadedFileなどの型を持つオブジェクトへ、リクエストを直接変換していないか確認します。
- 証明書認証は、信頼した認証局の証明書があっても、利用者が証明書のCNを指定できる場合に影響します。
- YAMLを受け付けるAPIは、認証のない1リクエストでPHPの処理を長時間占有される場合があります。
- 修正版では入力の扱いも変わります。更新後にファイル受信、証明書認証、YAML・CSVの受信を試します。
01何が起きるか
02対象になる入力経路
- ファイル受信:
#[MapRequestPayload]などで、外部入力をUploadedFile型のプロパティを持つオブジェクトへ変換する場合。Assert\Fileだけでは防げません。[1] - data URI:
DataUriNormalizerを使い、外部入力をSplFileObject・SplFileInfo・Fileに変換する場合。大文字を含むスキームがローカルパスとして開かれる別件があります。[3] - パスの検査:
Path::isBasePath()やcanonicalize()で利用者の入力を検査してからファイルを開く場合。Symfony 6.4以降のAssetMapperでは、不正な配布パッケージのCSS参照から保存先の外へ書き込まれる経路もあります。[4] - 証明書認証:信頼する認証局が発行した証明書のCNを攻撃者が指定でき、DN全体から利用者名を抽出する場合。認証局がSubjectを生成・検証する構成や、属性別の値を直接渡す構成は、この問題の対象外です。[2]
- YAML:信頼できないYAMLを解析する処理。7.4以降ではYamlコンポーネントがあり、
#[MapRequestPayload]のacceptFormatを制限していないAPIも含みます。6.4ではアプリによるYAML形式の登録が条件です。[5]
03悪用の状況
04対象の版と推奨する版
05確かめて上げる手順
プロジェクトで次を実行し、導入済みコンポーネントと版を記録します。実行環境が別のコンテナなら、その環境でも確認します。
composer show 'symfony/*' composer auditSerializer、SecurityHttp、Filesystem、Yamlと、それらを使うリクエスト処理を調べます。独自のSerializerを組み立てている場合は、
DataUriNormalizerがObjectNormalizerより先に登録されているかも確認します。今回のUploadedFile対策は、この並びを欠くSerializerには効きません。[1]依存関係の制約を確認し、検証環境でSymfonyの対象パッケージを更新します。
composer update 'symfony/*' --with-all-dependencies解決結果が修正版に達したかを確認し、更新した
composer.lockを使って本番へ配置します。コマンドの成功だけで、必要な版へ上がったと判断しません。正規のファイル送信・証明書ログインと、許可している入力形式をテストします。認証のないリクエストからファイル型のプロパティを書き換えられないことも検証環境で確かめます。[1][2][5]



06すぐ上げられないとき
07更新後に変わる動作
08同時に確認するアクセス制御とHTML処理

よくある質問
PHP本体だけ上げれば直りますか?
対象はSymfonyの各コンポーネントです。PHPの版だけで判断せず、Composerで導入したパッケージの版を確かめます。
ファイルアップロードを無効にしていれば対象外ですか?
UploadedFile型などへの変換経路があれば、実際のアップロードを伴わないリクエストも問題になります。フォーム画面の有無だけでは判断できません。[1]
出典・参考資料
- Symfony公式:UploadedFileの生成によるサーバーファイル参照(CVE-2026-118515)2026-11-04 / 対象・修正版、UploadedFileの条件、ファイル読み取り・移動、Normalizerの順序、422への動作変更、深刻度高
- Symfony公式:X509のDN解析によるなりすまし(CVE-2026-118513)2026-11-04 / 対象・修正版、認証局とCNの条件、対象外構成、RFC2253・属性別値の対応、CVSS4.0 7.7
- Symfony公式:DataUriNormalizerによるローカルファイル読み取り2026-11-04 / 対象・修正版、dataスキームの大小文字とファイル型への変換条件、深刻度高
- Symfony公式:Filesystemのパスが基準ディレクトリ外へ出る問題2026-11-04 / 5.4.0以降の対象と修正版、Pathの検査、AssetMapperの配布パッケージ経路、深刻度高
- Symfony公式:YAML解析時間の増大によるサービス停止2026-11-04 / 対象・修正版、未認証リクエストの条件、YAML・CSV形式の動作変更、CVSS4.0 8.7
- Symfony公式:HEADによるaccess_control・ファイアウォールの回避2026-11-04 / GET/HEADの条件、修正後のルール順序
- Symfony公式:IP制約の公開・非公開モードの判定不備2026-11-04 / IPフィルタの対象条件、修正後に拒否されるアドレスと互換性
- Symfony公式:HtmlSanitizerの許可ホスト制限回避2026-11-04 / 相対URLと許可ホストを組み合わせた条件、修正版
あわせて読みたい記事
PHPのWindows版のBrotliの脆弱性、8.5.12-1などへの入れ替えとcURL・Guzzleの確かめ方(CVE-2026-111497)
PHPのWindows版に同梱のBrotliの脆弱性CVE-2026-111497は、米CISAが悪用を確認しています。10月21日の版も対象のままである理由、GuzzleやWordPressで自動展開が有効になる条件、8.5.12-1などへの入れ替えと確かめ方を説明します。
PHPの脆弱性PHP2Shell(CVE-2026-109618)|コード実行の対象バージョンと確認方法・修正版
PHP本体の脆弱性PHP2Shell(CVE-2026-109618・109619)は、米CISAが悪用を確認しています。対象は8.5.12・8.4.27・8.3.36・8.2.35より前です。php -v、ディストリのパッケージ、Dockerのタグでの確かめ方、ログに残る攻撃の痕跡、8.1以前の扱いを説明します。

SASTとSCAの違い・使い分け|自動検査の範囲と異常系・回帰試験
SASTとSCAの違いを、調べる対象(自社のソースコードと取り込んだOSS部品)で説明する。両方で見つけにくい認可の誤りを補う動作試験、除外の記録、redis-pyの事故に学ぶ修正後の回帰試験とSCAの再実行も扱う。