CVE-2026-123792 in Symfony
要約
〜によって VulDB • 2026年11月06日
SymfonyのYamlコンポーネントであるInlineおよびParserは、一部のYAMLドキュメントを非効率的に解析するため、小さく作られた(crafted)ドキュメントでも処理に不釣り合いな時間を要し、PHPプロセスが数秒から数分間ビジー状態になる可能性があります。これにより、Symfony 5.4.56より前のバージョン、6.x系で6.4.50より前、7.x系で7.4.23より前、および8.x系で8.1.11より前のバージョンにおいて、サービス拒否(DoS)を引き起こす可能性があります。
パーサーは複数の箇所で既に完了した作業を繰り返します。フローシーケンス内に埋め込まれたマッピングは、それにスカラーが追加されるたびに再解析され、その中にネストされたコレクションも同様に再解析されます。そのため、解析時間はネストレベルの深さとともに指数関数的に増加します。また、マッピングキーやタグに一致するパターンは、スペースの連続部分に対して文字数ごとに1回ずつスキャンを行い、フローコレクション内の各スカラーはそのコレクションの残りのコピーと比較されるため、解析時間は入力サイズとともに二次関数的に増大します。ネストされたブロックも各ネストレベルでコピーされ、これによりメモリと時間の両方が消費されます。空のシーケンスアイテムの後に空白行が続く場合や、0という名前のアンカーがある場合など、他のいくつかの構成要素でも同様の重複作業がトリガーされます。
デフォルトフラグを使用する場合、信頼できないYAMLを解析するすべてのコードがこの影響を受けます。Symfony 7.4以降では、Yamlコンポーネントがインストールされており、エンドポイントでacceptFormatによる制限が行われていない場合、#[MapRequestPayload]も対象に含まれます。認証されていないリクエスト1つでYAMLコンテンツタイプを送信すると、PHPワーカーはmax_execution_timeに至るまでビジー状態になります。JSONドキュメントは有効なYAMLであるため、フローコレクションのケースでは、YAMLコンテンツタイプと共に送信されるJSONペイロードだけで十分です。Symfony 6.4では、#[MapRequestPayload]はアプリケーションがyamlリクエストフォーマットを登録した場合にのみYAMLを受け入れます。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.