CVE-2026-109413: 
PHP 脆弱性の分析と軽減

概要

CVE-2026-109413 is an unbounded recursion vulnerability in the Symfony YAML component's inline lexer that allows a single unauthenticated request to crash the PHP process or trigger a fatal error. It affects symfony/yaml and symfony/symfony versions <5.4.54, >=6 <6.4.45, >=7 <7.4.18, and >=8 <8.1.6. The vulnerability was published on October 15, 2026, by Symfony maintainer fabpot. It carries a CVSS v4 base score of 8.7 (High) (GitHub Advisory).

技術的な詳細

The root cause is uncontrolled recursion (CWE-674) in Yaml\Parser::lexInlineStructure(), which recursed through lexInlineMapping() and lexInlineSequence() for every { and [ character encountered in an inline YAML collection, without applying the maxNestingLevel bound that governs the rest of the parser. A specially crafted document consisting of deeply nested inline collections (e.g., [[[[...]]]]) exhausts the PHP call stack during lexing, causing a process crash or fatal error depending on PHP version and stack configuration. The attack vector is network-accessible with no authentication, privileges, or user interaction required, and is particularly dangerous when #[MapRequestPayload] is used with the Yaml component installed and the endpoint does not restrict acceptFormat — a single HTTP request with a YAML content type suffices (GitHub Advisory).

影響

Successful exploitation results in a complete availability impact on the vulnerable system — the PHP process crashes or terminates with a fatal error, causing denial of service for the affected application. There is no confidentiality or integrity impact, and no subsequent system impact is expected. Any application that parses untrusted YAML input is affected, including public-facing Symfony endpoints using #[MapRequestPayload] without content-type restrictions (GitHub Advisory).

エクスプロイト可能性

As of the disclosure date (October 15, 2026), no public proof-of-concept exploit code or in-the-wild exploitation has been reported. The CVE status is listed as "Reserved" in Feedly's tracking data. The vulnerability requires no authentication, no privileges, and no user interaction, making it trivially exploitable against any exposed endpoint that parses untrusted YAML. No EPSS score or CISA KEV catalog entry is currently available (GitHub Advisory, Feedly).

エクスプロイテーションのステップ

  1. Reconnaissance: Identify Symfony-based web applications that accept YAML input, particularly endpoints using #[MapRequestPayload] without acceptFormat restrictions, or any other code path that parses user-supplied YAML.
  2. Craft malicious payload: Construct a YAML document consisting of deeply nested inline collections, such as [[[[[[...]]]]]] or {a:{a:{a:{a:...}}}}, with nesting depth sufficient to exhaust the PHP call stack (typically hundreds to thousands of levels depending on PHP configuration).
  3. Send unauthenticated request: Submit an HTTP request to the target endpoint with Content-Type: application/yaml (or equivalent) containing the crafted payload. No authentication or special headers are required.
  4. Trigger crash: The Symfony YAML inline lexer recursively processes each [ or { without bounding nesting depth, exhausting the stack and causing the PHP process to crash or emit a fatal error, resulting in denial of service for the application (GitHub Advisory).

妥協の兆候

  • Network: Unusual HTTP requests with Content-Type: application/yaml or text/yaml to application endpoints, especially those accepting request payloads; repeated requests from the same source IP targeting YAML-consuming endpoints.
  • Logs: PHP fatal error messages referencing stack overflow or maximum nesting level exceeded in application error logs; web server logs showing 500 errors or process termination responses immediately following YAML content-type requests.
  • Process: Unexpected PHP-FPM worker crashes or restarts; sudden drops in available worker processes correlating with inbound YAML requests.

軽減策と回避策

Upgrade to one of the patched versions: symfony/yaml (and symfony/symfony) 5.4.54, 6.4.45, 7.4.18, or 8.1.6. The fix makes the inline lexer enter and leave the same nesting level as the rest of the parser, bounding recursion via maxNestingLevel and raising a ParseException when exceeded. As a workaround where upgrading is not immediately possible, restrict endpoints that parse YAML to authenticated users only, or enforce acceptFormat restrictions on #[MapRequestPayload] to prevent unauthenticated YAML parsing (GitHub Advisory, Symfony Releases).

コミュニティの反応

The vulnerability was reported and fixed by Nicolas Grekas, a core Symfony contributor, with CVE assignment assistance from Bruno Dias of Checkmarx. Symfony published an official blog post and GitHub Security Advisory on October 15, 2026. No significant broader media coverage or notable community controversy has been observed beyond the standard disclosure channels (Symfony Blog, GitHub Advisory).

関連情報


ソース: このレポートは AI を使用して生成されました

関連 PHP 脆弱 性:

CVE 識別子

重大度

スコア

テクノロジー

コンポーネント名

CISA KEV エクスプロイト

修正あり

公開日

CVE-2026-109449HIGH8.7
  • PHP logoPHP
  • composer://symfony/expression-language
いいえはいOct 15, 2026
CVE-2026-109413HIGH8.7
  • PHP logoPHP
  • composer://symfony/symfony
いいえはいOct 15, 2026
CVE-2026-108082HIGH8.7
  • PHP logoPHP
  • composer://symfony/http-foundation
いいえはいOct 15, 2026
CVE-2026-107381MEDIUM6.5
  • PHP logoPHP
  • enshrined/svg-sanitize
いいえはいOct 14, 2026
CVE-2026-56826MEDIUM5.4
  • PHP logoPHP
  • shopper/framework
いいえはいOct 13, 2026

無料の脆弱性評価

クラウドセキュリティポスチャーのベンチマーク

9つのセキュリティドメインにわたるクラウドセキュリティプラクティスを評価して、リスクレベルをベンチマークし、防御のギャップを特定します。

評価を依頼する

パーソナライズされたデモを見る

実際に Wiz を見てみませんか?​

"私が今まで見た中で最高のユーザーエクスペリエンスは、クラウドワークロードを完全に可視化します。"
デビッド・エストリックCISO (最高情報責任者)
"Wiz を使えば、クラウド環境で何が起こっているかを 1 つの画面で確認することができます"
アダム・フレッチャーチーフ・セキュリティ・オフィサー
"Wizが何かを重要視した場合、それは実際に重要であることを私たちは知っています。"
グレッグ・ポニャトフスキ脅威および脆弱性管理責任者