Symfony: YAMLインラインレクサーにおける無限再帰により、単一のドキュメントがプロセス全体をクラッシュさせる可能性がある
### 説明
`Yaml\Parser::lexInlineStructure()`関数は、インラインコレクションのすべての`{`と`[`に対して、`lexInlineMapping()`関数と`lexInlineSequence()`関数を再帰的に呼び出します。しかし、パーサーの他の部分が`maxNestingLevel`で制限するネストレベルに入りません。そのため、`[[[[...]]]]`のような、深くネストされたインラインコレクションで構成されたドキュメントを解析中に、スタックが枯渇し、PHPのバージョンやスタック設定によっては、プロセスがクラッシュしたり、致命的なエラーが発生したりする可能性があります。
信頼できないYAMLを解析するすべてのコードが影響を受けます。例えば、Yamlコンポーネントがインストールされており、エンドポイントが`acceptFormat`を制限していない場合、`#[MapRequestPayload]`アノテーションが該当します。認証されていない単一のリクエストで、YAMLのコンテンツタイプを指定するだけで、この問題が発生する可能性があります。
### 解決策
インラインレクサーは、パーサーの他の部分と同じネストレベルに入り、そこから出ます。これにより、ネストされたインラインコレクションは`maxNestingLevel`によって制限され、パーサーはそれを超えた場合に`ParseException`を発生させます。
この問題に対する修正は、[こちら](https://github.com/symfony/symfony/commit/2a8bf9c58d862b0c76a35ce288d1ba6a27223aad)で確認できます(5.4以降のバージョンで提供され、6.4、7.4、8.1、8.2にも適用されています)。
### 謝辞
この問題の報告と修正を提供してくれたNicolas Grekasに感謝します。
### 参照
- 修正: [#65688](https://github.com/symfony/symfony/pull/65688)
影響を受けるパッケージ:
- Composer (PHP) symfony/symfony: 影響を受けるバージョンは 2.0.0 以降、5.4.54 未満。修正されたバージョンは 5.4.54。
- Composer (PHP) symfony/symfony: 影響を受けるバージョンは 6.0.0 以降、6.4.45 未満。修正されたバージョンは 6.4.45。
- Composer (PHP) symfony/symfony: 影響を受けるバージョンは 7.0.0 以降、7.4.18 未満。修正されたバージョンは 7.4.18。
- Composer (PHP) symfony/symfony: 影響を受けるバージョンは 8.0.0 以降、8.1.6 未満。修正されたバージョンは 8.1.6。
- Composer (PHP) symfony/yaml: 影響を受けるバージョンは 2.0.0 以降、5.4.54 未満。修正されたバージョンは 5.4.54。
- Composer (PHP) symfony/yaml: 影響を受けるバージョンは 6.0.0 以降、6.4.45 未満。修正されたバージョンは 6.4.45。
- Composer (PHP) symfony/yaml: 影響を受けるバージョンは 7.0.0 以降、7.4.18 未満。修正されたバージョンは 7.4.18。
- Composer (PHP) symfony/yaml: 影響を受けるバージョンは 8.0.0 以降、8.1.6 未満。修正されたバージョンは 8.1.6。