GHSA-h5x3-xfc9-m39h / CVE-2026-48784
この脆弱性で確認すること
- 対象製品
- symfony/routing / symfony/symfony
- WATRIXで確認できる範囲
- 利用製品・バージョン・設定を確認し、影響調査や対策の進め方をご相談いただけます。掲載だけで自動診断や復旧の対応を保証するものではありません。
- 情報の作成方法
- 収集した原典情報
情報整理:WATRIX合同会社。影響の確定や侵害の有無は、実際の版・設定・ログ等を確認して判断します。
- CVSS
- 6.9
- 公開元の公表日時
- 2026/06/16 2:33
- 公開元の更新日時
- 2026/06/16 2:33
- 当サイトの収集処理
- 2026/11/07 0:00
原典の説明
公開元の記載です。日本語での確認手順・対処の解説が付いていない項目も含まれます。
Symfony: UrlGenerator Dot-Segment Encoding Skips Every Other Chained `../` or `./` → Generated URL Collapses Off-Route Under RFC 3986 Normalization
### Description `Symfony\Component\Routing\Generator\UrlGenerator::doGenerate()` percent-encodes `.` and `..` path segments so that the generated URL still resolves to the originating route after RFC 3986 §5.2.4 dot-segment removal (which strict RFC-3986 consumers — routers, reverse proxies, HTTP clients — perform *before* percent-decoding). The encoding was implemented as `strtr($url, ['/../' => '/%2E%2E/', '/./' => '/%2E/'])` plus a trailing-segment fixup. `strtr` advances past the trailing `/` of each match, so the next dot-segment in a chained sequence was left unescaped: | Input | Output (before fix) | Expected | | -------------------- | ---------------------------------------- | ----------------------------------- | | `/../../../` | `/%2E%2E/../%2E%2E/` | `/%2E%2E/%2E%2E/%2E%2E/` | | `/foo/../../../bar` | `/foo/%2E%2E/../%2E%2E/bar` | `/foo/%2E%2E/%2E%2E/%2E%2E/bar` | When a route exposes a parameter constrained by a permissive requirement (`.+`, `.*`, or similar) that accepts dots and slashes, attacker-controlled chained `..` or `.` segments produce a generated URL that, under strict RFC 3986 normalization, collapses to a different path than the originating route. The Twig `path()` / `url()` helpers and any server-side use of `UrlGenerator` are affected. Same class of route round-trip integrity issue as CVE-2026-45065. Note: WHATWG-conformant browsers treat `%2E`/`%2E%2E` as dot-segments during URL parsing, so the encoding never protected browser-side traversal. The defense exists for RFC-3986-conformant consumers; restoring it for chained segments closes the gap there. ### Resolution `UrlGenerator` now matches every `/.` or `/..` dot-segment in a single left-to-right `preg_replace_callback` pass using a lookahead that does not consume the trailing `/`, so adjacent dot-segments are encoded correctly. The patches for this issue are available [here](https://github.com/symfony/symfony/commit/4b63c3a3f7af04ecd79c89a594b0b02a01990b1d) for branch 5.4 (and forward-ported to 6.4, 7.4, 8.0 and 8.1). ### Credits Symfony would like to thank Alex Pott for reporting the issue and Nicolas Grekas for providing the fix.
公開元の対処情報
個別の対処手順は未記録です。開発元の最新の案内と、対象の製品・系列に合う修正版を確認してください。
出典・著作権・ライセンスを確認する
- 出典
GitHub Advisory Database
- 利用許諾
CC-BY-4.0
- 利用条件
当サイトでの保存履歴
当サイトが取得した原本の履歴です。公開元での過去の改訂日時とは異なります。
初回保存のみです。訂正前の版はまだありません。
現在の保存内容2026/10/31 17:00
掲載中修正版あり
このページは公表情報を確認するためのデータです。製品を使っているだけで被害や脆弱性への該当が確定するものではありません。現在のバージョン、設定条件、開発元の更新情報を確認してください。

